4

我正在创建一个应用程序(用于教育目的),它每 30 分钟记录一次用户的位置,并使用户能够查看地图上的所有位置。我不希望更新频率超过 30 分钟,但确实如此。

这就是我所说的requestLocationUpdates

locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,  30 * 60 * 1000,  0, pe);

现在,文档清楚地说:

位置更新之间经过的时间永远不会小于 minTime

但我确实在 SO 上看到了一些不同的答案(例如,这个答案)。

似乎只要可以从 GPS 获得更新,我就会得到更新。GPS 图标永远不会关闭,并且更新速率变得大于 1 更新/秒。所以我在这里有两个问题:

  1. minTime参数没有达到它的目的,甚至没有作为一个提示(是的,30 分钟更新率的提示导致超过一秒更新......)。那它有什么作用呢?
  2. 还有其他方法吗?我不希望一直启用 GPS,因为它会太快地消耗我的电池。也许我可以安排闹钟每 30 分钟重复一次,然后打电话requestSingleUpdate
4

2 回答 2

5

minTime 参数没有达到它的目的,甚至没有作为一个提示(是的,30 分钟更新率的提示导致超过一秒更新......)。那它有什么作用呢?

从 Jellybean 开始,设备必须观察minTime参数,所以它确实有目的(现在)。

还有其他方法吗?我不希望一直启用 GPS,因为它会太快地消耗我的电池。也许我可以安排每 30 分钟重复一次警报,然后调用 requestSingleUpdate?

是的,使用 HandlerrequestSingleUpdate()每 30 分钟请求一次更新。

我之前在上一个问题中已经解决了这个问题,如果该答案中的代码有帮助,如果您有任何问题没有解决,请告诉我。

于 2012-11-25T20:33:18.597 回答
1

第二个参数,以米为单位的最小距离差设置为零,它会导致不断更新。更喜欢在所需的时间(以分钟为单位)内的计时器+处理程序中使用 requestSingleUpdate。

于 2016-01-05T13:26:09.007 回答