2010-08-23 107 views
6

我想在Android上編寫一個應用程序,每5分鐘將我的GPS位置上傳到外部網站。這需要儘可能減少對電池壽命的影響,但它也需要在沒有任何用戶交互的情況下工作。 (背景:我正在參加鐵人三項賽,這將花費我大約14個小時的時間完成,並且想要近實時地播放我的位置,但無需擔心手機擺弄。)每幾分鐘獲取一次Android GPS位置

所以我最初的想法是編寫一個使用LocationManager.requestLocationUpdates()的服務,其分鐘時間爲5分鐘,但是實際上這會每5分鐘喚醒一次設備,以便我的服務完成其工作?

聽起來好像我還需要使用AlarmManager.setInexactRepeating()來確保我的服務在完成其任務時仍處於清醒狀態,但是如何與requestLocationUpdates()一起使用?我應該改爲在requestLocationUpdates()上設置minTime = 0,但是一旦獲得下一次更新就返回休眠狀態?

任何關於如何設計這個的一般指導,我們非常感謝。我是一名出色的Java程序員,他將使用服務器上的Google地圖來繪製我的位置,但對於Android開發來說,這很新穎,所以我基本上在尋找關於如何構建客戶端應用程序的高級計劃。

+1

我希望你的手機有一個很好的防水容器! – Nick 2010-08-23 14:19:24

+0

@尼克是的,我會帶一個塑料袋,以防萬一,但天氣預報在這一點上都很清楚! – 2010-08-23 14:49:10

回答

1

您希望收到更新時,您的服務必須處於活動狀態。

http://developer.android.com/reference/android/location/LocationManager.html#requestLocationUpdates%28java.lang.String,%20long,%20float,%20android.location.LocationListener%29

可以告訴你,你多久被通知與minTime參數的位置變化。但這並不會降低電池消耗。除非您使用removeUpdates方法,否則無論您希望接收更新的頻率如何,都會啓用GPS。

你可以使用另一個方法:使用上面的方法啓用GPS,讀取一個值,使用removeUpdates方法,等待5分鐘,然後重新開始。啓用和撤回位置之間的延遲可能在幾秒到幾分鐘之間。

+0

謝謝@ radek-k,我已經看過文檔,但從描述中我認爲設置高minTime確實會節省電池。你的描述雖然有意義,但也許我會每15分鐘循環一遍,而不是僅僅在電池上保守。 – 2010-08-23 14:46:23

+0

在你的任何方法GPS無線電打開,不是嗎?所以它可能會消耗電力。如果啓用和撤回位置(您的第二種方法)之間的延遲太低,最好保持開啓(需要多少時間才能獲得GPS定位?) – 2010-08-29 14:14:19