Android4.2电池消耗统计原理分析

一.            Android4 电池耗电统计原理概括

        Android4系统为不同厂商的硬件平台提供了相同的电池耗电统计方法和接口,各个平台根据自身特性填写配置参数文件【power_profile.xml】,android系统运行时根据读取到的配置文件中的值,计算各个项目的耗电量。其中:

功耗参数配置文件:power_profile.xml;

读取配置和计算各项静态平均功耗的类:PowerProfile.java

具体提供用电统计策略的系统接口类:BatteryStatsImpl.java

【向BatteryStatsImpl 系统接口喂数据的系统服务:ActivityManagerService等。用于统计生成各个app和杂项子系统的用电情况】

显示电池消耗统计的实例:Setting --->  fuelgauge  --->  PowerUsageSummary

二.            Android4原生油量表统计列表描述【PowerUsageSummary】

       该界面列表显示了最后一次电池充满后,无充电的总时间内,各应用程序和各杂项子系统消耗电量的情况,列表按耗电比例降序排列。

如图:


共包括如下部分:

1.      各应用程序【uid != 0 ,含uid == 1000的标签为“Android系统”的系统级服务】的耗电统计:

   各应用的耗电值具体包含如下项,

(最后一次充满电后,未充电的时长内,该应用的占用CPU总时间 * 平均cpu功耗) + (最后一次充满电后,未充电的时长内,该应用占用wakelock的总时间*平均wakelock功耗)+ (最后一次充满电后,未充电的时长内,该应用总的数据传输量 * 数据传输平均功耗) +  (最后一次充满电后,未充电的时长内,该应用维持WIFI On的总时间 * Wifi On的平均功耗) +  (最后一次充满电后,未充电的时长内,该应用维持WIFI scan的总时间 * Wifi Scan的平均功耗) + (最后一次充满电后,未充电的时长内,该应用使用sensor的时间 * sensor平均功耗【包括GPS和其他sensor】)

SYSTEM_UID = 1000PHONE_UID = 1001SHELL_UID = 2000

WIFI_UID = 1010BLUETOOTH_UID = 1002

MEDIA_RW_GID = 1023; MEDIA_UID = 1013;

用户apk应用的uid > 10000

比如:PVS游戏的用电细节描述【主要为占用CPU耗电】

 

 

 

微信应用后台服务的耗电细节【主要是占用wakelock唤醒锁时间而造成耗电】:


2.      Android OS内核进程【uid==0】的耗电统计:

   ((最后一次充满电后,未充电的时长内,机器总的运行时间) – ( 最后一次充满电后,未充电的时长内,应用占用的wakelock总时间) – (最后一次充满电后,未充电的时长内,ScreenOn总时间)) * (POWER_CPU_AWAKE)

【其中POWER_CPU_AWAKE为关闭屏幕但未待机时的平均功耗】

 

 

3.      杂项子系统的耗电统计【包括:通话,蓝牙,Wi-Fi On,Screen使用,RadioOn,关屏后待机的idle耗电等与硬件平台相关且相对独立的耗电项】:

   通话耗电:((最后一次充满电后,未充电的时长内总的通话时间) * 平均通话功耗)

【其中平均通话功耗对应配置文件中的POWER_RADIO_ACTIVE

 

Screen使用耗电:(ScreenOn时间 * 单纯ScreenOn平均功耗) +(各亮度等级下的背光功耗 * 各个亮度等级显示时间)

 

Radio使用耗电:(各信号强度等级下的POWER_RADIO_ON * 各信号强度等级持续的时间 ) + (无线扫描时间 * 平均的无线扫描功耗值POWER_RADIO_SCANNING)

 

Wi-Fi使用耗电:((最后一次充满电后,未充电的时长内,总的Wi-Fi Running时间)– 应用占用的Wi-Fi Running时间) *(平均POWER_WIFI_ON)

 

蓝牙使用耗电:(最后一次充满电后,未充电的时长内总的BT On时间) *(平均POWER_BLUETOOTH_ON)  +  (btPing次数 * 平均POWER_BLUETOOTH_AT_CMD)

待机耗电:((最后一次充满电后,未充电的时长内,总运行时间 )– ScreenOn时间)  * (平均POWER_CPU_IDLE功耗)


三.            Android省电策略:

    根据如上的分析,Android系统平台可控的省电关键点:

1.控制待机功耗【待机模式下关掉不必要的外设,一般平台的待机功耗可以控制在3-5ma】

2.框架层中控制Android的partial型wakelock锁的使用【partial型wakelock锁会强制系统无法进待机,表面屏幕关闭的情况下,系统还在运行耗电

3.系统层控制RTC Alarm 唤醒系统的频率。

4.提醒用户进入省电模式【比如关闭网络设备,调低屏幕亮度等】

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值