2011-01-26 64 views
0

只要设备启动,我就有一个在后台运行的位置服务。我通过调用LocationManager requestLocationUpdate方法请求网络和gps提供程序更新,但是,当通过启用或禁用位置服务更改了“我的位置”设置页面时,onProviderEnabled或ProviderDisabled从不会被调用。所以我想知道每次用户更改位置设置后,我的后台服务如何得到通知?我可以在缓存广播消息的接收器模式下执行此操作吗?android:当用户启用或禁用“我的位置”设置位置服务时如何发现问题

+1

“只要设备启动,我就有一个位置服务在后台运行。” - 请不要。请使用'requestPositionUpdates()'的PendingIntent版本,或者使用`AlarmManager`和我的[`LocationPoller`](https://github.com/commonsguy/cwac-locpoll)或类似的东西轮询。 – CommonsWare 2011-01-26 22:22:27

+0

说实话,在后台不断运行的位置服务永远不是一个好主意。全球定位系统和数据是2种服务消耗最多的电池,而这些不断的轮询会使设备的耗电量比平时快大约4或5倍。如果您要实施此功能,您应定期轮询位置更新。 – 2011-01-28 20:52:15

回答

0

是的,你可以在你的服务中实现一个扩展的BroadcastReceiver类来监听GPS开/关广播。当GPS打开或关闭时,它不调用onProviderEnabled()方法,它调用GpsStatus.OnGpsStatusChanged()方法。

当GPS改变发送的广播活动值:

GPS_EVENT_STARTED GPS_EVENT_STOPPED

参见如何实现广播接收机的BroadcastReceiver API。

相关问题