requestLocationUpdates minTime参数用途

时间:2012-11-25 20:26:44

标签: android gps locationmanager

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

这就是我致电requestLocationUpdates的方式:

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

现在,文档清楚地说:

  

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

但我确实在这里看到了一些不同的答案(例如This answer)。

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

  1. minTime参数无法实现其目的,甚至不作为提示(是的,提示30分钟更新率会导致更新一秒......)。它做了什么呢?
  2. 还有其他办法吗?我不希望GPS一直启用,因为它会消耗我的电池太快。也许我可以安排每30分钟重复一次的闹钟,并拨打requestSingleUpdate

2 个答案:

答案 0 :(得分:5)

  

minTime参数不能实现其目的,甚至不作为提示(是的,提示30分钟的更新速率导致超过更新一秒......)。它是做什么的呢?

从Jellybean开始,设备必须遵守minTime参数,因此它有一个目的(现在)。

  

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

是的,请使用处理程序每​​30分钟requestSingleUpdate()请求一次更新。

我之前在previous question处理过这个问题,请告诉我该答案中的代码是否有帮助,如果您有任何问题则无法解决。

答案 1 :(得分:1)

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