谷歌地图(android)如何能够如此高效地请求GPS修复

时间:2016-08-03 18:57:45

标签: android google-maps gps battery

我一直在为Android开发跟踪应用程序,我需要经常使用GPS修复程序跟踪一个人(间隔时间间隔为10秒)。

事实证明,几分钟后,我的手机警告电池耗尽的应用程序 - 我的应用程序。

虽然我知道GPS修复程序使用了大量电池,但如何使用谷歌地图跟踪超过一个小时没有耗尽电池并仍能立即获得GPS更改?

非常感谢。

以下是我正在做的事情的想法:

// Define a listener that responds to location updates
LocationListener locationListener = new LocationListener() {
    public void onLocationChanged(Location location) {
      // Called when a new location is found by the network location provider.
      makeUseOfNewLocation(location);
    }

    public void onStatusChanged(String provider, int status, Bundle extras) {}

    public void onProviderEnabled(String provider) {}

    public void onProviderDisabled(String provider) {}
  };

// Register the listener with the Location Manager to receive location updates
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 10000, 0, locationListener);

这几乎是我整个代码中耗尽电量的问题。

2 个答案:

答案 0 :(得分:0)

你还有其他事情要发生。 GPS不会消耗那么多电池。你可以让它在后台全天运行,它将比手机的收音机耗费更少。当您使用GPS并保持屏幕开启时,手机消耗的是什么。或者当您经常将位置发送到服务器时 - 保持网络无线电一直处于打开状态会消耗大量电池。但GPS本身相当便宜。

此外,每隔10秒跟踪一个人是毫无意义的。 GPS甚至没有快速更新。

除了发布您的代码可能会有所帮助,我们可以看到您是否做了一些愚蠢的事情。

答案 1 :(得分:-1)

"如何使用谷歌地图跟踪超过一个小时没有耗尽电量,仍然可以立即获得GPS更改修复"

首先,当我使用谷歌地图的转弯指示时,我的手机变成了一个小加热器。 %电池像岩石一样掉落。

以下是一些建议:

  1. 处于活动(C0)状态的CPU是最大的能量消耗。节省能量的最佳方法是使CPU保持足够长的时间以使其进入低能耗状态(> C0)。
  2. 更新周期越长,CPU和其他外围设备使用的能量就越少。这是因为,再一次,你允许它们进入节能状态。
  3. 考虑外推。我确定谷歌地图和其他此类软件可以做到这一点。因此,如果每30秒更新一次,则可以从之前的点推断出位置。如果您真的想要聪明,可以查看您的位置历史记录以进行变量更新。
  4. 正如Gabe所说,听起来您的代码中存在错误,导致CPU和/或WiFi-GPS一直处于活动状态。有一些Android API会打开外围设备,而其他一些则会做同样的事情。当然,应该始终避免轮询。
  5. 这是我回答discusses energy usage时的回答。

    祝你好运。