2017-02-14 48 views
0

我實現了使用FusedLocationProviderApi獲取位置更新。 我需要在應用程序未運行時在後臺跟蹤設備位置。測試位置服務時遇到問題。我不能讓他們不工作

我跟着教程,我有一個服務,我打電話requestLocationUpdates意圖啓動一項服務。

我故意沒有實現保持喚醒鎖只是爲了測試並看到當屏幕熄滅時,設備停止獲取位置更新。一旦我證實我可以繼續實施喚醒鎖定,並期待相反的結果,即看到它的工作。

我使用了兩款設備:帶有KitKat的Google Nexus 10和帶有棒棒糖的三星Galaxy A5(2016)。

在這兩個設備上,它都會不斷髮送更新(我正在向網站發送更新)。 我在屏幕上離開設備一分鐘後,再在房子周圍走動,進行了屏幕測試。

我知道的Android 6和打盹模式是更嚴格的,但我想釘,並瞭解它是如何工作在Android 4.4和Android 5.

這麼折騰!任何想法如何真正讓設備進入睡眠模式,所以我可以看到獲取位置更新停止工作?

滑稽,一切我讀過約爲使其工作:)

編輯:我很困惑,爲什麼越來越位置更新仍然是工作時屏幕是關閉的,即使一個積極的位置更新設置的一樣以下:

locationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY); 
locationRequest.setFastestInterval(2); 
locationRequest.setInterval(1000); 
+0

只要服務正在運行,您將不斷獲取位置更新 – tyczj

+0

@tyczj謝謝,但這有什麼幫助?你能分享更多的想法嗎? –

+0

那麼我得到的是你需要讓你的服務停止或者由操作系統停止它,或者你手動去停止服務,喚醒鎖或不會有所作爲。 – tyczj

回答

2

件事請求位置更新是下面這一切,在LocationManagerService,這是什麼LocationManager用途,實際上創建並獲得它自己的喚醒鎖定。所以從技術上講,只要您有位置監聽者註冊以主動接收GPS,您的設備就永遠不會進入睡眠狀態。現在,我知道您使用的是Google的FusedLocationApi,但在其下面,它確實使用了LocationManager。如果您有興趣更好地瞭解位置代碼,請在此處輸入LocationManagerService的源代碼。

+0

謝謝。當你說「技術上,只要你有一個位置監聽者註冊來主動接收GPS,你的設備就永遠不會進入睡眠狀態」。不確定,但是不是設備會睡覺並喚醒自己執行我在'requestLocationUpdate'中提供的'Intent'? –

+1

它確實看起來也使用了AlarmManager,因此如果將間隔設置爲大於0,它會在GPS關閉後釋放喚醒鎖,以讓設備進入睡眠狀態。 –

+0

由於它使用喚醒鎖,這是否意味着在Android 6+打盹模式位置更新不發送?因爲在打盹模式下,喚醒鎖被忽略。除非應用程序是打盹模式白名單....多麼混亂 –

相關問題