如何确定requestLocationUpdates的间隔时间?

时间:2011-06-22 15:05:17

标签: android location

LocationManager#requestLocationUpdates允许您传入minTime和minDistance参数。我很难决定这些数字应该是什么,并且可以欣赏一些指导。

我们的应用不是一个转弯导航应用;我只是想展示10个最近的景点。由于我显示最近的10,它们可能会变得有点陈旧,但如果用户在移动的车辆中,我希望/需要经常更新它们以避免陈旧。

我想很多人都处于模糊要求的同一位置:“我不希望数据过于陈旧,但我不想浪费电池。”我怎样才能将这些模糊的要求变成具体的数字?

4 个答案:

答案 0 :(得分:3)

***<Edit>***
As of JellyBean, the criteria is (minTime & minDistance), so it has 
to satisfy both to return a location.
***</Edit>***

根据你的问题,听起来像minTime参数是无关紧要的。

你真正需要担心的是minDistance,因此如果用户处于快速移动的车辆中,它将会跟上。

如果一个人驾驶60英里/小时,他们每秒移动约27米。

考虑这个标准......我想说:

minTime = 60000 //每60秒更新一次 minDistance = 90 //在快速移动的车辆中,它将每3秒更新一次

答案 1 :(得分:3)

requestLocationUpdates docs

中已经很好地描述了它
  

通知的频率或新的   可以使用。来控制位置   minTime和minDistance参数。如果   minTime大于0,即   LocationManager可能会休息   for minTime毫秒之间   位置更新以节省电力。如果   minDistance大于0,a   位置只会在广播时播出   设备按minDistance米移动。至   经常获取通知   可能,将两个参数都设置为0。   后台服务应该小心   关于设置足够高   minTime,以便设备不会   通过保持消耗太多的电力   所有的GPS或无线电台   时间。特别是,价值观   不建议使用60000毫秒。

答案 2 :(得分:1)

我可以建议一个更好的想法,最初请求稍微更大的间隔更新并获取位置。现在检查连续位置之间的距离是否大于区分较近位置的最小距离,将请求更新间隔更改为较低值。类似地,如果在此较低的间隔中,您计算​​的距离远低于指示用户未通过车辆行驶的距离,则将间隔更新为更大的值。 要更新间隔,您必须取消注册上一个侦听器,然后重新注册新值。

答案 3 :(得分:0)

对于您手头的问题,请查看PASSIVE_PROVIDER。基本上,当任何其他应用程序可能要求更新时,它将帮助您获得更新。因此,您可以将其与其他提供商结合使用。