android 电量消耗检测原理 & 获取程序耗电排行

Android电量监控软件 Battery Monitor Widget

用ZDbox这款软件,能测量Android手机内各个应用的耗电情况。

耗电原因:

大部分的电都耗损在网络连接、GPS、传感器上;

1)完全没WiFi 的情况,开启wifi功能进行不断网络连接;

2)GPS 定位要比网络定位耗电;

3)应用程序中不当的使用wakelock()保持持续唤醒; Wakelock Detector 检测此种

问题,

耗电与后台服务的开启有直接的关系;


settings中获取手机电量排行的原理主要是1)通过读取电池记录文件来实现的

主要用到了android.os.BatteryStats这个隐藏类和com.android.internal这特殊的包;

2)读取CPU时间是通过解析/proc/pid/stat这个文件;


Android 电池消耗统计

原理: android 为不同硬件平台提供了相同的电池耗电统计方法和接口,各个平台根

据自身特性填写配置参数文件[power_profile.xml],android 系统根据读到的配置文件

中的值,计算各个项目的耗电量。


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

读取配置和计算各项静态平均功耗的类文件:PowerProfile.java
具体提供用电统计策略的系统接口类: BatteryStatsImpl.java
向BatteryStatsImpl 系统接口喂(提供)数据的系统服务: ActivityManagerService等,用于
统计生成各个app的用电情况;
显示电池消耗统计的实例: Setting ->fuelgauge -> PowerUsageSummary

系统级服务耗电 —— uid != 0 , uid == 1000
CPU 占用时间 * 平均CPU功耗
wakelock占用时间 * 平均wakelock功耗
数据传输量 * 数据传输平均功耗
WIFI on 时间 * wifi on 平均功耗
Sensor 使用时间 * sensor平均功耗 [包括GPS 和 其它sensor]
Scren on 时间
POWER_CPU_AWAKE : 关闭屏幕但未待机时平均功耗;
POWER_CPU_IDLE : 待机功耗


具体平台电池耗电统计不准确原因和修改方法:
1)power_profile.xml 配置参数残缺,部分参数与实际值不符合;

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值