我正在尝试找到一种方法,可以通知用户Android中的电池消耗率。 我想得到什么:
a)显示每个正在运行的应用程序的功耗率的应用程序。 b)应用程序中每个进程的功耗。
初步搜索表明,使用ndk可能有一个不能达到准确性的约束。
我对示例代码更感兴趣,实现目标的工作流程。
欢迎任何有效的意见/建议。
答案 0 :(得分:0)
在 /frameworks/base/core/res/res/xml/power_profile.xml (您可以通过从实际设备中获取框架jar获取)中,有一个值列表指定的功能。
使用此文件,您可以获取不同CPU速度或不同模块(蓝牙,wifi等)的电源消耗值以及电池容量。这就是系统如何衡量每个流程的消耗量。但请注意,还有更多的方法,包括历史数据和其他变量。
要执行精确测量,您需要执行系统跟踪(systrace工具),解析输出,将power_profile中的值分配给每个系统进程,然后估算消耗量......但是:
1)任务非常重要
2)有许多系统特定的功能,你甚至无法开始测量。你必须只依赖cpu速度,例如。如果app A处于活动状态,则读取cpu速度,并计算该时间段的总消耗量。
3)它仍然是近似值
4)每台设备的工作量(严格,即使是同名的设备也可能因其市场使用寿命期间产生的微小元件差异而具有不同的消耗量)
5)除非您可以压缩上述过程,否则无法在设备上完成。
6)您必须依赖设备制造商 - 它并非100%确保power_profile值正确。
<强>更新强> 显然有人做了[syspower库],从第一眼看就应该提供一些电池消耗的信息。不幸的是,它看起来并没有准备就绪。1