LightsService cleanup:
Add Light subclass to replace LightsService light setting methods
Remove LightsService.setAttentionLight() and LightsService.pulseBreathingLight()
Add support for Wifi and Bluetooth lights
Change-Id: I707f53cda27481c25649f402567a665d52e9cb62
Signed-off-by: Mike Lockwood <lockwood@android.com>
diff --git a/services/java/com/android/server/PowerManagerService.java b/services/java/com/android/server/PowerManagerService.java
index ca7d94a..8584d74 100644
--- a/services/java/com/android/server/PowerManagerService.java
+++ b/services/java/com/android/server/PowerManagerService.java
@@ -183,6 +183,10 @@
private Intent mScreenOnIntent;
private LightsService mLightsService;
private Context mContext;
+ private LightsService.Light mLcdLight;
+ private LightsService.Light mButtonLight;
+ private LightsService.Light mKeyboardLight;
+ private LightsService.Light mAttentionLight;
private UnsynchronizedWakeLock mBroadcastWakeLock;
private UnsynchronizedWakeLock mStayOnWhilePluggedInScreenDimLock;
private UnsynchronizedWakeLock mStayOnWhilePluggedInPartialLock;
@@ -428,6 +432,11 @@
mBatteryStats = BatteryStatsService.getService();
mBatteryService = battery;
+ mLcdLight = lights.getLight(LightsService.LIGHT_ID_BACKLIGHT);
+ mButtonLight = lights.getLight(LightsService.LIGHT_ID_BUTTONS);
+ mKeyboardLight = lights.getLight(LightsService.LIGHT_ID_KEYBOARD);
+ mAttentionLight = lights.getLight(LightsService.LIGHT_ID_ATTENTION);
+
mHandlerThread = new HandlerThread("PowerManagerService") {
@Override
protected void onLooperPrepared() {
@@ -1362,13 +1371,8 @@
enableLightSensor(on);
if (!on) {
// make sure button and key backlights are off too
- int brightnessMode = (mUseSoftwareAutoBrightness
- ? LightsService.BRIGHTNESS_MODE_SENSOR
- : LightsService.BRIGHTNESS_MODE_USER);
- mLightsService.setLightBrightness(LightsService.LIGHT_ID_BUTTONS, 0,
- brightnessMode);
- mLightsService.setLightBrightness(LightsService.LIGHT_ID_KEYBOARD, 0,
- brightnessMode);
+ mButtonLight.turnOff();
+ mKeyboardLight.turnOff();
// clear current value so we will update based on the new conditions
// when the sensor is reenabled.
mLightSensorValue = -1;
@@ -1723,19 +1727,13 @@
? LightsService.BRIGHTNESS_MODE_SENSOR
: LightsService.BRIGHTNESS_MODE_USER);
if ((mask & SCREEN_BRIGHT_BIT) != 0) {
- mLightsService.setLightBrightness(LightsService.LIGHT_ID_BACKLIGHT, value,
- brightnessMode);
+ mLcdLight.setBrightness(value, brightnessMode);
}
- brightnessMode = (mUseSoftwareAutoBrightness
- ? LightsService.BRIGHTNESS_MODE_SENSOR
- : LightsService.BRIGHTNESS_MODE_USER);
if ((mask & BUTTON_BRIGHT_BIT) != 0) {
- mLightsService.setLightBrightness(LightsService.LIGHT_ID_BUTTONS, value,
- brightnessMode);
+ mButtonLight.setBrightness(value);
}
if ((mask & KEYBOARD_BRIGHT_BIT) != 0) {
- mLightsService.setLightBrightness(LightsService.LIGHT_ID_KEYBOARD, value,
- brightnessMode);
+ mKeyboardLight.setBrightness(value);
}
}
@@ -2083,8 +2081,7 @@
int brightnessMode = (mAutoBrightessEnabled
? LightsService.BRIGHTNESS_MODE_SENSOR
: LightsService.BRIGHTNESS_MODE_USER);
- mLightsService.setLightBrightness(LightsService.LIGHT_ID_BACKLIGHT,
- lcdValue, brightnessMode);
+ mLcdLight.setBrightness(lcdValue, brightnessMode);
}
}
if (mButtonBrightnessOverride < 0) {
@@ -2095,11 +2092,7 @@
startAnimation = true;
}
} else {
- int brightnessMode = (mUseSoftwareAutoBrightness
- ? LightsService.BRIGHTNESS_MODE_SENSOR
- : LightsService.BRIGHTNESS_MODE_USER);
- mLightsService.setLightBrightness(LightsService.LIGHT_ID_BUTTONS,
- buttonValue, brightnessMode);
+ mButtonLight.setBrightness(buttonValue);
}
}
if (mButtonBrightnessOverride < 0 || !mKeyboardVisible) {
@@ -2110,11 +2103,7 @@
startAnimation = true;
}
} else {
- int brightnessMode = (mUseSoftwareAutoBrightness
- ? LightsService.BRIGHTNESS_MODE_SENSOR
- : LightsService.BRIGHTNESS_MODE_USER);
- mLightsService.setLightBrightness(LightsService.LIGHT_ID_KEYBOARD,
- keyboardValue, brightnessMode);
+ mKeyboardLight.setBrightness(keyboardValue);
}
}
if (startAnimation) {
@@ -2443,12 +2432,9 @@
mContext.enforceCallingOrSelfPermission(android.Manifest.permission.DEVICE_POWER, null);
// Don't let applications turn the screen all the way off
brightness = Math.max(brightness, Power.BRIGHTNESS_DIM);
- mLightsService.setLightBrightness(LightsService.LIGHT_ID_BACKLIGHT, brightness,
- LightsService.BRIGHTNESS_MODE_USER);
- mLightsService.setLightBrightness(LightsService.LIGHT_ID_KEYBOARD,
- (mKeyboardVisible ? brightness : 0), LightsService.BRIGHTNESS_MODE_USER);
- mLightsService.setLightBrightness(LightsService.LIGHT_ID_BUTTONS, brightness,
- LightsService.BRIGHTNESS_MODE_USER);
+ mLcdLight.setBrightness(brightness);
+ mKeyboardLight.setBrightness(mKeyboardVisible ? brightness : 0);
+ mButtonLight.setBrightness(brightness);
long identity = Binder.clearCallingIdentity();
try {
mBatteryStats.noteScreenBrightness(brightness);
@@ -2478,7 +2464,7 @@
public void setAttentionLight(boolean on, int color) {
mContext.enforceCallingOrSelfPermission(android.Manifest.permission.DEVICE_POWER, null);
- mLightsService.setAttentionLight(on, color);
+ mAttentionLight.setFlashing(color, LightsService.LIGHT_FLASH_HARDWARE, (on ? 3 : 0), 0);
}
private void enableProximityLockLocked() {