2011-01-26 62 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。

相關問題