我需要做一個Android手機上的背景GPS跟蹤,目前我打算有兩種方案:Android的GPS跟蹤和激活鎖定
- 當手機連接到(汽車)充電器,得到頻繁的GPS位置(每分鐘)。
- 當手機沒有連接到充電器時,每5-30分鐘只能輪詢一次位置,具體取決於電池的受影響程度。
我知道我需要在服務中實現跟蹤,並且可能會顯示一條通知來保持服務的活躍狀態。不過,我認爲手機可能會隨時進入睡眠模式,這會停止GPS跟蹤。
對於這些場景,什麼是連續背景GPS跟蹤的最佳方式,沒有手機進入睡眠狀態,並且不會消耗太多的功率?
到目前爲止,我收集了以下內容:
對於方案1,我可能需要獲得一個激活鎖定,並保持清醒的CPU所有的時間(但屏幕可以睡覺)。 MyTracks應用程序似乎在TrackRecordingService中執行此操作。 OpenGPSTracking似乎做the same。
對於方案2,我可以使用AlarmManager安排每x分鐘的檢查。我的服務需要獲取一個臨時WakeLock,等待一個GPS位置,然後停止並再次釋放WakeLock。
這兩種方法(永久性WakeLock與AlarmManager)的功耗比較如何?在每30分鐘檢查一次的情況下,GPS是否能夠在合理的時間內獲得準確的位置?
在StackOverflow上有幾個相關的問題,但沒有滿意的答案。一些半有用的:
- how to keep application running in background? keep collecting data?(向我指出MyTracks)
- Tracking user's sms and geo position in the background - is my idea working?
- Android service with always on GPS
任何想法wakelock多少影響電池?如果每隔幾分鐘纔會完成一次購買地點需要多長時間? – Ralf
使用此API會嚴重影響設備電池壽命。除非您確實需要它們,否則不要購買WakeLocks,儘可能使用最低等級,並且一定要儘快將其釋放。 http://developer.android.com/reference/android/os/PowerManager.html#ACQUIRE_CAUSES_WAKEUP – Rohit