安卓 : LocationManager dynamically adjust minTime/minDistance thresholds

标签 android android-location

这是我监听 GPS 位置更新的方式(使用 LocationManagerLocationListener):

locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);
listener = new MyLocationistener(); // LocationListener
locationManager.requestLocationUpdates(
        LocationManager.GPS_PROVIDER, 
        30000, // milliseconds (minTime)
        20, // meters (minDistance)
        listener );

但我想动态调整 LocationManager#requestLocationUpdates 使用的 minTimeminDistance 参数。根据一些使用政策,我的目标是节省电池电量,即:

  • 如果用户没有移动,增加 minTime 以获取位置更新
  • 如果用户移动得非常快,增加 minDistance
  • 如果用户在室内(没有 GPS 覆盖),则增加两者
  • 如果电池电量太低,请增加两者
  • ...(任何其他启发式)

我想知道:

  1. 这真的是节省电池生命周期的好主意吗?
  2. 我该如何进行此类调整?如果有唯一的选择,我可以再次调用 LocationManager#removeUpdatesLocationManager#requestLocationUpdates
  3. 您知道实现这种自适应算法的任何想法或示例代码吗?

编辑:该应用程序是一个跟踪系统,用于了解人们的位置,以便将任务分配给离给定位置最近的人。实际上电池几乎不能持续 8 小时,所以我想增加它。

最佳答案

据我所知,您需要再次调用 removeUpdatesrequestLocationUpdates

此外,您还可以通过其他方式查看手机是否在移动,例如加速度计。了解一下 heresee this other question's answers

但是为了给你更多的想法,你需要提出问题本身。不要过早尝试优化,直到没有问题为止。如果有,您需要发布有关它的详细信息。

关于安卓 : LocationManager dynamically adjust minTime/minDistance thresholds,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3541384/

相关文章:

java - 覆盖 OSMdroid 中的位置跟踪

android - Android获取经纬度的方法

android - 庞大MySQL数据库的高效搜索

java - 如何使用android studio在java中获取这个数组的每个元素

android - 将数据从 Android 发送到 PHP 服务器

android - 位置更新后执行某些操作的最佳做​​法是什么?

android - 位置Android的 "Maintain a current best estimate"有什么用?

android - 仅适用于 Android Studio 中设计预览选项卡的 xml View 的占位符

android - WIX 商店 - 从其 API 获取产品列表以显示在移动应用程序上

Android特定谷歌授权