requestLocationUpdates не обновляется с интервалом в Android - PullRequest
5 голосов
/ 22 октября 2010

У меня проблема в том, что мой сервис, в котором реализован LocationListener, получает GPS-обновление каждые 500 мс.Независимо от того, какое minTime я поместил в функцию requestLocationUpdates.

Часть моего кода:

public class LocationService extends Service implements LocationListener {

    LocationManager locMan;

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {

        locMan = (LocationManager)getSystemService(Context.LOCATION_SERVICE); 
        locMan.isProviderEnabled(android.location.LocationManager.GPS_PROVIDER;
        locMan.requestLocationUpdates( LocationManager.GPS_PROVIDER, 60000, 1, this); 

    }

    public void onLocationChanged(Location location) {
        Log.d( "Loc", "Location has been changed" );
    }
}

Из кнопки в моей основной деятельности я буду вызывать startService (), после этого она должна запуститьсяв фоновом режиме, но дает постоянные обновления.

1 Ответ

1 голос
/ 09 августа 2011

Я вижу несколько вещей не так с вашей ситуацией:

Точность GPS в лучшем случае составляет около 3 метров, и это в оптимальных условиях.Поэтому не имеет смысла запрашивать обновление, если позиция меняется на 1 метр.Шум GPS может легко указывать движение, когда устройство фактически неподвижно.Сделайте minDistance по крайней мере 10. моей рекомендацией.

Я не понимаю, почему вы вызываете isProviderEnabled (), поскольку вы ничего не делаете с возвращаемым значением.

Вы говоритечто после startService () все должно работать в фоновом режиме, но это не так.Служба не работает в фоновом режиме, если вы не создадите для нее какой-то фоновый поток.В этом ответе слишком много информации, чтобы объяснить, как работают службы.Зайдите в Интернет и немного почитайте, или получите хорошую книгу по разработке под Android.

...