3

onGpsStatusChanged一旦你调用一个实例,GpsStatus.Listener就会停止调用。我最初有这个问题,我解决了。我正在尝试在基于 gps 的位置跟踪和基于网络的位置跟踪之间切换。我已经研究过thisthis。他们谈论的大多数地方都同时向两个提供商请求位置更新。恐怕这种方法会大量消耗电池电量removeUpdatesLocationManager

因此我做了如下的事情。我有两个LocationListeners:gpsListenerntListener:

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停止被调用。我尝试了几件事,例如在尝试不同的 gps 状态侦听器addGpsStatusListener 后添加removeUpdates等。还没有成功。难道我做错了什么?

4

1 回答 1

0

您必须在两个地方调用 requestLocationUpdates 之前添加以下行:

locMgr.addGpsStatusListener(ntListener);

locMgr.addGpsStatusListener(gpsListener);
于 2016-05-27T12:34:12.587 回答