Android功率曲线
原文: https://source.android.com/devices/tech/power/
电池使用信息来自电池使用统计和功率曲线值。
电池使用统计
电源框架通过跟踪设备组件在不同状态下的花费时间来自动确定电池使用统计信息。当组件(Wi-Fi芯片组,蜂窝式无线电,蓝牙,GPS,显示器,CPU)状态改变(OFF / ON,空闲/全功率,低/高亮度等),控制服务就向框架层BatteryStats服务报告。BatteryStats会不停地收集信息并将其存储起来以便在重新启动时使用。BatteryStats服务不是直接跟踪电池电流消耗,而是收集可用于估算不同组件的电池消耗的定时信息。
电源框架使用以下方法收集统计信息:
- 推送: 组件变化感知服务将状态变化推送到BatteryStats服务。
- 提取: 对诸如应用程序使用的CPU之类的组件,框架会自动在转换点(如启动或停止活动)提取数据生成一份快照。
资源消耗与使用资源的应用程序相关联。当多个应用程序同时使用一份资源(例如阻止系统挂起的唤醒锁)时,框架会在这些应用程序之间扩大消耗,虽然不一定如此。
关机事件可能预示电池功耗问题(如由于电池电量达到零剩余容量而发生关闭)。为避免丢失关机事件的使用统计信息,框架大约每30分钟存储一次统计信息。
电池使用统计信息完全由框架处理,不需要OEM修改。
功率曲线值
注意:设备制造商必须提供组件功率配置文件,该配置文件定义组件的当前消耗值以及组件随时间推移的大致电量消耗。此配置文件在 platform/frameworks/base/core/res/res/xml/power_profile.xml中定义。有关这些设置的指导,请参阅功率值。
在功率曲线内,功耗以标称电压下的电流消耗的毫安(mA)指定,并且可以是以微安(uA)指定的小数值。该值应该是电池消耗的mA,而不是适用于与电池消耗的电流不对应的电源轨的值。
例如,显示器功率曲线指定使显示器保持在最小亮度和最大亮度所需的电流mA。为了确定显示器常开的功率消耗(即由显示组件消耗的电量),框架跟踪在每个亮度级别花费的时长,然后将这些时间间隔乘以内插的显示器亮度消耗。
该框架还将每个应用程序的CPU时间乘以以特定速度运行CPU所需的mA。此计算通过执行CPU代码建立应用程序消耗的电量比较排名(前台应用程序的时间和包括后台活动的总时间单独报告)。