我有一個後臺服務,定期工作timer.scheduleAtFixedRate
。它會喚醒每一段時間(比如說60秒)並檢查位置。Android:如何定期檢查當前位置,而不會耗盡電池
該位置由locManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 60000, 5, listener);
檢查,實際位置從收聽者的onLocationChanged
收集。
現在,當手機在戶外並且GPS接收良好時,此功能正常工作。 但是,如果手機在裏面,GPS幾乎總是處於活動狀態 - 尋找信號,並且電池快速耗盡。
我創建使用處理器和一個Runnable另一個線程,以conrol GPS的活動時間準確: 我用locManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, listener);
和locManager.removeUpdates(listener);
這樣我就可以打開和關閉GPS,因爲我想要的。 在這種情況下,我可以打開GPS達到確切的時間,但發現即使在10秒後,它也不會鎖定在接收良好的區域。所以在這裏我再次耗盡電池...
我使用API級別7,因此我不能使用locationManager.requestSingleUpdate
。 我有兩個問題:
- 有沒有什麼辦法來優化這個過程?
- 升級到API級別9(並使用
locationManager.requestSingleUpdate
)會顯着改善流程嗎?我的意思是,它值得升級嗎?
不是一個真正的答案,但我可以告訴你,手機GPS系統有時需要幾分鐘,而不是十秒鐘才能獲得修復(可能取決於手機型號)。一旦找到,未來的修復速度會更快 - 可能在10秒內。也許花費兩三分鐘時間試圖每隔一刻鐘修好一次?或者也許有一些方法可以獲得足夠的細節,以便更快速地判斷是否有良好的信號。 – dhardy