2016-03-30 8 views
0

Kullanıcının zil sesini konumlarına göre susturan bir uygulama yapıyorum. Arka planda çalışan bir Hizmetim var ve kullanıcının konumunu birkaç saniyede almak için ona ihtiyacım var. LocationListener kullanıyorum, bu yüzden hizmetimin onStart yönteminin içinde LocationChanged'i kullanmayı denedim, ancak izin verilmedi. Bu yüzden, kullanıcının konumunu her 5 saniyede bir istemek için bir İşleyici kullansaydım, eğer pillerini boşalırsa. Bunu yapıyorum çünkü etrafta dolaşarak uygulamayı test edemiyorum, bu yüzdenLocationChanged'in çağrıldığından emin değilim.Birkaç saniyede bir yer istemek için İşleyici kullandığımda telefonun pilini boşaltacak mı?

public class myService extends Service implements LocationListener { 
Double lat; 
Double lng; 

@Override 
public IBinder onBind(Intent arg0) { 
    return null; 
} 

@Override 
public int onStartCommand(Intent intent, int flags, int startId) { 
    // Let it continue running until it is stopped. 
    Toast.makeText(this, "Service Started", Toast.LENGTH_LONG).show(); 





    return START_STICKY; 

} 

@Override 
public void onDestroy() { 
    super.onDestroy(); 
    Toast.makeText(this, "Service Destroyed", Toast.LENGTH_LONG).show(); 

} 



@Override 
public void onLocationChanged(Location location) { 

    if (MainActivity.location != null) { 


     lat = MainActivity.location.getLatitude(); 

     lng = MainActivity.location.getLongitude(); 


     if (MainActivity.placeArrayList.size() != 0) { 
      for (int i = 0; i < MainActivity.placeArrayList.size(); i++) { 


       Log.e("hello", String.valueOf(Float.parseFloat(MainActivity.latitudeArrayList.get(i)))); 

       MainActivity.destination.setLatitude(Double.parseDouble(MainActivity.latitudeArrayList.get(i))); 
       MainActivity.destination.setLongitude(Double.parseDouble(MainActivity.longitudeArrayList.get(i))); 
       Log.e("distancemeters", String.valueOf(MainActivity.location.distanceTo(MainActivity.destination))); 

       if (MainActivity.location.distanceTo(MainActivity.destination)<100) { 




        AudioManager audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE); 

        audioManager.setStreamVolume(AudioManager.STREAM_RING, AudioManager.RINGER_MODE_SILENT, AudioManager.FLAG_SHOW_UI); 


       } else { 



       } 

      } 


     } 
    } 

} 

@Override 
public void onStatusChanged(String provider, int status, Bundle extras) { 

} 

@Override 
public void onProviderEnabled(String provider) { 

} 

@Override 
public void onProviderDisabled(String provider) { 

} 
} 
+0

Pil_Saving modunu kullanmıyorsanız, konumunuzu birkaç saniyede bir değiştirmeniz pilinizi kesinlikle tüketecektir. Ayrıca, telefon hareket etmiyorsa, bunu neden birkaç saniyede aramanız gerekiyor? – Dus

+0

@HadasM, sürekli olarak konumun nasıl alınacağını bilmiyorum çünkü nasıl arayacağımı bulamıyorum. – felix

cevap

-1

Bu, kullanıcı konumunuzu nasıl almanız gerektiği değildir. this'u deneyin. Eğer test etmek isterseniz, Android Emulator + Android Device Monitor uygulamasını kullanın. Orada kullanıcı konumunu ayarlayabilir ve değiştirebilirsiniz.

İlgili konular