diff options
| author | 2018-07-12 18:42:53 -0700 | |
|---|---|---|
| committer | 2018-07-12 18:42:53 -0700 | |
| commit | 53c6e2986ab9ee0358397653af555e05a6f83f6e (patch) | |
| tree | 967b262dd20a39e2e7b87092752c56779edaf67a | |
| parent | ef6a5bf7559b984090be347c221d382992e432bf (diff) | |
Activate night mode when battery saver
This as originally in SysUI but UiModeManagerService is cleaner way
of doing it. This way SysUI won't have to keep track of user preferences
or override user settings.
Test: manually toggle battery saver and observe QS
Bug: 104205224
Change-Id: Ic0d24e36eec2ad3b66b32960bfc5e659470044b1
| -rw-r--r-- | services/core/java/com/android/server/UiModeManagerService.java | 20 |
1 files changed, 17 insertions, 3 deletions
diff --git a/services/core/java/com/android/server/UiModeManagerService.java b/services/core/java/com/android/server/UiModeManagerService.java index c29fc7f753a1..cb03255923cf 100644 --- a/services/core/java/com/android/server/UiModeManagerService.java +++ b/services/core/java/com/android/server/UiModeManagerService.java @@ -82,6 +82,7 @@ final class UiModeManagerService extends SystemService { private boolean mCarModeEnabled = false; private boolean mCharging = false; + private boolean mPowerSave = false; private int mDefaultUiModeType; private boolean mCarModeKeepsScreenOn; private boolean mDeskModeKeepsScreenOn; @@ -160,7 +161,14 @@ final class UiModeManagerService extends SystemService { private final BroadcastReceiver mBatteryReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { - mCharging = (intent.getIntExtra(BatteryManager.EXTRA_PLUGGED, 0) != 0); + switch (intent.getAction()) { + case Intent.ACTION_BATTERY_CHANGED: + mCharging = intent.getIntExtra(BatteryManager.EXTRA_PLUGGED, 0) != 0; + break; + case PowerManager.ACTION_POWER_SAVE_MODE_CHANGING: + mPowerSave = intent.getBooleanExtra(PowerManager.EXTRA_POWER_SAVE_MODE, false); + break; + } synchronized (mLock) { if (mSystemReady) { updateLocked(0, 0); @@ -203,8 +211,9 @@ final class UiModeManagerService extends SystemService { context.registerReceiver(mDockModeReceiver, new IntentFilter(Intent.ACTION_DOCK_EVENT)); - context.registerReceiver(mBatteryReceiver, - new IntentFilter(Intent.ACTION_BATTERY_CHANGED)); + IntentFilter batteryFilter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED); + batteryFilter.addAction(PowerManager.ACTION_POWER_SAVE_MODE_CHANGING); + context.registerReceiver(mBatteryReceiver, batteryFilter); mConfiguration.setToDefaults(); @@ -457,6 +466,11 @@ final class UiModeManagerService extends SystemService { uiMode |= mNightMode << 4; } + if (mPowerSave && !mNightModeLocked) { + uiMode &= ~Configuration.UI_MODE_NIGHT_NO; + uiMode |= Configuration.UI_MODE_NIGHT_YES; + } + if (LOG) { Slog.d(TAG, "updateConfigurationLocked: mDockState=" + mDockState |