里面有一部分关于电池电量动态变化的回答。
电池最开始的检测代码实在frameworks/base/services/java/com/android/server
/BatteryService.java中,这里使用的是android中switch机制。监视的位置是(adb
shell)/sys/class/power_supply,里面看各家自己的驱动是怎么实现的,具体就是一些状态值,比如电源在不在,电池电量,电池
温度等。里面的数值一旦有变化,就会通知BatteryService.java去读,BatteryService.java中有一个native方法
通过jni去读取这些状态值,并在jni直接对BatteryService.java的一些属性(电源在不在,电池电量,电池温度等)赋
值,BatteryService.java根据这些值做相应的操作,会有intent发出,接收的地方根据这些intent中所附带的值进行系统图标的
变化。比如,
电源在,代表充电,根据电量选择不同的动画,满电了,就停止动画。
电源不在,就是耗电过程,根据电量去显示不同的图片(只有四五张图片吧,是每掉多少电后才换一张图,如下图)。
由图可知,最后电池红的的时候还有4的电量,所以没有关机。BatteryService.java中有几种关机检测,电量为零或者温度过高都会直接关机。
其实类比电池的检测,可以猜测比如耳机插拔等操作过程了。
阅读(1151) | 评论(0) | 转发(0) |