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) {
}
}
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
@HadasM, sürekli olarak konumun nasıl alınacağını bilmiyorum çünkü nasıl arayacağımı bulamıyorum. – felix