Android 应用(CPU、GPS、网络、WiFi)的总功耗。
TOTAL power consumption by Android App (CPU, GPS, Network, WiFi).
我正在开发一个使用 GPS 和网络位置信息跟踪用户移动的应用程序。我使用服务、Activity 识别、不同的采样率和 gps/network 超时来提高电池效率。
问题是如何测量我的应用消耗的确切数量(mV、mA/hour 或总消耗的百分比)?不仅根据CPU使用,还通过调用GPS、网络、WiFi。所以我可以对应用程序的电池效率做出结论。
我正在通过 adb shell dumpsys batterystats
获取电池统计数据。
这是我在步行和火车旅行中使用 1 小时后看到的结果:
Mobile network: 10.61KB received, 7.41KB sent (packets 26 received, 34 sent)
Mobile radio active: 18s 180ms (0.7%) 8x @ 303 mspp
Wifi Running: 0ms (0.0%)
Full Wifi Lock: 2m 8s 907ms (3.9%)
**Wifi Scan: 3m 20s 904ms (6.1%)**
Wake lock NlpCollectorWakeLock: 1m 23s 525ms partial (100 times) realtime
Wake lock *alarm*: 269ms partial (97 times) realtime
Wake lock NlpWakeLock: 264ms partial (83 times) realtime
Wake lock LocationManagerService: 64ms partial (19 times) realtime
TOTAL wake: 1m 24s 122ms partial realtime
**Sensor GPS: 5m 15s 109ms realtime (185 times)**
Foreground activities: 2m 40s 107ms realtime (10 times)
Foreground for: 51m 51s 176ms
Active for: 55m 1s 142ms
Proc xxxxxxxxxxx:
**CPU: 30s 670ms usr + 6s 800ms krn ; 7s 810ms fg**
Proc *wakelock*:
**CPU: 12s 660ms usr + 15s 40ms krn ; 0ms fg**
Apk xxxxxxxxxxx:
122 wakeup alarms
Service xxxxxxxxxxx.ActivityRecognitionIntentService:
Created for: 6s 652ms uptime
Starts: 356, launches: 356
Apk com.google.android.gms:
(nothing executed)
我猜最耗电的是传感器 GPS 通话、CPU 使用率和 Wifi。
问题:
1) 我该如何解读这些数字?是否有可能找出每次 GPS 呼叫(或实时)耗电多少?
2) 有没有更好的方法可以查看App的总耗电量?
如 Battery Performance 101 and Understanding Battery Drain 中所述,Android 不会公开有关每个芯片电池消耗的低级计数器。从日志记录和硬件级别来看,跟踪该数据的开销都很大。
获取此信息的唯一正确方法是将您的 android 连接到 MONSOON device,但即便如此,您的结果也会有所偏差,因为设备之间的功率消耗会发生变化 &外形尺寸。
中间地带是 Battery Historian 工具,它会告诉您哪些重要系统处于活动状态,然后您可以找到这些事件与负责的硬件之间的关联。值得注意的是,Battery Historian 只是 BatteryStats 工具(您已经在使用)的 UI 转换。它会完成所有工作,为您抓取数据并将其解释为可视化形式。
尽管这不是 100% 准确;正如您在 Battery Drain and Networking 中看到的那样,优化电池使用是在 Battery Historian 中寻找已知存在问题的模式,并尝试更改代码以影响它们。因此,在诊断某些事情时,会有些麻烦。
目前,这是查找有关电池使用情况的准确信息的建议方法。
我正在开发一个使用 GPS 和网络位置信息跟踪用户移动的应用程序。我使用服务、Activity 识别、不同的采样率和 gps/network 超时来提高电池效率。
问题是如何测量我的应用消耗的确切数量(mV、mA/hour 或总消耗的百分比)?不仅根据CPU使用,还通过调用GPS、网络、WiFi。所以我可以对应用程序的电池效率做出结论。
我正在通过 adb shell dumpsys batterystats
获取电池统计数据。
这是我在步行和火车旅行中使用 1 小时后看到的结果:
Mobile network: 10.61KB received, 7.41KB sent (packets 26 received, 34 sent)
Mobile radio active: 18s 180ms (0.7%) 8x @ 303 mspp
Wifi Running: 0ms (0.0%)
Full Wifi Lock: 2m 8s 907ms (3.9%)
**Wifi Scan: 3m 20s 904ms (6.1%)**
Wake lock NlpCollectorWakeLock: 1m 23s 525ms partial (100 times) realtime
Wake lock *alarm*: 269ms partial (97 times) realtime
Wake lock NlpWakeLock: 264ms partial (83 times) realtime
Wake lock LocationManagerService: 64ms partial (19 times) realtime
TOTAL wake: 1m 24s 122ms partial realtime
**Sensor GPS: 5m 15s 109ms realtime (185 times)**
Foreground activities: 2m 40s 107ms realtime (10 times)
Foreground for: 51m 51s 176ms
Active for: 55m 1s 142ms
Proc xxxxxxxxxxx:
**CPU: 30s 670ms usr + 6s 800ms krn ; 7s 810ms fg**
Proc *wakelock*:
**CPU: 12s 660ms usr + 15s 40ms krn ; 0ms fg**
Apk xxxxxxxxxxx:
122 wakeup alarms
Service xxxxxxxxxxx.ActivityRecognitionIntentService:
Created for: 6s 652ms uptime
Starts: 356, launches: 356
Apk com.google.android.gms:
(nothing executed)
我猜最耗电的是传感器 GPS 通话、CPU 使用率和 Wifi。
问题:
1) 我该如何解读这些数字?是否有可能找出每次 GPS 呼叫(或实时)耗电多少?
2) 有没有更好的方法可以查看App的总耗电量?
如 Battery Performance 101 and Understanding Battery Drain 中所述,Android 不会公开有关每个芯片电池消耗的低级计数器。从日志记录和硬件级别来看,跟踪该数据的开销都很大。
获取此信息的唯一正确方法是将您的 android 连接到 MONSOON device,但即便如此,您的结果也会有所偏差,因为设备之间的功率消耗会发生变化 &外形尺寸。
中间地带是 Battery Historian 工具,它会告诉您哪些重要系统处于活动状态,然后您可以找到这些事件与负责的硬件之间的关联。值得注意的是,Battery Historian 只是 BatteryStats 工具(您已经在使用)的 UI 转换。它会完成所有工作,为您抓取数据并将其解释为可视化形式。
尽管这不是 100% 准确;正如您在 Battery Drain and Networking 中看到的那样,优化电池使用是在 Battery Historian 中寻找已知存在问题的模式,并尝试更改代码以影响它们。因此,在诊断某些事情时,会有些麻烦。
目前,这是查找有关电池使用情况的准确信息的建议方法。