如何在安卓上测量我的应用程序的功耗?

5
我开发了一个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

当我打开Batteryinfo.html时,它显示“找不到结束时间”。
我按照下面帖子中的答案,并根据所述注释掉了代码。 Battery historian cannot find end time android 这次,当我运行命令从batteryinfo.html生成batteryinfo.html时,它会显示一个错误(它是指三行已注释的代码)。
注意:由于我的设备不支持使用batterystats,因此我正在使用batteryinfo。
我想打开包含详细信息的。

https://dev59.com/Smcs5IYBdhLWcg3wym4h - IntelliJ Amiya
一种方法是查看手机设置中的电池?只需从顶部向下拖动,导航到电池功能,然后您就可以查看其他应用程序对电量消耗的贡献了。 - Subby
@Subby,我有两个应用程序,需要知道哪个应用程序在15分钟的时间范围内消耗更多。我不能通过在设置中检查一些估计值来报告它。我需要这两个应用程序的精确读数。 - John
@John 你试过这个了吗:https://dev59.com/Smcs5IYBdhLWcg3wym4h。第一个回答看起来很有希望。 - Subby
@Subby,我从其他SO帖子中了解到PowerTutor有点过时,无法计算准确的功耗。http://android.stackexchange.com/questions/109301/can-powertutor-app-measure-exact-whole-power-consumption-of-devices-gpu - John
1个回答

2
我不知道你所说的“无法在设置中读取估计值”的意思。
请参考我在Android App power consumption中的回答。
首先,来自Google Play的powertutor已经过时。我已经检查了它的源代码,并发现它的电量估算模型是针对一些旧的移动设备模型的。从powertutor得到的值比实际的功耗要小得多。
因此,我建议使用由Google开发的Battery Historian来估算每个应用程序的电池消耗情况。但它是用Python/Go编写的。它将以HTML文件形式显示硬件调用。您可以在相应的文本文件中找到每个应用程序的电池消耗情况。 https://developer.android.com/studio/profile/battery-historian.html 它将创建一个batterystats.txt文件,与设置中的内容完全相同。

感谢您的回答,Xudong Ran。根据您的建议,我尝试使用“电池历史记录器”,并成功生成了.txt和.html文件。但是,当我打开.html文件时,它只显示“找不到结束时间”。您能否帮助我解决这个问题? - John
首先,如果您想要检查应用程序的功耗,我建议您通过查找应用程序的 UID 来阅读 batterystat.txt 文件。对于“找不到结束时间”的问题,我已经检查了源代码。它与此答案完全相同:https://dev59.com/apLea4cB1Zd3GeqP2Xbp 如果可能的话,您能否在此处粘贴 txt 文件? - Xudong Ran
Android 版本 - 4.0.4 和 API 级别 15。 - John
很抱歉,Battery Historian只支持Android 4.2及以上版本。在查看源代码时,我无法找到任何电量估算API。建议您使用其他测量方法。实际上,Google Play上有两个可用于估算功耗的应用程序。一个叫做“App Tune-up Kit”,另一个是Trepn Profiler。您可以试试。如果有任何问题,请随时问我。 - Xudong Ran
感谢您宝贵的评论。我使用了App Tune-up kit,但在生成HTML文件方面遇到了一些问题。您能否帮我看看这个问题:https://developer.qualcomm.com/forum/qdn-forums/software/app-tune-kit/33407 - John
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接