Loading core/java/android/provider/Settings.java +6 −0 Original line number Diff line number Diff line Loading @@ -7953,6 +7953,12 @@ public final class Settings { */ public static final String UI_NIGHT_MODE_OVERRIDE_ON = "ui_night_mode_override_on"; /** * The last computed night mode bool the last time the phone was on * @hide */ public static final String UI_NIGHT_MODE_LAST_COMPUTED = "ui_night_mode_last_computed"; /** * The current night mode that has been overridden to turn off by the system. Owned * and controlled by UiModeManagerService. Constants are as per Loading services/core/java/com/android/server/UiModeManagerService.java +29 −18 Original line number Diff line number Diff line Loading @@ -72,7 +72,6 @@ import com.android.internal.app.DisableCarModeActivity; import com.android.internal.messages.nano.SystemMessageProto.SystemMessage; import com.android.internal.notification.SystemNotificationChannels; import com.android.internal.util.DumpUtils; import com.android.server.SystemService.TargetUser; import com.android.server.twilight.TwilightListener; import com.android.server.twilight.TwilightManager; import com.android.server.twilight.TwilightState; Loading Loading @@ -327,8 +326,16 @@ final class UiModeManagerService extends SystemService { @Override public void onUserSwitching(@Nullable TargetUser from, @NonNull TargetUser to) { mCurrentUser = to.getUserIdentifier(); if (mNightMode == MODE_NIGHT_AUTO) persistComputedNightMode(from.getUserIdentifier()); getContext().getContentResolver().unregisterContentObserver(mSetupWizardObserver); verifySetupWizardCompleted(); synchronized (mLock) { // only update if the value is actually changed if (updateNightModeFromSettingsLocked(getContext(), getContext().getResources(), to.getUserIdentifier())) { updateLocked(0, 0); } } } @Override Loading Loading @@ -356,11 +363,10 @@ final class UiModeManagerService extends SystemService { new IntentFilter(Intent.ACTION_DOCK_EVENT)); IntentFilter batteryFilter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED); context.registerReceiver(mBatteryReceiver, batteryFilter); IntentFilter filter = new IntentFilter(); filter.addAction(Intent.ACTION_USER_SWITCHED); context.registerReceiver(mSettingsRestored, new IntentFilter(Intent.ACTION_SETTING_RESTORED)); context.registerReceiver(new UserSwitchedReceiver(), filter, null, mHandler); context.registerReceiver(mOnShutdown, new IntentFilter(Intent.ACTION_SHUTDOWN)); updateConfigurationLocked(); applyConfigurationExternallyLocked(); } Loading Loading @@ -407,6 +413,21 @@ final class UiModeManagerService extends SystemService { publishLocalService(UiModeManagerInternal.class, mLocalService); } private final BroadcastReceiver mOnShutdown = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { if (mNightMode == MODE_NIGHT_AUTO) { persistComputedNightMode(mCurrentUser); } } }; private void persistComputedNightMode(int userId) { Secure.putIntForUser(getContext().getContentResolver(), Secure.UI_NIGHT_MODE_LAST_COMPUTED, mComputedNightMode ? 1 : 0, userId); } private final BroadcastReceiver mSettingsRestored = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { Loading Loading @@ -508,6 +529,10 @@ final class UiModeManagerService extends SystemService { Secure.getLongForUser(context.getContentResolver(), Secure.DARK_THEME_CUSTOM_END_TIME, DEFAULT_CUSTOM_NIGHT_END_TIME.toNanoOfDay() / 1000L, userId) * 1000); if (mNightMode == MODE_NIGHT_AUTO) { mComputedNightMode = Secure.getIntForUser(context.getContentResolver(), Secure.UI_NIGHT_MODE_LAST_COMPUTED, 0, userId) != 0; } } return oldNightMode != mNightMode; Loading Loading @@ -1630,18 +1655,4 @@ final class UiModeManagerService extends SystemService { } } } private final class UserSwitchedReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { synchronized (mLock) { final int currentId = intent.getIntExtra( Intent.EXTRA_USER_HANDLE, USER_SYSTEM); // only update if the value is actually changed if (updateNightModeFromSettingsLocked(context, context.getResources(), currentId)) { updateLocked(0, 0); } } } } } Loading
core/java/android/provider/Settings.java +6 −0 Original line number Diff line number Diff line Loading @@ -7953,6 +7953,12 @@ public final class Settings { */ public static final String UI_NIGHT_MODE_OVERRIDE_ON = "ui_night_mode_override_on"; /** * The last computed night mode bool the last time the phone was on * @hide */ public static final String UI_NIGHT_MODE_LAST_COMPUTED = "ui_night_mode_last_computed"; /** * The current night mode that has been overridden to turn off by the system. Owned * and controlled by UiModeManagerService. Constants are as per Loading
services/core/java/com/android/server/UiModeManagerService.java +29 −18 Original line number Diff line number Diff line Loading @@ -72,7 +72,6 @@ import com.android.internal.app.DisableCarModeActivity; import com.android.internal.messages.nano.SystemMessageProto.SystemMessage; import com.android.internal.notification.SystemNotificationChannels; import com.android.internal.util.DumpUtils; import com.android.server.SystemService.TargetUser; import com.android.server.twilight.TwilightListener; import com.android.server.twilight.TwilightManager; import com.android.server.twilight.TwilightState; Loading Loading @@ -327,8 +326,16 @@ final class UiModeManagerService extends SystemService { @Override public void onUserSwitching(@Nullable TargetUser from, @NonNull TargetUser to) { mCurrentUser = to.getUserIdentifier(); if (mNightMode == MODE_NIGHT_AUTO) persistComputedNightMode(from.getUserIdentifier()); getContext().getContentResolver().unregisterContentObserver(mSetupWizardObserver); verifySetupWizardCompleted(); synchronized (mLock) { // only update if the value is actually changed if (updateNightModeFromSettingsLocked(getContext(), getContext().getResources(), to.getUserIdentifier())) { updateLocked(0, 0); } } } @Override Loading Loading @@ -356,11 +363,10 @@ final class UiModeManagerService extends SystemService { new IntentFilter(Intent.ACTION_DOCK_EVENT)); IntentFilter batteryFilter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED); context.registerReceiver(mBatteryReceiver, batteryFilter); IntentFilter filter = new IntentFilter(); filter.addAction(Intent.ACTION_USER_SWITCHED); context.registerReceiver(mSettingsRestored, new IntentFilter(Intent.ACTION_SETTING_RESTORED)); context.registerReceiver(new UserSwitchedReceiver(), filter, null, mHandler); context.registerReceiver(mOnShutdown, new IntentFilter(Intent.ACTION_SHUTDOWN)); updateConfigurationLocked(); applyConfigurationExternallyLocked(); } Loading Loading @@ -407,6 +413,21 @@ final class UiModeManagerService extends SystemService { publishLocalService(UiModeManagerInternal.class, mLocalService); } private final BroadcastReceiver mOnShutdown = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { if (mNightMode == MODE_NIGHT_AUTO) { persistComputedNightMode(mCurrentUser); } } }; private void persistComputedNightMode(int userId) { Secure.putIntForUser(getContext().getContentResolver(), Secure.UI_NIGHT_MODE_LAST_COMPUTED, mComputedNightMode ? 1 : 0, userId); } private final BroadcastReceiver mSettingsRestored = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { Loading Loading @@ -508,6 +529,10 @@ final class UiModeManagerService extends SystemService { Secure.getLongForUser(context.getContentResolver(), Secure.DARK_THEME_CUSTOM_END_TIME, DEFAULT_CUSTOM_NIGHT_END_TIME.toNanoOfDay() / 1000L, userId) * 1000); if (mNightMode == MODE_NIGHT_AUTO) { mComputedNightMode = Secure.getIntForUser(context.getContentResolver(), Secure.UI_NIGHT_MODE_LAST_COMPUTED, 0, userId) != 0; } } return oldNightMode != mNightMode; Loading Loading @@ -1630,18 +1655,4 @@ final class UiModeManagerService extends SystemService { } } } private final class UserSwitchedReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { synchronized (mLock) { final int currentId = intent.getIntExtra( Intent.EXTRA_USER_HANDLE, USER_SYSTEM); // only update if the value is actually changed if (updateNightModeFromSettingsLocked(context, context.getResources(), currentId)) { updateLocked(0, 0); } } } } }