onGpsStatusChanged一旦你调用一个实例,GpsStatus.Listener就会停止调用。我最初有这个问题,我解决了。我正在尝试在基于 gps 的位置跟踪和基于网络的位置跟踪之间切换。我已经研究过this和this。他们谈论的大多数地方都同时向两个提供商请求位置更新。恐怕这种方法会大量消耗电池电量。removeUpdatesLocationManager
因此我做了如下的事情。我有两个LocationListeners: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停止被调用。我尝试了几件事,例如在尝试不同的 gps 状态侦听器addGpsStatusListener 后添加removeUpdates等。还没有成功。难道我做错了什么?