测试电池使用情况

时间:2011-09-27 09:27:16

标签: android testing

我想测试一下我的应用程序如何影响手机/平板电脑的电量。

是否有允许我这样做的测试工具?

例如,我想测试我的应用程序的哪些模块消耗的电量最多等等。

6 个答案:

答案 0 :(得分:29)

Android 5.0附带了一个新工具。

你可以运行

adb shell dumpsys batterystats > dump.txt

获取设备的完整电池转储。您还可以添加一些选项,例如--unplugged(仅自上次拔掉插头后输出数据)或--charged(仅自上次收费后输出数据)。您还可以添加包名称以仅获取此包/应用程序的信息:

adb shell dumpsys batterystats --unplugged your.package.name > dump.txt

部分> dump.txt将所有内容放入一个文件中(可能只适用于Windows,不确定。但是你可以将其丢弃,转储将直接打印在控制台中,您可以将其复制并放入在文件中。)

只有拥有Android 5.x的设备才有效。 如果您的设备级别较低,可以尝试使用

adb shell bugreport > bugreport.txt

但是这个文件会非常大。 (〜8MB +)

创建此文件后,您可以使用Historian Tool of Google

要使用它,您必须安装Python 2.7.9并运行以下命令

python /path/to/historian.py dump.txt > battery.html

这将创建一个battery.html文件,您可以在其中以更有用的格式查看数据。

最后一件事:如果您想重置电池转储的统计数据,请致电

adb shell dumpsys batterystats --reset

(仅适用于Android 5.x)

答案 1 :(得分:22)

在实践中,我相信大多数有电源问题的应用程序也存在“CPU”问题。也就是说,应用程序CPU使用率的配置文件可能是您电池消耗的一个很好的近似值。例如,如果您的应用程序使用GPU,无线网络,存储等执行昂贵的操作,并且昂贵的操作不占用大量CPU时间,则需要注意和例外。

这是一个有趣的博客,关于“Power Tutor”应用程序,它为运行的系统提供比内置电池应用程序更精确的测量: http://gigaom.com/mobile/android-power-consumption-app/。我没试过。

另一个细节层次,这里有一篇论文,分析了手机哪些组件吸收最多的汁液(注意论文来自2010年):http://www.usenix.org/event/usenix10/tech/full_papers/Carroll.pdf (只需跳到第5节阅读他们的结果)。他们说屏幕亮度是最大的罪魁祸首。

如果屏幕亮度是最大的罪魁祸首,请确保在测量自己应用程序的使用情况时将其设置为固定级别。

如果您真的对测量功耗感兴趣,可以按照他们的方法(打开手机并贴上测量设备)。

答案 2 :(得分:4)

您提出的问题现在是一个研究课题。 有一些正在进行的关于追踪细粒度电力使用的研究,即在线程或子程序的基础上追踪电力使用情况。\

eprof是一些大学毕业生开发的工具。

你可以在这里找到关于这个主题的一些论文:http://web.ics.purdue.edu/~pathaka/pubs.html

我正在做同样的事情,如果普通用户有任何可用的东西,我一定会通知你。

答案 3 :(得分:1)

从Android 2.3.3开始,系统有一个原生电池监视器。

设置 - >关于手机 - >电池使用

答案 4 :(得分:0)

我会说没有真正的工具来测试它,因为它无法精确测量。如果你拿iPhone,你会看到电池数量从40%到30%,然后停留一段时间,下降到20%,下降到15%,上升到25%,回到20%ECT 。 您可以做的是长时间为手机充电,确保手机充满电,然后使用您的应用直到手机关闭,并记下花费的时间。 现在使用其他版本执行此操作并查看结果。 基本上,如果你想尽可能减少测试,你必须用它来玩MasterMind游戏。 此外,如果变化不容易看到,那可能不是很重要。

答案 5 :(得分:0)

我们进行了类似的测试,以了解我的应用程序如何负责Nexus5手机的电池消耗。

但遗憾的是,我们无法从任何工具中获得帮助,但主要是基于手动测试。

我们在应用程序中发现了一些怀疑需要更多电池消耗的模块。

  1. 使用GPS的位置感知模块。

  2. 使用网络连接的上传模块长时间运行后台操作。

  3. 视频创建模块,由于后台操作也会使CPU忙碌。 等等...

  4. 最后经过3-4轮测试,我们得到了一些数据趋势,我们能够确定哪个模块是电池消耗的罪魁祸首。

    如果有什么东西让CPU占用更多时间,基本上会有更多的电池消耗。所以我们可以想到具有后台操作,网络相关操作的模块。

    到目前为止,我找不到任何可以在特定应用程序中告知上述测试结果的工具。

    希望我的经验对原始问题中的要求声明有益。