这是我监听 GPS 位置更新的方式(使用 LocationManager
和 LocationListener
):
locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);
listener = new MyLocationistener(); // LocationListener
locationManager.requestLocationUpdates(
LocationManager.GPS_PROVIDER,
30000, // milliseconds (minTime)
20, // meters (minDistance)
listener );
但我想动态调整 LocationManager#requestLocationUpdates
使用的 minTime
和 minDistance
参数。根据一些使用政策,我的目标是节省电池电量,即:
- 如果用户没有移动,增加 minTime 以获取位置更新
- 如果用户移动得非常快,增加 minDistance
- 如果用户在室内(没有 GPS 覆盖),则增加两者
- 如果电池电量太低,请增加两者
- ...(任何其他启发式)
我想知道:
- 这真的是节省电池生命周期的好主意吗?
- 我该如何进行此类调整?如果有唯一的选择,我可以再次调用
LocationManager#removeUpdates
和LocationManager#requestLocationUpdates
。 - 您知道实现这种自适应算法的任何想法或示例代码吗?
编辑:该应用程序是一个跟踪系统,用于了解人们的位置,以便将任务分配给离给定位置最近的人。实际上电池几乎不能持续 8 小时,所以我想增加它。
最佳答案
据我所知,您需要再次调用 removeUpdates
和 requestLocationUpdates
。
此外,您还可以通过其他方式查看手机是否在移动,例如加速度计。了解一下 here和 see this other question's answers
但是为了给你更多的想法,你需要提出问题本身。不要过早尝试优化,直到没有问题为止。如果有,您需要发布有关它的详细信息。
关于安卓 : LocationManager dynamically adjust minTime/minDistance thresholds,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3541384/