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

标签 android location

我有一个后台服务,通过 timer.scheduleAtFixedRate 定期运行. 它每隔一定时间(比如 60 秒)就会唤醒并检查位置。

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

现在,当手机在室外且 GPS 接收信号良好时,这一切正常。 但是,如果手机在里面,GPS 几乎总是处于 Activity 状态 - 寻找信号,并且电池会迅速耗尽。

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

我使用的是 API 级别 7,因此我无法使用 locationManager.requestSingleUpdate . 我有两个问题:

  1. 有什么方法可以优化这个过程吗?
  2. 升级到 API 级别 9(并使用 locationManager.requestSingleUpdate)是否会显着改进流程?我的意思是,它值得升级吗?

最佳答案

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

关于Android:如何在不耗尽电池的情况下定期检查当前位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10869284/

相关文章:

android - 检测应用程序何时保持屏幕开启

android - Android 中的倒计时器

java - HTTPPost 中的 Android IOException

flutter - 特定国家/地区的城市和州选择器

java - 如何在后台运行位置更新

java - 使用 LocationListener 的 BlackBerry 应用程序在 OS 6 上卡住

android - 可以使android填充不可点击吗?

android - 如何创建可滚动的选项卡?

iphone - 停止返回缓存的 CLLocationManager 位置

android 从可用的最佳提供商处获取位置