我嘗試了一種方法,使用偵聽PROVIDERS_CHANGED動作的BroadcastReceiver,但只會告訴我何時打開/關閉位置設置。我想知道位置服務何時被任何應用程序用於獲取位置。我不需要知道哪個應用程序正在執行它,而且我不關心該位置本身。我只是想知道什麼時候一些應用程序試圖獲取一個位置,以及何時停止這樣做。這可能嗎?當GPS(或位置服務)開始/停止時接收通知(通過BroadcastReceiver)
回答
我不知道你是否真的需要通過廣播接收通知,但如果它不是絕對必需的,那麼你可以使用GpsStatus.Listener:
這裏是如何使用它:
mLocationManager.addGpsStatusListener(new GpsStatus.Listener(){
@Override
public void onGpsStatusChanged(int event) {
if(event==GpsStatus.GPS_EVENT_STARTED){
Log.d(TAG,"Gps Started");
}else if(event==GpsStatus.GPS_EVENT_STOPPED){
Log.d(TAG,"Gps Stopped");
}
}
});
如果你確實需要通過BroadcastReceiver接收這些信息:只需將此代碼包裝在一個服務中,然後從那裏發送事件。
我會測試看看這是否可靠。我必須讓它在我自己的背景下運行,並在必要時重新創建它。 –
工作很好。我在某處讀到,在使用GpsStatus.Listener之前必須開始偵聽位置更新,但事實證明情況並非如此。這實際上工作,我把它包裝在一個粘性的服務,在啓動時重新啓動。謝謝@ ben75 –
這不適合我,我已經把這個放在我的片段的onCreateView() –
不完全是你要求的,但可能是有趣的:你可以註冊從PASSIVE_PROVIDER
到LocationManager
的位置更新。
此提供程序可用於在其他應用程序或服務請求它們時被動地接收位置更新,而無需實際請求您自己的位置。
您無法知道其他應用程序何時停止請求新位置,或者何時開始準確的位置,但是當您收到請求時您會知道。
- 1. 服務開始時會收到通知
- 2. 當sidekiq開始或停止時發送電子郵件通知
- 3. 開始和停止來自廣播接收器的通知
- 4. BroadcastReceiver->服務 - >通知
- 5. 從通知開始服務
- 6. 獲得通知時的視頻,開始或停止UIWebView的
- 7. 當互聯網連接或斷開連接時收到通知
- 8. 當UITextField或UITextView開始編輯時收到通知
- 9. GPS位置變更通知
- 10. 當Biztalk的發送/設置通知接收端口停止或禁用
- 11. 開始停止服務並通過python腳本關機
- 12. 是否通過服務工作者批量或實時接收鉻通知?
- 13. 通過UDP接收實時GPS數據
- 14. APNS在收到時停止通知
- 15. 什麼時候應該開始和停止我的通知服務?
- 16. 停止通過通知意圖的服務
- 17. 當客戶端連接到java服務器時收到通知
- 18. 通過GPS尋找位置
- 19. Android - 通知pendingIntent停止服務
- 20. 停止通知中的後臺服務
- 21. Android開始/停止服務
- 22. 當Log4net停止記錄時通知
- 23. 通過GPS位置獲取位置
- 24. 通過BroadcastReceiver的短信接收器
- 25. 無法通過GPS或網絡找到當前位置
- 26. 當進程停止響應(最好是C#)時收到通知
- 27. 當iPod音樂停止時收到通知
- 28. 取消通知從服務開始
- 29. 如何在Android中通知開始當前活動時收到通知
- 30. 如何通過服務或警報通知「當前」活動?
我也有興趣知道這個 – alandalusi
看到這個[link](http://stackoverflow.com/questions/11398732/how-do-i-receive-the-system-broadcast-when-gps-status-has - 更改)..告訴我,如果它幫助... @alandalusi和Xen – Lal
選中此鏈接(http://stackoverflow.com/questions/20673620/how-to-trigger-broadcast-receiver-when-gps-打開關閉)... – Lal