diff options
| author | 2020-12-08 10:10:58 +0000 | |
|---|---|---|
| committer | 2020-12-08 10:10:58 +0000 | |
| commit | a333c1fb5eefb1af414105bf4918a4e9b978415c (patch) | |
| tree | 43e4c549b177f536206219fd6cd8f799e676871e | |
| parent | 183d991f55741035ebae03bb0c45f645cdfc68ec (diff) | |
| parent | 2a747f002ff92728cd5b40178b38f642f51b7c2f (diff) | |
Merge "Persist screen brightness setting through upgrade" am: 2a747f002f
Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/1517740
MUST ONLY BE SUBMITTED BY AUTOMERGER
Change-Id: I75a7feb9ec86baf2a588c1187ec2632be64beaf0
| -rw-r--r-- | core/java/com/android/internal/BrightnessSynchronizer.java | 25 |
1 files changed, 23 insertions, 2 deletions
diff --git a/core/java/com/android/internal/BrightnessSynchronizer.java b/core/java/com/android/internal/BrightnessSynchronizer.java index 8ff3c497662c..e8ce0f2689e6 100644 --- a/core/java/com/android/internal/BrightnessSynchronizer.java +++ b/core/java/com/android/internal/BrightnessSynchronizer.java @@ -36,7 +36,7 @@ import java.util.Queue; * (new) system for storing the brightness. It has methods to convert between the two and also * observes for when one of the settings is changed and syncs this with the other. */ -public class BrightnessSynchronizer{ +public class BrightnessSynchronizer { private static final int MSG_UPDATE_FLOAT = 1; private static final int MSG_UPDATE_INT = 2; @@ -78,6 +78,26 @@ public class BrightnessSynchronizer{ mContext = context; mBrightnessSyncObserver = new BrightnessSyncObserver(mHandler); mBrightnessSyncObserver.startObserving(); + + // It is possible for the system to start up with the int and float values not + // synchronized. So we force an update to the int value, since float is the source + // of truth. Fallback to int value, if float is invalid. If both are invalid, use default + // float value from config. + final float currentFloatBrightness = getScreenBrightnessFloat(context); + final int currentIntBrightness = getScreenBrightnessInt(context); + + if (!Float.isNaN(currentFloatBrightness)) { + updateBrightnessIntFromFloat(currentFloatBrightness); + } else if (currentIntBrightness != -1) { + updateBrightnessFloatFromInt(currentIntBrightness); + } else { + final float defaultBrightness = mContext.getResources().getFloat( + com.android.internal.R.dimen.config_screenBrightnessSettingDefaultFloat); + Settings.System.putFloatForUser(mContext.getContentResolver(), + Settings.System.SCREEN_BRIGHTNESS_FLOAT, defaultBrightness, + UserHandle.USER_CURRENT); + + } } /** @@ -166,7 +186,8 @@ public class BrightnessSynchronizer{ private static int getScreenBrightnessInt(Context context) { return Settings.System.getIntForUser(context.getContentResolver(), - Settings.System.SCREEN_BRIGHTNESS, 0, UserHandle.USER_CURRENT); + Settings.System.SCREEN_BRIGHTNESS, PowerManager.BRIGHTNESS_INVALID, + UserHandle.USER_CURRENT); } private float mPreferredSettingValue; |