这是我监听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小时,因此我想将其增加。