Android 电源配置文件

电池用量信息源自电池用量统计信息和电源配置文件值。

电池用量统计信息

该框架通过跟踪设备组件在不同状态下花费的时间,自动确定电池用量统计信息。当组件(无线网络芯片组、移动无线装置、蓝牙、GPS、显示屏、CPU)更改状态(关闭/开启、闲置/全功率、低/高亮度等)时,控制服务会向框架 BatteryStats 服务报告。BatteryStats 会随时间推移收集信息并存储这些信息,以供重启后使用。该服务不直接跟踪电池电流消耗,而是收集计时信息,这些信息可用于估算不同组件的电池功耗。

该框架使用以下方法收集统计信息

  • 推送。知道组件更改的服务会将状态更改推送到 BatteryStats 服务。
  • 拉取。对于应用使用的 CPU 等组件,框架会在过渡点(例如,启动或停止 Activity)自动拉取数据以进行快照。

资源消耗与使用资源的应用关联。当多个应用同时使用某个资源(例如,阻止系统挂起的唤醒锁定)时,框架会在这些应用之间分配消耗,尽管不一定是均等分配。

为了避免丢失关机事件的用量统计信息(这可能表明电池功耗问题,即,关机是由于电池电量耗尽而发生的),框架大约每 30 分钟刷新一次统计信息。

电池用量统计信息完全由框架处理,不需要 OEM 修改。

电源配置文件值

注意:设备制造商必须提供组件电源配置文件,其中定义组件的电流消耗值以及组件随时间推移导致的大致电池耗电量。此配置文件在 platform/frameworks/base/core/res/res/xml/power_profile.xml 中定义。有关这些设置的指南,请参阅功率值

在电源配置文件中,功耗以毫安 (mA) 为单位指定,表示标称电压下的电流消耗,并且可以是微安 (uA) 为单位指定的小数值。该值应为电池消耗的毫安数,而不是适用于与电池消耗电流不对应的电源轨的值。

例如,显示屏电源配置文件指定在最低亮度下和在最高亮度下保持显示屏开启所需的电流毫安数。为了确定保持显示屏开启的功耗成本(即,显示屏组件消耗的电量),框架会跟踪在每个亮度级别花费的时间,然后将这些时间间隔乘以内插的显示屏亮度成本。

框架还会将每个应用的 CPU 时间乘以在特定速度下运行 CPU 所需的毫安数。此计算确定了通过执行 CPU 代码(作为前台应用的时间和包括后台活动的总时间分别报告)应用消耗多少电量的比较排名。