summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Lucas Dupin <dupin@google.com> 2018-07-12 18:42:53 -0700
committer Lucas Dupin <dupin@google.com> 2018-07-12 18:42:53 -0700
commit53c6e2986ab9ee0358397653af555e05a6f83f6e (patch)
tree967b262dd20a39e2e7b87092752c56779edaf67a
parentef6a5bf7559b984090be347c221d382992e432bf (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.java20
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