Прослушиватель состояния GPS перестает работать, как только вы вызываете отмену регистрации прослушивателя местоположения.

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 и т. Д. Пока безуспешно. Я делаю что-то неправильно?


person ranjjose    schedule 30.08.2013    source источник


Ответы (1)


Вы должны добавить строку ниже перед вызовом requestLocationUpdates в обоих местах:

locMgr.addGpsStatusListener(ntListener);

locMgr.addGpsStatusListener(gpsListener);
person Anjana    schedule 27.05.2016