根据位置执行操作

时间:2012-09-09 13:38:18

标签: android geolocation gps

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

我想过为用户添加一个选项来指定查询位置的频率。但是,我担心如果用户将其设置得太长,那么当我的应用程序靠近该位置时,我的应用程序将错过执行操作。

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

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

2 个答案:

答案 0 :(得分:1)

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

主要有两种方法可以节省电池并具有良好的定位:

  1. 不要使用GPS(这是一个真正的电池猪)
  2. 在轮询操作之间设置较大的间隔
  3. 只使用wi-fi和手机细胞数据,您可以获得相当好的定位(从半径40到150米,在许多情况下比GPS更好)。只需在代码中选择“ACCURACY_COARSE”,“ACCURACY_LOW”和/或“POWER_LOW”作为提供商选择标准。

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

    特别是这两个:

    您可以根据用户的测量速度选择/设置省电轮询间隔。如果用户正在行走(小于5公里/小时),您可以使用30-60秒的间隔,没有任何风险错过您的警报。如果用户驾车(超过50公里/小时),则必须设置1到10秒的间隔。考虑到位置空间的准确性通常非常差(100米左右),所以尝试以非常高的时间来“触及”这一点毫无意义(速度)准确度。

    请查看Google文档。

    无论如何,Google明确建议不要尝试使用自己的代码来节省电量,并依赖于getProviders标准。

答案 1 :(得分:1)

如果我理解得很好,你想在设备的位置处于某个位置的预定义半径时触发某个事件。如果这是一个问题,你有一个叫做Proximity Alerts的东西,它是自动机制。所以只是google它,或试试这个http://www.javacodegeeks.com/2011/01/android-proximity-alerts-tutorial.html。我还没看过它,但它对我来说一见钟情