3

我有一个后台服务,它定期由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)会显着改善流程吗?我的意思是,它值得升级吗?
4

1 回答 1

0

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

于 2012-06-03T10:18:39.900 回答