如何测量 Android 上应用程序的功耗?

Joh*_*ohn 5 python android battery measurement python-2.7

我开发了一个 Android 应用程序,我想知道我的应用程序在 Android 设备上的功耗。我在 Stack Overflow 上遇到了各种线程,但没有一个对我有帮助。

Android 中是否有任何应用程序可以测量我的应用程序的功耗或任何其他可行的方法?

已编辑

从这个 Stack Overflow 帖子的答案来看:

我使用“Battery Historian”并生成了batteryinfo.txt和batteryinfo.html

Batteryinfo.txt如下

Battery History:

      -3m04s883ms 090 6c120104 status=discharging health=overheat plug=none temp=0 volt=3797 +screen +phone_scanning +wifi +wifi_running +wake_lock +sensor brightness=bright phone_state=out

      -3m02s651ms 090 6c1a0104 status=charging plug=usb volt=4123 +plugged

      -3m00s087ms 090 6c1a0104 volt=4090

      -2m57s951ms 090 6c1a0104 volt=4125

      -2m43s775ms 090 6c1a0104 volt=4123

      -2m41s563ms 087 6c1a0104

      -2m31s787ms 087 6c1a0104 volt=4114

      -2m28s300ms 087 6c1a0104 volt=4112

      -2m26s037ms 087 6c1a0104 volt=4114

      -2m22s891ms 087 6c1a0104 volt=4112

      -2m20s797ms 087 6c1a0104 volt=4134

      -2m08s632ms 087 6c1a0104 volt=3849

      -2m06s567ms 083 6c1a0104 volt=3838

      -2m04s370ms 083 6c1a0104 volt=4123

      -1m43s700ms 087 6c1a0104 volt=4122

      -1m32s936ms 087 6c1a0104 volt=4007

      -1m22s724ms 083 6c1a0104 health=good

      -1m02s524ms 080 6c1a0104 volt=3957



Per-PID Stats:

PID 166 wake time: +203ms

PID 109 wake time: +2m57s295ms



Statistics since last charge:

System starts: 0, currently on battery: false

Time on battery: 2s 232ms (0.0%) realtime, 2s 232ms (0.0%) uptime

Total run time: 3d 15h 52m 45s 402ms realtime, 1d 9h 16m 33s 630ms uptime, 

Screen on: 2s 231ms (100.0%), Input events: 0, Active phone call: 0ms (0.0%)

Screen brightnesses: bright 2s 231ms (100.0%)

Kernel Wake lock "PowerManagerService": 2s 191ms  (0 times) realtime

Kernel Wake lock "power-supply": 412ms  (1 times) realtime

Kernel Wake lock "main": 2s 191ms  (0 times) realtime

Total received: 0B, Total sent: 0B

Total full wakelock time: 2s 197ms , Total partial waklock time: 2s 203ms 

Signal levels: none 2s 231ms (100.0%) 0x

Signal scanning time: 2s 231ms 

Radio types: none 2s 231ms (100.0%) 0x

Radio data uptime when unplugged: 0 ms

Wifi on: 2s 231ms (100.0%), Wifi running: 2s 231ms (100.0%), Bluetooth on: 0ms (0.0%)



Device battery use since last full charge

Amount discharged (lower bound): 0

Amount discharged (upper bound): 0

Amount discharged while screen on: 0

Amount discharged while screen off: 0



#1000:

User activity: 2 other

Sensor 2: 2s 206ms realtime (0 times)

#1013:

Wake lock AudioIn_369: 2s 203ms partial (1 times) realtime

#10010:

Apk com.android.providers.media:

  Service com.android.providers.media.MtpService:

    Created for: 0ms  uptime

    Starts: 1, launches: 1

#10029:

Wake lock Samsung Recognition Service: 2s 197ms full (0 times) realtime



Statistics since last unplugged:

Time on battery: 2s 232ms (1.2%) realtime, 2s 232ms (1.2%) uptime

Total run time: 3m 4s 912ms realtime, 3m 4s 911ms uptime, 

Screen on: 2s 232ms (100.0%), Input events: 0, Active phone call: 0ms (0.0%)

Screen brightnesses: bright 2s 232ms (100.0%)

Kernel Wake lock "PowerManagerService": 2s 191ms  (0 times) realtime

Kernel Wake lock "power-supply": 412ms  (1 times) realtime

Kernel Wake lock "main": 2s 191ms  (0 times) realtime

Total received: 0B, Total sent: 0B

Total full wakelock time: 2s 232ms , Total partial waklock time: 2s 232ms 

Signal levels: none 2s 232ms (100.0%) 0x

Signal scanning time: 2s 232ms 

Radio types: none 2s 232ms (100.0%) 0x

Radio data uptime when unplugged: 0 ms

Wifi on: 2s 232ms (100.0%), Wifi running: 2s 232ms (100.0%), Bluetooth on: 0ms (0.0%)



Device is currently plugged into power

  Last discharge cycle start level: 90

  Last discharge cycle end level: 90

  Amount discharged while screen on: 0

  Amount discharged while screen off: 0



 #1000:

   User activity: 2 other

   Sensor 2: 2s 232ms realtime (0 times)

 #1013:

   Wake lock AudioIn_369: 2s 232ms partial (1 times) realtime

 #10010:

   Apk com.android.providers.media:

  Service com.android.providers.media.MtpService:

    Created for: 0ms  uptime

    Starts: 1, launches: 1

 #10029:

    Wake lock Samsung Recognition Service: 2s 232ms full (0 times) realtime
Run Code Online (Sandbox Code Playgroud)

当我打开 Batteryinfo.html 时,它显示“无法找到结束时间”。

我按照下面的帖子中的答案并注释掉了提到的代码

电池历史记录无法找到结束时间android

这次,当我运行命令从 Batteryinfo.html 生成 Batteryinfo.html 时,它显示一个错误(引用了注释掉的 3 行代码)。

注意:由于我的设备不支持使用batterystats,因此我使用batteryinfo。

我想打开batteryinfo.html详细信息。

Xud*_*Ran 2

我不知道你所说的无法读取设置中的估计值是什么意思。

看我在Android App功耗中的回答

” 首先,Google Play上的powertutor已经过时了。我查看了它的源代码,发现功耗估算模型是针对一些旧手机型号的。power tutor的值比实际功耗要小很多。

因此,我建议使用Google开发的Battery Historian,用于估计每个应用程序的电池消耗。但它是用 Python/Go 编写的。它将在 html 文件中显示硬件调用。并且您可以在相应的文本文件中找到每个应用程序的电池消耗情况。

https://developer.android.com/studio/profile/battery-historian.html

它将创建一个batterystats.txt,显示与设置中的完全相同。