Loading services/java/com/android/server/HardwareService.java +19 −9 Original line number Diff line number Diff line Loading @@ -54,6 +54,16 @@ public class HardwareService extends IHardwareService.Stub { static final int LIGHT_FLASH_TIMED = 1; static final int LIGHT_FLASH_HARDWARE = 2; /** * Light brightness is managed by a user setting. */ static final int BRIGHTNESS_MODE_USER = 0; /** * Light brightness is managed by a light sensor. */ static final int BRIGHTNESS_MODE_SENSOR = 1; private final LinkedList<Vibration> mVibrations; private Vibration mCurrentVibration; Loading Loading @@ -266,21 +276,21 @@ public class HardwareService extends IHardwareService.Stub { } void setLightOff_UNCHECKED(int light) { setLight_native(mNativePointer, light, 0, LIGHT_FLASH_NONE, 0, 0); setLight_native(mNativePointer, light, 0, LIGHT_FLASH_NONE, 0, 0, 0); } void setLightBrightness_UNCHECKED(int light, int brightness) { void setLightBrightness_UNCHECKED(int light, int brightness, int brightnessMode) { int b = brightness & 0x000000ff; b = 0xff000000 | (b << 16) | (b << 8) | b; setLight_native(mNativePointer, light, b, LIGHT_FLASH_NONE, 0, 0); setLight_native(mNativePointer, light, b, LIGHT_FLASH_NONE, 0, 0, brightnessMode); } void setLightColor_UNCHECKED(int light, int color) { setLight_native(mNativePointer, light, color, LIGHT_FLASH_NONE, 0, 0); setLight_native(mNativePointer, light, color, LIGHT_FLASH_NONE, 0, 0, 0); } void setLightFlashing_UNCHECKED(int light, int color, int mode, int onMS, int offMS) { setLight_native(mNativePointer, light, color, mode, onMS, offMS); setLight_native(mNativePointer, light, color, mode, onMS, offMS, 0); } public void setAttentionLight(boolean on, int color) { Loading @@ -289,7 +299,7 @@ public class HardwareService extends IHardwareService.Stub { mAttentionLightOn = on; mPulsing = false; setLight_native(mNativePointer, LIGHT_ID_ATTENTION, color, LIGHT_FLASH_HARDWARE, on ? 3 : 0, 0); LIGHT_FLASH_HARDWARE, on ? 3 : 0, 0, 0); } } Loading @@ -304,7 +314,7 @@ public class HardwareService extends IHardwareService.Stub { if (!mAttentionLightOn && !mPulsing) { mPulsing = true; setLight_native(mNativePointer, LIGHT_ID_ATTENTION, 0x00ffffff, LIGHT_FLASH_HARDWARE, 7, 0); LIGHT_FLASH_HARDWARE, 7, 0, 0); mH.sendMessageDelayed(Message.obtain(mH, 1), 3000); } } Loading @@ -321,7 +331,7 @@ public class HardwareService extends IHardwareService.Stub { mPulsing = false; setLight_native(mNativePointer, LIGHT_ID_ATTENTION, mAttentionLightOn ? 0xffffffff : 0, LIGHT_FLASH_NONE, 0, 0); LIGHT_FLASH_NONE, 0, 0, 0); } } } Loading Loading @@ -484,7 +494,7 @@ public class HardwareService extends IHardwareService.Stub { private static native void finalize_native(int ptr); private static native void setLight_native(int ptr, int light, int color, int mode, int onMS, int offMS); int onMS, int offMS, int brightnessMode); private final Context mContext; private final PowerManager.WakeLock mWakeLock; Loading services/java/com/android/server/PowerManagerService.java +36 −11 Original line number Diff line number Diff line Loading @@ -1324,8 +1324,13 @@ class PowerManagerService extends IPowerManager.Stub enableLightSensor(on); if (!on) { // make sure button and key backlights are off too mHardware.setLightBrightness_UNCHECKED(HardwareService.LIGHT_ID_BUTTONS, 0); mHardware.setLightBrightness_UNCHECKED(HardwareService.LIGHT_ID_KEYBOARD, 0); int brightnessMode = (mUseSoftwareAutoBrightness ? HardwareService.BRIGHTNESS_MODE_SENSOR : HardwareService.BRIGHTNESS_MODE_USER); mHardware.setLightBrightness_UNCHECKED(HardwareService.LIGHT_ID_BUTTONS, 0, brightnessMode); mHardware.setLightBrightness_UNCHECKED(HardwareService.LIGHT_ID_KEYBOARD, 0, brightnessMode); // clear current value so we will update based on the new conditions // when the sensor is reenabled. mLightSensorValue = -1; Loading Loading @@ -1680,14 +1685,23 @@ class PowerManagerService extends IPowerManager.Stub } private void setLightBrightness(int mask, int value) { int brightnessMode = (mAutoBrightessEnabled ? HardwareService.BRIGHTNESS_MODE_SENSOR : HardwareService.BRIGHTNESS_MODE_USER); if ((mask & SCREEN_BRIGHT_BIT) != 0) { mHardware.setLightBrightness_UNCHECKED(HardwareService.LIGHT_ID_BACKLIGHT, value); mHardware.setLightBrightness_UNCHECKED(HardwareService.LIGHT_ID_BACKLIGHT, value, brightnessMode); } brightnessMode = (mUseSoftwareAutoBrightness ? HardwareService.BRIGHTNESS_MODE_SENSOR : HardwareService.BRIGHTNESS_MODE_USER); if ((mask & BUTTON_BRIGHT_BIT) != 0) { mHardware.setLightBrightness_UNCHECKED(HardwareService.LIGHT_ID_BUTTONS, value); mHardware.setLightBrightness_UNCHECKED(HardwareService.LIGHT_ID_BUTTONS, value, brightnessMode); } if ((mask & KEYBOARD_BRIGHT_BIT) != 0) { mHardware.setLightBrightness_UNCHECKED(HardwareService.LIGHT_ID_KEYBOARD, value); mHardware.setLightBrightness_UNCHECKED(HardwareService.LIGHT_ID_KEYBOARD, value, brightnessMode); } } Loading Loading @@ -1986,8 +2000,11 @@ class PowerManagerService extends IPowerManager.Stub startAnimation = true; } } else { int brightnessMode = (mAutoBrightessEnabled ? HardwareService.BRIGHTNESS_MODE_SENSOR : HardwareService.BRIGHTNESS_MODE_USER); mHardware.setLightBrightness_UNCHECKED(HardwareService.LIGHT_ID_BACKLIGHT, lcdValue); lcdValue, brightnessMode); } } if (ANIMATE_BUTTON_LIGHTS) { Loading @@ -1997,8 +2014,11 @@ class PowerManagerService extends IPowerManager.Stub startAnimation = true; } } else { int brightnessMode = (mUseSoftwareAutoBrightness ? HardwareService.BRIGHTNESS_MODE_SENSOR : HardwareService.BRIGHTNESS_MODE_USER); mHardware.setLightBrightness_UNCHECKED(HardwareService.LIGHT_ID_BUTTONS, buttonValue); buttonValue, brightnessMode); } if (ANIMATE_KEYBOARD_LIGHTS) { if (mKeyboardBrightness.setTargetLocked(keyboardValue, Loading @@ -2007,8 +2027,11 @@ class PowerManagerService extends IPowerManager.Stub startAnimation = true; } } else { int brightnessMode = (mUseSoftwareAutoBrightness ? HardwareService.BRIGHTNESS_MODE_SENSOR : HardwareService.BRIGHTNESS_MODE_USER); mHardware.setLightBrightness_UNCHECKED(HardwareService.LIGHT_ID_KEYBOARD, keyboardValue); keyboardValue, brightnessMode); } if (startAnimation) { if (mDebugLightSensor) { Loading Loading @@ -2329,10 +2352,12 @@ class PowerManagerService extends IPowerManager.Stub 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); mHardware.setLightBrightness_UNCHECKED(HardwareService.LIGHT_ID_BACKLIGHT, brightness); mHardware.setLightBrightness_UNCHECKED(HardwareService.LIGHT_ID_BACKLIGHT, brightness, HardwareService.BRIGHTNESS_MODE_USER); mHardware.setLightBrightness_UNCHECKED(HardwareService.LIGHT_ID_KEYBOARD, (mKeyboardVisible ? brightness : 0)); mHardware.setLightBrightness_UNCHECKED(HardwareService.LIGHT_ID_BUTTONS, brightness); (mKeyboardVisible ? brightness : 0), HardwareService.BRIGHTNESS_MODE_USER); mHardware.setLightBrightness_UNCHECKED(HardwareService.LIGHT_ID_BUTTONS, brightness, HardwareService.BRIGHTNESS_MODE_USER); long identity = Binder.clearCallingIdentity(); try { mBatteryStats.noteScreenBrightness(brightness); Loading services/jni/com_android_server_HardwareService.cpp +3 −2 Original line number Diff line number Diff line Loading @@ -101,7 +101,7 @@ static void finalize_native(JNIEnv *env, jobject clazz, int ptr) } static void setLight_native(JNIEnv *env, jobject clazz, int ptr, int light, int colorARGB, int flashMode, int onMS, int offMS) int light, int colorARGB, int flashMode, int onMS, int offMS, int brightnessMode) { Devices* devices = (Devices*)ptr; light_state_t state; Loading @@ -115,6 +115,7 @@ static void setLight_native(JNIEnv *env, jobject clazz, int ptr, state.flashMode = flashMode; state.flashOnMS = onMS; state.flashOffMS = offMS; state.brightnessMode = brightnessMode; devices->lights[light]->set_light(devices->lights[light], &state); } Loading @@ -134,7 +135,7 @@ static void vibratorOff(JNIEnv *env, jobject clazz) static JNINativeMethod method_table[] = { { "init_native", "()I", (void*)init_native }, { "finalize_native", "(I)V", (void*)finalize_native }, { "setLight_native", "(IIIIII)V", (void*)setLight_native }, { "setLight_native", "(IIIIIII)V", (void*)setLight_native }, { "vibratorOn", "(J)V", (void*)vibratorOn }, { "vibratorOff", "()V", (void*)vibratorOff } }; Loading Loading
services/java/com/android/server/HardwareService.java +19 −9 Original line number Diff line number Diff line Loading @@ -54,6 +54,16 @@ public class HardwareService extends IHardwareService.Stub { static final int LIGHT_FLASH_TIMED = 1; static final int LIGHT_FLASH_HARDWARE = 2; /** * Light brightness is managed by a user setting. */ static final int BRIGHTNESS_MODE_USER = 0; /** * Light brightness is managed by a light sensor. */ static final int BRIGHTNESS_MODE_SENSOR = 1; private final LinkedList<Vibration> mVibrations; private Vibration mCurrentVibration; Loading Loading @@ -266,21 +276,21 @@ public class HardwareService extends IHardwareService.Stub { } void setLightOff_UNCHECKED(int light) { setLight_native(mNativePointer, light, 0, LIGHT_FLASH_NONE, 0, 0); setLight_native(mNativePointer, light, 0, LIGHT_FLASH_NONE, 0, 0, 0); } void setLightBrightness_UNCHECKED(int light, int brightness) { void setLightBrightness_UNCHECKED(int light, int brightness, int brightnessMode) { int b = brightness & 0x000000ff; b = 0xff000000 | (b << 16) | (b << 8) | b; setLight_native(mNativePointer, light, b, LIGHT_FLASH_NONE, 0, 0); setLight_native(mNativePointer, light, b, LIGHT_FLASH_NONE, 0, 0, brightnessMode); } void setLightColor_UNCHECKED(int light, int color) { setLight_native(mNativePointer, light, color, LIGHT_FLASH_NONE, 0, 0); setLight_native(mNativePointer, light, color, LIGHT_FLASH_NONE, 0, 0, 0); } void setLightFlashing_UNCHECKED(int light, int color, int mode, int onMS, int offMS) { setLight_native(mNativePointer, light, color, mode, onMS, offMS); setLight_native(mNativePointer, light, color, mode, onMS, offMS, 0); } public void setAttentionLight(boolean on, int color) { Loading @@ -289,7 +299,7 @@ public class HardwareService extends IHardwareService.Stub { mAttentionLightOn = on; mPulsing = false; setLight_native(mNativePointer, LIGHT_ID_ATTENTION, color, LIGHT_FLASH_HARDWARE, on ? 3 : 0, 0); LIGHT_FLASH_HARDWARE, on ? 3 : 0, 0, 0); } } Loading @@ -304,7 +314,7 @@ public class HardwareService extends IHardwareService.Stub { if (!mAttentionLightOn && !mPulsing) { mPulsing = true; setLight_native(mNativePointer, LIGHT_ID_ATTENTION, 0x00ffffff, LIGHT_FLASH_HARDWARE, 7, 0); LIGHT_FLASH_HARDWARE, 7, 0, 0); mH.sendMessageDelayed(Message.obtain(mH, 1), 3000); } } Loading @@ -321,7 +331,7 @@ public class HardwareService extends IHardwareService.Stub { mPulsing = false; setLight_native(mNativePointer, LIGHT_ID_ATTENTION, mAttentionLightOn ? 0xffffffff : 0, LIGHT_FLASH_NONE, 0, 0); LIGHT_FLASH_NONE, 0, 0, 0); } } } Loading Loading @@ -484,7 +494,7 @@ public class HardwareService extends IHardwareService.Stub { private static native void finalize_native(int ptr); private static native void setLight_native(int ptr, int light, int color, int mode, int onMS, int offMS); int onMS, int offMS, int brightnessMode); private final Context mContext; private final PowerManager.WakeLock mWakeLock; Loading
services/java/com/android/server/PowerManagerService.java +36 −11 Original line number Diff line number Diff line Loading @@ -1324,8 +1324,13 @@ class PowerManagerService extends IPowerManager.Stub enableLightSensor(on); if (!on) { // make sure button and key backlights are off too mHardware.setLightBrightness_UNCHECKED(HardwareService.LIGHT_ID_BUTTONS, 0); mHardware.setLightBrightness_UNCHECKED(HardwareService.LIGHT_ID_KEYBOARD, 0); int brightnessMode = (mUseSoftwareAutoBrightness ? HardwareService.BRIGHTNESS_MODE_SENSOR : HardwareService.BRIGHTNESS_MODE_USER); mHardware.setLightBrightness_UNCHECKED(HardwareService.LIGHT_ID_BUTTONS, 0, brightnessMode); mHardware.setLightBrightness_UNCHECKED(HardwareService.LIGHT_ID_KEYBOARD, 0, brightnessMode); // clear current value so we will update based on the new conditions // when the sensor is reenabled. mLightSensorValue = -1; Loading Loading @@ -1680,14 +1685,23 @@ class PowerManagerService extends IPowerManager.Stub } private void setLightBrightness(int mask, int value) { int brightnessMode = (mAutoBrightessEnabled ? HardwareService.BRIGHTNESS_MODE_SENSOR : HardwareService.BRIGHTNESS_MODE_USER); if ((mask & SCREEN_BRIGHT_BIT) != 0) { mHardware.setLightBrightness_UNCHECKED(HardwareService.LIGHT_ID_BACKLIGHT, value); mHardware.setLightBrightness_UNCHECKED(HardwareService.LIGHT_ID_BACKLIGHT, value, brightnessMode); } brightnessMode = (mUseSoftwareAutoBrightness ? HardwareService.BRIGHTNESS_MODE_SENSOR : HardwareService.BRIGHTNESS_MODE_USER); if ((mask & BUTTON_BRIGHT_BIT) != 0) { mHardware.setLightBrightness_UNCHECKED(HardwareService.LIGHT_ID_BUTTONS, value); mHardware.setLightBrightness_UNCHECKED(HardwareService.LIGHT_ID_BUTTONS, value, brightnessMode); } if ((mask & KEYBOARD_BRIGHT_BIT) != 0) { mHardware.setLightBrightness_UNCHECKED(HardwareService.LIGHT_ID_KEYBOARD, value); mHardware.setLightBrightness_UNCHECKED(HardwareService.LIGHT_ID_KEYBOARD, value, brightnessMode); } } Loading Loading @@ -1986,8 +2000,11 @@ class PowerManagerService extends IPowerManager.Stub startAnimation = true; } } else { int brightnessMode = (mAutoBrightessEnabled ? HardwareService.BRIGHTNESS_MODE_SENSOR : HardwareService.BRIGHTNESS_MODE_USER); mHardware.setLightBrightness_UNCHECKED(HardwareService.LIGHT_ID_BACKLIGHT, lcdValue); lcdValue, brightnessMode); } } if (ANIMATE_BUTTON_LIGHTS) { Loading @@ -1997,8 +2014,11 @@ class PowerManagerService extends IPowerManager.Stub startAnimation = true; } } else { int brightnessMode = (mUseSoftwareAutoBrightness ? HardwareService.BRIGHTNESS_MODE_SENSOR : HardwareService.BRIGHTNESS_MODE_USER); mHardware.setLightBrightness_UNCHECKED(HardwareService.LIGHT_ID_BUTTONS, buttonValue); buttonValue, brightnessMode); } if (ANIMATE_KEYBOARD_LIGHTS) { if (mKeyboardBrightness.setTargetLocked(keyboardValue, Loading @@ -2007,8 +2027,11 @@ class PowerManagerService extends IPowerManager.Stub startAnimation = true; } } else { int brightnessMode = (mUseSoftwareAutoBrightness ? HardwareService.BRIGHTNESS_MODE_SENSOR : HardwareService.BRIGHTNESS_MODE_USER); mHardware.setLightBrightness_UNCHECKED(HardwareService.LIGHT_ID_KEYBOARD, keyboardValue); keyboardValue, brightnessMode); } if (startAnimation) { if (mDebugLightSensor) { Loading Loading @@ -2329,10 +2352,12 @@ class PowerManagerService extends IPowerManager.Stub 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); mHardware.setLightBrightness_UNCHECKED(HardwareService.LIGHT_ID_BACKLIGHT, brightness); mHardware.setLightBrightness_UNCHECKED(HardwareService.LIGHT_ID_BACKLIGHT, brightness, HardwareService.BRIGHTNESS_MODE_USER); mHardware.setLightBrightness_UNCHECKED(HardwareService.LIGHT_ID_KEYBOARD, (mKeyboardVisible ? brightness : 0)); mHardware.setLightBrightness_UNCHECKED(HardwareService.LIGHT_ID_BUTTONS, brightness); (mKeyboardVisible ? brightness : 0), HardwareService.BRIGHTNESS_MODE_USER); mHardware.setLightBrightness_UNCHECKED(HardwareService.LIGHT_ID_BUTTONS, brightness, HardwareService.BRIGHTNESS_MODE_USER); long identity = Binder.clearCallingIdentity(); try { mBatteryStats.noteScreenBrightness(brightness); Loading
services/jni/com_android_server_HardwareService.cpp +3 −2 Original line number Diff line number Diff line Loading @@ -101,7 +101,7 @@ static void finalize_native(JNIEnv *env, jobject clazz, int ptr) } static void setLight_native(JNIEnv *env, jobject clazz, int ptr, int light, int colorARGB, int flashMode, int onMS, int offMS) int light, int colorARGB, int flashMode, int onMS, int offMS, int brightnessMode) { Devices* devices = (Devices*)ptr; light_state_t state; Loading @@ -115,6 +115,7 @@ static void setLight_native(JNIEnv *env, jobject clazz, int ptr, state.flashMode = flashMode; state.flashOnMS = onMS; state.flashOffMS = offMS; state.brightnessMode = brightnessMode; devices->lights[light]->set_light(devices->lights[light], &state); } Loading @@ -134,7 +135,7 @@ static void vibratorOff(JNIEnv *env, jobject clazz) static JNINativeMethod method_table[] = { { "init_native", "()I", (void*)init_native }, { "finalize_native", "(I)V", (void*)finalize_native }, { "setLight_native", "(IIIIII)V", (void*)setLight_native }, { "setLight_native", "(IIIIIII)V", (void*)setLight_native }, { "vibratorOn", "(J)V", (void*)vibratorOn }, { "vibratorOff", "()V", (void*)vibratorOff } }; Loading