2

我正在创建一个应用程序,当我在某个位置的某个半径范围内时,我需要执行一个操作。但我不想不断地轮询该位置,因为那会耗尽电池电量。

我想为用户提供一个选项来指定查询位置的频率。但是,我担心如果用户设置的时间过长,那么当我的应用靠近该位置时,它会错过执行该操作。

我在一个 Google IO 会话中,Pay With Square 有一个自动标签功能,我不确定他们是否在不断地轮询位置,设置查询位置之间的延迟,或者在不耗尽电池的情况下高效的第三个选项。

我想就如何处理这个问题征求建议。提前致谢。

4

2 回答 2

1

看起来您的问题实际上是:“如何在节省设备电池的同时获得准确的位置测量?”

省电和定位好主要有两种方式:

  1. 不要使用 GPS(那是真正的耗电大户)
  2. 在轮询操作之间设置较大的间隔

仅使用 wi-fi 和手机数据,您就可以获得相当好的定位(从 40 到 150m 半径,在许多情况下比 GPS 更好)。只需在您的代码中选择“ACCURACY_COARSE”、“ACCURACY_LOW”和/或“POWER_LOW”作为提供者选择标准。

请参阅 Google Developer 网站上的以下链接:

特别是这两个:

您可以根据测量的用户速度选择/设置节电轮询间隔。如果用户正在步行(小于 5 公里/小时),您可以使用 30 - 60 秒的间隔,而不会错过任何提醒。如果用户开车旅行(超过 50 公里/小时),您必须设置 1 - 10 秒的间隔。考虑到位置空间精度通常很差(100 m 左右),因此尝试以非常高的时间(速度)精度“捕捉”该点确实没有什么意义。

也请查看 Google 文档。

在任何情况下,Google 都明确建议不要尝试使用您自己的代码来节省电池电量,并为此依赖 getProviders 标准。

于 2012-09-10T10:07:55.623 回答
1

如果我理解得很好,当设备的位置在某个位置的预定义半径内时,您想触发某个事件。如果这是一个问题,你有一个叫做 Proximity Alerts 的东西,它是一种自动化机制。所以只需谷歌它,或者试试这个http://www.javacodegeeks.com/2011/01/android-proximity-alerts-tutorial.html。我还没读过它,但乍一看它看起来不错

于 2012-09-18T15:04:34.543 回答