summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/res/res/values/config.xml10
-rw-r--r--services/core/java/com/android/server/display/DisplayPowerController.java18
2 files changed, 19 insertions, 9 deletions
diff --git a/core/res/res/values/config.xml b/core/res/res/values/config.xml
index 8c89df842b7b..d33504de6542 100644
--- a/core/res/res/values/config.xml
+++ b/core/res/res/values/config.xml
@@ -1178,9 +1178,13 @@
<integer-array name="config_dynamicHysteresisLuxLevels">
</integer-array>
- <!-- This flag requires config_dozeSensorLuxLevels to have one or more entries and only affects
- the screen brightness while dozing. The screen brightness of a device is based off of a
- ring buffer of the last n seconds of ambient light sensor sample readings.
+ <!-- This flag requires config_dozeBrightnessBacklightValues to have two or more entries; it is
+ recommended that config_screenBrightnessDoze be greater than or equal to all these entries
+ since this value is used as the doze screen brightness until a new sensor sample is
+ acquired. This flag only affects the screen brightness while dozing.
+
+ The screen brightness of a device is based off of a ring buffer of the last n seconds of
+ ambient light sensor sample readings.
If this flag is true, then this buffer is cleared and the screen brightness is based off of
ambient light sensor readings that are obtained while the device is dozing. This mode may
diff --git a/services/core/java/com/android/server/display/DisplayPowerController.java b/services/core/java/com/android/server/display/DisplayPowerController.java
index dfd42543c078..fa144575a4f2 100644
--- a/services/core/java/com/android/server/display/DisplayPowerController.java
+++ b/services/core/java/com/android/server/display/DisplayPowerController.java
@@ -153,6 +153,9 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
// True if should use light sensor to automatically determine doze screen brightness.
private final boolean mAllowAutoBrightnessWhileDozingConfig;
+ // True if using only new sensor samples to automatically determine doze screen brightness.
+ private boolean mUseNewSensorSamplesForDoze;
+
// True if we should fade the screen while turning it off, false if we should play
// a stylish color fade animation instead.
private boolean mColorFadeFadesConfig;
@@ -345,10 +348,10 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
com.android.internal.R.array.config_dozeSensorLuxLevels);
int[] dozeBrightnessBacklightValues = resources.getIntArray(
com.android.internal.R.array.config_dozeBrightnessBacklightValues);
- boolean useNewSensorSamplesForDoze = resources.getBoolean(
+ mUseNewSensorSamplesForDoze = resources.getBoolean(
com.android.internal.R.bool.config_useNewSensorSamplesForDoze);
LuxLevels luxLevels = new LuxLevels(brightHysteresisLevels, darkHysteresisLevels,
- luxHysteresisLevels, useNewSensorSamplesForDoze, dozeSensorLuxLevels,
+ luxHysteresisLevels, mUseNewSensorSamplesForDoze, dozeSensorLuxLevels,
dozeBrightnessBacklightValues);
Spline screenAutoBrightnessSpline = createAutoBrightnessSpline(lux, screenBrightness);
@@ -671,10 +674,13 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
mAppliedAutoBrightness = false;
}
- // Use default brightness when dozing unless overridden.
- if (brightness < 0 && (state == Display.STATE_DOZE
- || state == Display.STATE_DOZE_SUSPEND)) {
- brightness = mScreenBrightnessDozeConfig;
+ // Use default brightness when dozing unless overridden or if collecting sensor samples.
+ if (state == Display.STATE_DOZE || state == Display.STATE_DOZE_SUSPEND) {
+ if (brightness < 0) {
+ brightness = mScreenBrightnessDozeConfig;
+ } else if (mUseNewSensorSamplesForDoze) {
+ brightness = Math.min(brightness, mScreenBrightnessDozeConfig);
+ }
}
// Apply manual brightness.