一旦调用取消注册位置监听器,Gps状态监听器就会停止运行

时间:2013-08-30 12:38:32

标签: android gps android-location

onGpsStatusChanged个实例上调用GpsStatus.Listener后,removeUpdates的{​​{1}}停止调用。我最初遇到了this问题,我已经修好了。我正在尝试在基于gps的位置跟踪和基于网络的位置跟踪之间切换。我已经调查了thisthis。他们谈论的大多数地方同时要求两个提供商更新位置。我担心这种方法会耗尽电池

因此我做了如下事情。我有两个LocationManagerLocationListenergpsListener

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等等。还没有成功。难道我做错了什么?

1 个答案:

答案 0 :(得分:0)

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

locMgr.addGpsStatusListener(ntListener);

locMgr.addGpsStatusListener(gpsListener);