android - 根据位置执行操作

标签 android geolocation gps

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

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

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

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

最佳答案

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

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

  1. 不要使用 GPS(这是一个真正的电池 pig )
  2. 在轮询操作之间设置较大的间隔

您可以仅使用 Wi-Fi 和手机蜂窝数据获得非常好的定位(从 40 到 150 米半径,在许多情况下比 GPS 更好)。只需在您的代码中选择“ACCURACY_COARSE”、“ACCURACY_LOW”和/或“POWER_LOW”作为提供商选择标准。

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

特别是这两个:

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

也请查看 Google 文档。

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

关于android - 根据位置执行操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12339538/

相关文章:

android - 基于 String 内部语言的 TextView 自定义字体

java - 使用后退按钮保存共享首选项

javascript - 如何获取用户的地理位置(城市名称,而不是坐标)并将其发送到文本框

c - 如何在浮点支持较差的处理器上计算 GPS 坐标之间的距离?

android - GPS 位置记录电池生命周期

algorithm - 在给定位置的情况下,获取按邻近程度排序的位置列表的最有效方法是什么?

android - 服务中的可运行对象是否在 UI 线程上运行

android - onAnimationEnd 没有被调用以进行 imageview 旋转动画

php - 如何从给定半径内的数据库中检索经度和纬度?

ios - Swift 从 CLLocation 获取 CLPlacemark