Activate dark theme when the UiMode is UI_MODE_NIGHT_YES. am: a5c846c3fa

am: 90d531a96c

Change-Id: I2c4de0b96eccf189bdcc9447e076f29669fa6e8d
This commit is contained in:
Dan Sandler
2018-06-27 10:18:11 -07:00
committed by android-build-merger

View File

@@ -55,6 +55,7 @@ import android.app.NotificationManager;
import android.app.PendingIntent;
import android.app.StatusBarManager;
import android.app.TaskStackBuilder;
import android.app.UiModeManager;
import android.app.WallpaperColors;
import android.app.WallpaperInfo;
import android.app.WallpaperManager;
@@ -329,6 +330,12 @@ public class StatusBar extends SystemUI implements DemoMode,
/** If true, the lockscreen will show a distinct wallpaper */
private static final boolean ENABLE_LOCKSCREEN_WALLPAPER = true;
/** Whether to force dark theme if Configuration.UI_MODE_NIGHT_YES. */
private static final boolean DARK_THEME_IN_NIGHT_MODE = true;
/** Whether to switch the device into night mode in battery saver. */
private static final boolean NIGHT_MODE_IN_BATTERY_SAVER = true;
/**
* Never let the alpha become zero for surfaces that draw with SRC - otherwise the RenderNode
* won't draw anything and uninitialized memory will show through
@@ -941,6 +948,10 @@ public class StatusBar extends SystemUI implements DemoMode,
if (mDozeServiceHost != null) {
mDozeServiceHost.firePowerSaveChanged(isPowerSave);
}
if (NIGHT_MODE_IN_BATTERY_SAVER) {
mContext.getSystemService(UiModeManager.class).setNightMode(
isPowerSave ? UiModeManager.MODE_NIGHT_YES : UiModeManager.MODE_NIGHT_NO);
}
}
@Override
@@ -3138,6 +3149,7 @@ public class StatusBar extends SystemUI implements DemoMode,
public void onConfigChanged(Configuration newConfig) {
updateResources();
updateDisplaySize(); // populates mDisplayMetrics
updateTheme();
if (DEBUG) {
Log.v(TAG, "configuration changed: " + mContext.getResources().getConfiguration());
@@ -3878,8 +3890,13 @@ public class StatusBar extends SystemUI implements DemoMode,
// The system wallpaper defines if QS should be light or dark.
WallpaperColors systemColors = mColorExtractor
.getWallpaperColors(WallpaperManager.FLAG_SYSTEM);
final boolean useDarkTheme = systemColors != null
final boolean wallpaperWantsDarkTheme = systemColors != null
&& (systemColors.getColorHints() & WallpaperColors.HINT_SUPPORTS_DARK_THEME) != 0;
final Configuration config = mContext.getResources().getConfiguration();
final boolean nightModeWantsDarkTheme = DARK_THEME_IN_NIGHT_MODE
&& (config.uiMode & Configuration.UI_MODE_NIGHT_MASK)
== Configuration.UI_MODE_NIGHT_YES;
final boolean useDarkTheme = wallpaperWantsDarkTheme || nightModeWantsDarkTheme;
if (isUsingDarkTheme() != useDarkTheme) {
mUiOffloadThread.submit(() -> {
try {