Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何获取已安装应用的电池使用详细信息?_Android_Battery_Usage Statistics_Installed Applications - Fatal编程技术网

Android 如何获取已安装应用的电池使用详细信息?

Android 如何获取已安装应用的电池使用详细信息?,android,battery,usage-statistics,installed-applications,Android,Battery,Usage Statistics,Installed Applications,使用此代码,我可以找到手机的电池电量: int level = battery.getIntExtra(BatteryManager.EXTRA_LEVEL, -1); int scale = battery.getIntExtra(BatteryManager.EXTRA_SCALE, -1); float percent = (level / (float)scale) * 100; 但如何获取手机上安装的应用(包括屏幕)的电池使用详细信息,如下图所示 对于API>=19,可以像这样从设备

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

int level = battery.getIntExtra(BatteryManager.EXTRA_LEVEL, -1);
int scale = battery.getIntExtra(BatteryManager.EXTRA_SCALE, -1);
float percent = (level / (float)scale) * 100;
但如何获取手机上安装的应用(包括屏幕)的电池使用详细信息,如下图所示


对于API>=19,可以像这样从设备中转储电池状态:

adb shell dumpsys batterystats
对于API<19,使用:

adb shell dumpsys batteryinfo

测量特定应用程序或手机硬件特定部分的功耗并不是那么容易。从公开的googledeveloperapi来看,用一种简单的方法是不可能做到这一点的。还有其他一些方法非常复杂。对于每一款Android智能手机,谷歌都要求制造商在设备上添加一个所谓的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> 
为您提供LCD的当前状态(请注意,此不需要根访问)。对于每个硬件组件,都存在这样的路径。如果你现在想准确地测量一个应用程序消耗了多少能量,你需要编写一个服务来监控应用程序是否处于活动状态以及当前的硬件状态。利用这些信息,您可以计算能源消耗

还有一个应用程序是开源的,叫做(这里是th,你可以找到她)。它完全符合我刚才解释的。他们还发表了一篇关于他们的方法有多精确的科学论文(做得很好)

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


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

与其使用反射来访问一些私有成员和方法,我建议您在源代码环境中编程,这样您就可以o使用任何私有API

如果还希望包含内部类或方法,请执行以下操作:

  • 转到/platforms/
  • 将下载的隐藏API文件复制、粘贴并替换到此目录,例如android-23/android.jar
  • 将compileSdkVersion和targetSdkVersion更改为23(例如)
  • 最后,重建您的项目

  • 需要获取各个应用程序的电池使用详细信息检查此链接@VivekMishra我需要获取程序信息我不是通过adb命令查看chris的答案link@Edgarprabhu-我查看了链接,它肯定有您要找的内容。似乎此链接已更改为
    adb shell dumpsys batterystats
    /sys/devices/virtual/leds/lcd-backlight/brightness