gpt4 book ai didi

android - 如何获取已安装应用的电池使用详情?

转载 作者:IT老高 更新时间:2023-10-28 23:34:49 28 4
gpt4 key购买 nike

使用此代码,我可以找到手机的电池电量:

int level = battery.getIntExtra(BatteryManager.EXTRA_LEVEL, -1);
int scale = battery.getIntExtra(BatteryManager.EXTRA_SCALE, -1);
float percent = (level / (float)scale) * 100;

但是如何获取手机上安装的应用程序的电池使用详情,包括屏幕的详情,如下图所示?

Screenshot of battery usage details screen

最佳答案

测量特定应用或手机硬件特定部分的功耗并不容易。在公开的 Google Developer API 中,不可能以简单的方式做到这一点。还有其他一些非常复杂的方法。对于每部 Android 智能手机,Google 要求制造商添加一个所谓的 power profile XML 到设备。它们看起来像这样

  <item name="screen.on">0.1</item>  <!-- ~200mA -->
<item name="screen.full">0.1</item> <!-- ~300mA -->
<item name="bluetooth.active">0.1</item> <!-- Bluetooth data transfer, ~10mA -->
<item name="bluetooth.on">0.1</item> <!-- Bluetooth on & connectable, but not connected, ~0.1mA -->
<item name="wifi.on">0.1</item> <!-- ~3mA -->
<item name="wifi.active">0.1</item> <!-- WIFI data transfer, ~200mA -->
<item name="wifi.scan">0.1</item>

它们告诉您组件的每个硬件状态消耗了多少电流(例如,Wifi 有三种状态,CPU 有 10 种等)。现在 Android 是基于 Linux 的,这允许您检查每个硬件组件的当前状态。例如文件

/sys/devices/virtual/leds/lcd-backlight/brightness

为您提供 LCD 的当前状态(请注意,此 no 需要 root 访问权限)。对于每个硬件组件,都存在这样的路径。如果您现在想要准确测量应用程序消耗的能量,您需要编写一个服务来监控应用程序何时处于 Activity 状态以及当前的硬件状态是什么。有了这些信息,您就可以计算能耗。

还有一个应用是开源的,叫做PowerTutor (这里是 Play-Store link 和她,你会找到 source code 。它完全符合我刚才的解释。他们还发表了一篇科学的 paper 关于他们的方法有多准确(它做得很好)。

现在问题来了。几年前,我遇到了测量某些应用程序的功耗的问题。一位客户希望我们评估他们的确切功耗。最后,我们发现分析所依据的功率曲线不够准确。似乎制造商只是在 XML 中添加了一些甚至与设备无关的值。我们拥有来自 20 个不同品牌的 100 多种不同设备,其中只有少数似乎在其 XML 中具有与设备相关的值。

最后我可以说,不要花太多时间在软件端测量实际功耗,这不值得。使用真正的万用表,直接测量硬件。

关于android - 如何获取已安装应用的电池使用详情?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35449082/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com