【问题标题】:requestLocationUpdates minTime parameter purposerequestLocationUpdates minTime 参数用途
【发布时间】:2012-11-25 20:26:44
【问题描述】:

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

我就是这样称呼requestLocationUpdates

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

现在,文档清楚地说:

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

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

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

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

【问题讨论】:

    标签: android gps locationmanager


    【解决方案1】:

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

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

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

    是的,使用 Handler 每 30 分钟通过 requestSingleUpdate() 请求一次更新。

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

    【讨论】:

    • 谢谢,我去看看。我不认为 Handler 是一个选项,因为我的应用程序可能在更新之间死了,但使用 AlarmManager 是类似的。我的设备运行 2.3.3,但有趣的是,我永远猜不到你对第一个问题的答案。
    • 在这种情况下,AlarmManager 是最好的选择。如果您不想打扰用户,也可以使用后台服务获取并保存新位置。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-04-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-05
      • 1970-01-01
      • 2020-04-26
      相关资源
      最近更新 更多