这是我收听 GPS 位置更新的方式(使用LocationManager
和 a LocationListener
):
locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);
listener = new MyLocationistener(); // LocationListener
locationManager.requestLocationUpdates(
LocationManager.GPS_PROVIDER,
30000, // milliseconds (minTime)
20, // meters (minDistance)
listener );
minTime
但我想动态minDistance
调整LocationManager#requestLocationUpdates
. 我的目标是根据几个使用政策来节省电池,即:
- 如果用户没有移动,则增加 minTime 以获取位置更新
- 如果用户移动非常快,增加 minDistance
- 如果用户在室内(没有 GPS 覆盖),则同时增加
- 如果电池太低,请同时增加
- ...(任何其他启发式)
我想知道:
- 这真的是节省电池寿命的好主意吗?
- 我怎么能做这样的调整?如果有唯一的选择,我可以一次又一次地打电话
LocationManager#removeUpdates
。LocationManager#requestLocationUpdates
- 您知道实现这种自适应算法的任何想法或示例代码吗?
编辑:该应用程序是一个跟踪系统,用于了解人们的位置,以便将任务分配给离给定位置最近的人。实际上电池几乎不能持续8小时,所以我想增加它。