每隔几分钟获取一次Android GPS位置

时间:2010-08-23 13:39:40

标签: android gps android-service

我想在Android上编写一个应用程序,每隔约5分钟将我的GPS位置上传到外部网站一次。这需要尽可能减少对电池寿命的影响,但它也需要在没有任何用户交互的情况下工作。 (背景:我正在参加铁人三项全能比赛,这将花费我大约14个小时的时间来完成,并希望近乎实时地播放我的位置,但不必担心摆弄我的手机。)

所以我最初的想法是编写一个使用LocationManager.requestLocationUpdates()并且minTime为5分钟的服务,但这实际上是否会每隔5分钟唤醒一次设备以使我的服务完成其工作?

听起来我还需要使用AlarmManager.setInexactRepeating()来确保我的服务在完成任务时是醒着但是如何使用requestLocationUpdates()?我应该在requestLocationUpdates()上设置minTime = 0,然后在获得下一次更新后立即返回睡眠状态吗?

非常感谢任何关于如何设计这一点的一般指导。我是一名称职的Java程序员&将在服务器上使用谷歌地图绘制我的位置,但我对Android开发很新,所以我基本上正在寻找一个关于如何构建客户端应用程序的高级计划。

1 个答案:

答案 0 :(得分: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分钟然后重新开始。启用和撤消位置之间的延迟可能在几秒到几分钟之间。