文件位置:frameworks\base\services\core\java\com\android\server\BatteryService.java
/**
* Synchronize on BatteryService.
*/
public void updateLightsLocked() {
final int level = mBatteryProps.batteryLevel;
final int status = mBatteryProps.batteryStatus;
if (mIPOBoot)
{
//Get led status in IPO mode
getIpoLedStatus();
}
if (level < mLowBatteryWarningLevel) {
if (status == BatteryManager.BATTERY_STATUS_CHARGING) {
updateLedStatus();
// Solid red when battery is charging
//wdh_changed
Log.d(TAG, "level=" + level+"status="+status);
mBatteryLight.setColor(mBatteryMediumARGB);
} else {
LowLevelFlag = true;
updateLedStatus();
// Flash red when battery is low and not charging
mBatteryLight.setFlashing(mBatteryLowARGB, Light.LIGHT_FLASH_TIMED,
mBatteryLedOn, mBatteryLedOff);
}
} else if (status == BatteryManager.BATTERY_STATUS_CHARGING
|| status == BatteryManager.BATTERY_STATUS_FULL) {
if (status == BatteryManager.BATTERY_STATUS_FULL || level >= 90) {
updateLedStatus();
// Solid green when full or charging and nearly full
mBatteryLight.setColor(mBatteryFullARGB);
} else {
updateLedStatus();
// Solid orange when charging and halfway full
mBatteryLight.setColor(mBatteryMediumARGB);
}
} else {
if (ipo_led_on && mIPOBoot) {
if (status == BatteryManager.BATTERY_STATUS_FULL || level >= 90) {
mBatteryLight.setColor(mBatteryFullARGB);
}
else {
mBatteryLight.setColor(mBatteryMediumARGB);
}
mIPOBoot = false;
ipo_led_on = false;
}
// No lights if not charging and not low
mBatteryLight.turnOff();
}
}
上面是更新充电指示灯的状态, mBatteryLight.setColor(mBatteryFullARGB)是设置指示灯颜色
mBatteryLowARGB:低电量颜色,也是低电量警告颜色
mBatteryMediumARGB:中电量颜色,一般是低电量以上到90%电量之间,充电显示此颜色
mBatteryFullARGB:满电颜色,一般是充电状态下,90%到100%之间显示此颜色
mBatteryLight.setFlashing(mBatteryLowARGB, Light.LIGHT_FLASH_TIMED,
mBatteryLedOn, mBatteryLedOff);此方法是低电量,闪灯状态,闪灯警告