Android:如何在不耗尽电池的情况下定期检查当前位置

时间:2012-06-03 09:43:59

标签: android location

我有一个后台服务,由timer.scheduleAtFixedRate定期运作。 它会唤醒每一段时间(例如60秒)并检查位置。

locManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 60000, 5, listener);检查位置,并从听众onLocationChanged收集实际位置。

现在,当手机在外面并且GPS接收良好时,这样可以正常工作。 但是,如果手机在里面,GPS几乎总是有效 - 寻找信号,电池快速耗尽。

我使用Handler和Runnable创建了另一个线程,以便准确地控制GPS活动时间: 我使用了locManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, listener);locManager.removeUpdates(listener);,因此我可以根据需要打开和关闭GPS。 在这种情况下,我可以打开GPS一段时间,但发现即使10秒后它也没有锁定在接收良好的区域。所以我在这里再次耗尽电池......

我正在使用API​​级别7,因此我无法使用locationManager.requestSingleUpdate。 我有两个问题:

  1. 有没有办法优化这个过程?
  2. 升级到API级别9(并使用locationManager.requestSingleUpdate)会显着改善流程吗?我的意思是,值得升级吗?

1 个答案:

答案 0 :(得分:0)

NETWORK_PROVIDER如何解释here? 你可以有一个系统,如果你在有限的时间内找不到位置,这意味着你在里面或GPS接收不够好,你可以使用网络位置。由于使用较少的电池,它至少是一种解决方法或替代方案。但是这种情况会更低。