From 5dbd4aad809e6fec51df62280bcc1bfe05cc7df5 Mon Sep 17 00:00:00 2001 From: Jason Monk Date: Sun, 7 Feb 2016 13:13:39 -0500 Subject: [PATCH 1/2] SysUI Tuner: Night mode v3 TwilightService: - Add support for locking on/off twilight globally - Change twilight state to have float amount rather than having clients calculate it using the sunrise/set values - State controlled through secure setting - Override mode which locks to a state for a couple hours then resets - Add broadcast for SysUI to listen to Brightness/Power: - Updates to handle TwilightService changes - Added secure setting to control whether or not to use twilight when calculating brightness. Tuner: - UI Overhall - NightModeController will set the values of the custom color matrix taking into account the current twilight service state and any custom calibration set by the user. - Probably other stuff. Change-Id: I213f1f76a143e711c507b2ba7d784f581bfc32b4 --- .../display/DisplayManagerInternal.java | 10 +- core/java/android/provider/Settings.java | 46 +++ core/res/AndroidManifest.xml | 2 + .../{ic_colorize.xml => ic_night_mode.xml} | 2 +- .../res/drawable/ic_night_mode_disabled.xml | 24 ++ ...rence_matrix.xml => calibrate_sliders.xml} | 7 - ...x_settings.xml => night_mode_settings.xml} | 0 packages/SystemUI/res/values/strings.xml | 49 ++- .../SystemUI/res/xml/color_and_appearance.xml | 30 ++ packages/SystemUI/res/xml/night_mode.xml | 47 +++ packages/SystemUI/res/xml/tuner_prefs.xml | 4 +- .../src/com/android/systemui/qs/QSTile.java | 4 +- .../qs/customize/TileQueryHelper.java | 4 +- .../systemui/statusbar/phone/QSTileHost.java | 16 +- .../statusbar/policy/DisplayController.java | 193 ---------- .../statusbar/policy/NightModeController.java | 250 +++++++++++++ .../systemui/tuner/CalibratePreference.java | 25 ++ .../tuner/ColorAndAppearanceFragment.java | 202 +++++++++++ .../systemui/tuner/ColorMatrixFragment.java | 341 ------------------ .../systemui/tuner/ColorMatrixTile.java | 107 ------ .../systemui/tuner/NightModeFragment.java | 192 ++++++++++ .../android/systemui/tuner/NightModeTile.java | 92 +++++ .../AutomaticBrightnessController.java | 66 +--- .../display/DisplayPowerController.java | 2 +- .../server/power/PowerManagerService.java | 11 + .../server/twilight/TwilightManager.java | 1 + .../server/twilight/TwilightService.java | 214 +++++++++-- .../server/twilight/TwilightState.java | 57 +-- 28 files changed, 1195 insertions(+), 803 deletions(-) rename packages/SystemUI/res/drawable/{ic_colorize.xml => ic_night_mode.xml} (95%) create mode 100644 packages/SystemUI/res/drawable/ic_night_mode_disabled.xml rename packages/SystemUI/res/layout/{preference_matrix.xml => calibrate_sliders.xml} (94%) rename packages/SystemUI/res/layout/{color_matrix_settings.xml => night_mode_settings.xml} (100%) create mode 100644 packages/SystemUI/res/xml/color_and_appearance.xml create mode 100644 packages/SystemUI/res/xml/night_mode.xml delete mode 100644 packages/SystemUI/src/com/android/systemui/statusbar/policy/DisplayController.java create mode 100644 packages/SystemUI/src/com/android/systemui/statusbar/policy/NightModeController.java create mode 100644 packages/SystemUI/src/com/android/systemui/tuner/CalibratePreference.java create mode 100644 packages/SystemUI/src/com/android/systemui/tuner/ColorAndAppearanceFragment.java delete mode 100644 packages/SystemUI/src/com/android/systemui/tuner/ColorMatrixFragment.java delete mode 100644 packages/SystemUI/src/com/android/systemui/tuner/ColorMatrixTile.java create mode 100644 packages/SystemUI/src/com/android/systemui/tuner/NightModeFragment.java create mode 100644 packages/SystemUI/src/com/android/systemui/tuner/NightModeTile.java diff --git a/core/java/android/hardware/display/DisplayManagerInternal.java b/core/java/android/hardware/display/DisplayManagerInternal.java index aa697eadcbca2..13ba6cc37d225 100644 --- a/core/java/android/hardware/display/DisplayManagerInternal.java +++ b/core/java/android/hardware/display/DisplayManagerInternal.java @@ -211,6 +211,9 @@ public abstract class DisplayManagerInternal { public int dozeScreenBrightness; public int dozeScreenState; + // If true, use twilight to affect the brightness. + public boolean useTwilight; + public DisplayPowerRequest() { policy = POLICY_BRIGHT; useProximitySensor = false; @@ -242,6 +245,7 @@ public abstract class DisplayManagerInternal { boostScreenBrightness = other.boostScreenBrightness; dozeScreenBrightness = other.dozeScreenBrightness; dozeScreenState = other.dozeScreenState; + useTwilight = other.useTwilight; } @Override @@ -262,7 +266,8 @@ public abstract class DisplayManagerInternal { && lowPowerMode == other.lowPowerMode && boostScreenBrightness == other.boostScreenBrightness && dozeScreenBrightness == other.dozeScreenBrightness - && dozeScreenState == other.dozeScreenState; + && dozeScreenState == other.dozeScreenState + && useTwilight == other.useTwilight; } @Override @@ -282,7 +287,8 @@ public abstract class DisplayManagerInternal { + ", lowPowerMode=" + lowPowerMode + ", boostScreenBrightness=" + boostScreenBrightness + ", dozeScreenBrightness=" + dozeScreenBrightness - + ", dozeScreenState=" + Display.stateToString(dozeScreenState); + + ", dozeScreenState=" + Display.stateToString(dozeScreenState) + + ", useTwilight=" + useTwilight; } public static String policyToString(int policy) { diff --git a/core/java/android/provider/Settings.java b/core/java/android/provider/Settings.java index 5ab2b001614a0..46048e4ad48b0 100755 --- a/core/java/android/provider/Settings.java +++ b/core/java/android/provider/Settings.java @@ -5921,6 +5921,52 @@ public final class Settings { public static final String CAMERA_DOUBLE_TAP_POWER_GESTURE_DISABLED = "camera_double_tap_power_gesture_disabled"; + /** + + /** + * Behavior of twilight on the device. + * One of {@link #TWILIGHT_MODE_LOCKED_OFF}, {@link #TWILIGHT_MODE_LOCKED_ON} + * or {@link #TWILIGHT_MODE_AUTO}. + * @hide + */ + public static final String TWILIGHT_MODE = "twilight_mode"; + + /** + * Twilight mode always off. + * @hide + */ + public static final int TWILIGHT_MODE_LOCKED_OFF = 0; + + /** + * Twilight mode always on. + * @hide + */ + public static final int TWILIGHT_MODE_LOCKED_ON = 1; + + /** + * Twilight mode auto. + * @hide + */ + public static final int TWILIGHT_MODE_AUTO = 2; + + /** + * Twilight mode auto, temporarily overriden to on. + * @hide + */ + public static final int TWILIGHT_MODE_AUTO_OVERRIDE_OFF = 3; + + /** + * Twilight mode auto, temporarily overriden to off. + * @hide + */ + public static final int TWILIGHT_MODE_AUTO_OVERRIDE_ON = 4; + + /** + * Whether brightness should automatically adjust based on twilight state. + * @hide + */ + public static final String BRIGHTNESS_USE_TWILIGHT = "brightness_use_twilight"; + /** * This are the settings to be backed up. * diff --git a/core/res/AndroidManifest.xml b/core/res/AndroidManifest.xml index 9b989b94d49f3..bb31a02071487 100644 --- a/core/res/AndroidManifest.xml +++ b/core/res/AndroidManifest.xml @@ -452,6 +452,8 @@ + + diff --git a/packages/SystemUI/res/drawable/ic_colorize.xml b/packages/SystemUI/res/drawable/ic_night_mode.xml similarity index 95% rename from packages/SystemUI/res/drawable/ic_colorize.xml rename to packages/SystemUI/res/drawable/ic_night_mode.xml index 79fd6d907264f..caa7a47ee5b46 100644 --- a/packages/SystemUI/res/drawable/ic_colorize.xml +++ b/packages/SystemUI/res/drawable/ic_night_mode.xml @@ -1,5 +1,5 @@ + + + diff --git a/packages/SystemUI/res/layout/preference_matrix.xml b/packages/SystemUI/res/layout/calibrate_sliders.xml similarity index 94% rename from packages/SystemUI/res/layout/preference_matrix.xml rename to packages/SystemUI/res/layout/calibrate_sliders.xml index 1f6066e5eaf00..0dec8a18caa4d 100644 --- a/packages/SystemUI/res/layout/preference_matrix.xml +++ b/packages/SystemUI/res/layout/calibrate_sliders.xml @@ -94,11 +94,4 @@ android:layout_weight="1" /> -