1.电池电量管理
Android的电量在Framework层都是以广播消息的形式发布的,发布者是BatteryService.java. BatteryService的原理就是利用UEventObserver的一个实例监测kernel层电量改变的事件。电量的驱动文件都放在/sys/class/power_supply目录下面,里面包括电压,电量百分比,AC/USB状态等信息。当电量改变时候JNI文件com_android_server_BatteryService.cpp会将/sys/class/power_supply里面的所有信息更新至BatteryService.java中
static void android_server_BatteryService_update(JNIEnv* env, jobject obj)
{
setBooleanField(env, obj, gPaths.acOnlinePath, gFieldIds.mAcOnline);
setBooleanField(env, obj, gPaths.usbOnlinePath, gFieldIds.mUsbOnline);
setBooleanField(env, obj, gPaths.batteryPresentPath, gFieldIds.mBatteryPresent);
setIntField(env, obj, gPaths.batteryCapacityPath, gFieldIds.mBatteryLevel);
setVoltageField(env, obj, gPaths.batteryVoltagePath, gFieldIds.mBatteryVoltage);
setIntField(env, obj, gPaths.batteryTemperaturePath, gFieldIds.mBatteryTemperature);
const int SIZE = 128;
char buf[