onGpsStatusChanged
из GpsStatus.Listener
перестанет вызываться, как только вы вызовете removeUpdates
на экземпляре LocationManager
. Изначально у меня была эта проблема, которую я исправил. Я пытаюсь переключаться между отслеживанием местоположения на основе GPS и отслеживанием местоположения на основе сети. Я уже изучил это и это. В большинстве мест они говорят о запросе обновлений местоположения от обоих провайдеров одновременно. Я боюсь, что этот метод приведет к большой разрядке батареи.
Поэтому я сделал следующее. У меня было две LocationListener
: gpsListener
и ntListener
:
Listener mGPSListener = new GpsStatus.Listener() {
@Override
public void onGpsStatusChanged(final int event) {
switch (event) {
case GpsStatus.GPS_EVENT_STARTED:
locMgr.removeUpdates(ntListener);
locMgr.requestLocationUpdates(LocationManager.GPS_PROVIDER, 120000, 50, gpsListener);
break;
case GpsStatus.GPS_EVENT_STOPPED:
locMgr.removeUpdates(gpsListener);
locMgr.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 120000, 50, ntListener);
break;
}
}
};
Теперь, когда locMgr.removeUpdates
попадает, onGpsStatusChanged
перестает вызываться. Я пробовал несколько вещей, таких как добавление addGpsStatusListener
после вызова removeUpdates
, пробуя разные прослушиватели статуса GPS и т. Д. Пока безуспешно. Я делаю что-то неправильно?