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