在过去的三个会话中,我们开发了一个非常精准的位置跟踪应用。在本博文中,我将使用这个应用程序并检查电池消耗情况。
我每天骑自行车上班时都在使用我的应用,并检查电池消耗情况。
我的通勤路线大约有6公里,我使用的是Nexus 6p和Nexus 6。
抱歉,表格中使用了日语标题。
从左侧开始,数值依次为
- 登录总时间(秒)
- 登录距离(公里)
- 登录位置数量
- 跑步开始时的电量
- 跑步结束时的电量
- 电量消耗百分比
右侧的两列是
- 如果我以相同的速度跑42公里,预测电池消耗量
- 如果我以相同的速度跑5小时,预测电池消耗量。
结果显示我的应用程序可以在全程马拉松比赛中持续记录日志。(女性在全程马拉松比赛中的平均时间为5小时。)
如果您在记录日志时进行网络访问,会消耗更多的电池电量,因此请测量您的情况,并假设上述数量是GPS记录的大致消耗。
示例应用程序具有下面的代码,用于测量和记录电池消耗数值到 CSV 文件。因此,请利用这一功能来解决您的问题。
registerReceiver(this.batteryInfoReceiver, new IntentFilter(Intent.ACTIONBATTERYCHANGED));
CSV文件存储在以下路径下。使用 adb shell 检查路径,并使用 adb pull 获取文件。
/sdcard/Android/data/com.goldrushcomputing.androidlocationstarterkit/files
节省电池的方法
如果需要进一步节省电量,有两种方法。
- 根据当前电池电量动态更改标准
- 更改最小距离和最小时间(如果每次应用程序获取新位置时都进行大量处理,例如上传到服务器。)
动态更改标准
定期检查电池电量,并将准确性和功耗需求降级为文件或高,以减少电池消耗。
更改最小距离和最短时间
增加最小距离和最小时间以减少onLocationChanged调用的频率。
最小距离和最小时间不会改变 GPS 芯片本身的功耗。它只会影响应用层的 onLocationChanged 回调的频率。因此,如果在 onLocationChanged 中没有任何大任务,改变最小距离和最小时间不会改善电池消耗。
以下是我的示例应用程序在最小距离为1米和5米时的电池消耗情况。由于我的示例应用程序在onLocationChanged中没有进行任何繁重的处理,因此这两者之间没有任何区别。
GPS芯片的功耗受到标准的影响,而不受最小距离和时间的影响。
好的,一切都准备就绪。我已经在博客的四个部分中解释了如何制作一个优秀的位置跟踪引擎,直到这里。尝试所有的过滤器,调整阈值,并找到适合您的应用程序的最佳设置。