Loading packages/SystemUI/res/values/config.xml +13 −0 Original line number Diff line number Diff line Loading @@ -333,6 +333,19 @@ <item>0</item> <!-- 4: SUN --> </integer-array> <!-- Doze: Table that translates sensor values from the doze_brightness_sensor_type sensor to an opacity value for a black scrim that is overlaid in AOD to darken the AOD wallpaper. Valid range is from 0 (transparent) to 255 (opaque). -1 means keeping the current opacity. --> <integer-array name="config_doze_brightness_sensor_to_wallpaper_scrim_opacity"> <item>-1</item> <!-- 0: OFF --> <item>0</item> <!-- 1: NIGHT --> <item>0</item> <!-- 2: LOW --> <item>0</item> <!-- 3: HIGH --> <item>0</item> <!-- 4: SUN --> </integer-array> <!-- Doze: whether the double tap sensor reports 2D touch coordinates --> <bool name="doze_double_tap_reports_touch_coordinates">false</bool> Loading packages/SystemUI/src/com/android/systemui/doze/AlwaysOnDisplayPolicy.java +12 −0 Original line number Diff line number Diff line Loading @@ -49,6 +49,7 @@ public class AlwaysOnDisplayPolicy { static final String KEY_SCREEN_BRIGHTNESS_ARRAY = "screen_brightness_array"; static final String KEY_DIMMING_SCRIM_ARRAY = "dimming_scrim_array"; static final String KEY_WALLPAPER_DIMMING_SCRIM_ARRAY = "wallpaper_dimming_scrim_array"; static final String KEY_PROX_SCREEN_OFF_DELAY_MS = "prox_screen_off_delay"; static final String KEY_PROX_COOLDOWN_TRIGGER_MS = "prox_cooldown_trigger"; static final String KEY_PROX_COOLDOWN_PERIOD_MS = "prox_cooldown_period"; Loading Loading @@ -94,6 +95,14 @@ public class AlwaysOnDisplayPolicy { */ public int[] dimmingScrimArray; /** * Integer array to map ambient brightness type to dimming scrim for aod wallpaper. * * @see Settings.Global#ALWAYS_ON_DISPLAY_CONSTANTS * @see #KEY_WALLPAPER_DIMMING_SCRIM_ARRAY */ public int[] wallpaperDimmingScrimArray; /** * Delay time(ms) from covering the prox to turning off the screen. * Loading Loading @@ -205,6 +214,9 @@ public class AlwaysOnDisplayPolicy { dimmingScrimArray = mParser.getIntArray(KEY_DIMMING_SCRIM_ARRAY, resources.getIntArray( R.array.config_doze_brightness_sensor_to_scrim_opacity)); wallpaperDimmingScrimArray = mParser.getIntArray(KEY_WALLPAPER_DIMMING_SCRIM_ARRAY, resources.getIntArray( R.array.config_doze_brightness_sensor_to_wallpaper_scrim_opacity)); } } } Loading packages/SystemUI/src/com/android/systemui/doze/DozeLog.java +1 −1 Original line number Diff line number Diff line Loading @@ -467,7 +467,7 @@ public class DozeLog implements Dumpable { * @param scrimOpacity */ public void traceSetAodDimmingScrim(float scrimOpacity) { mLogger.logSetAodDimmingScrim((long) scrimOpacity); mLogger.logSetAodDimmingScrim(scrimOpacity); } /** Loading packages/SystemUI/src/com/android/systemui/doze/DozeLogger.kt +3 −3 Original line number Diff line number Diff line Loading @@ -342,12 +342,12 @@ class DozeLogger @Inject constructor(@DozeLog private val buffer: LogBuffer) { ) } fun logSetAodDimmingScrim(scrimOpacity: Long) { fun logSetAodDimmingScrim(scrimOpacity: Float) { buffer.log( TAG, INFO, { long1 = scrimOpacity }, { "Doze aod dimming scrim opacity set, opacity=$long1" }, { double1 = scrimOpacity.toDouble() }, { "Doze aod dimming scrim opacity set, opacity=$double1" }, ) } Loading packages/SystemUI/src/com/android/systemui/doze/DozeScreenBrightness.java +49 −4 Original line number Diff line number Diff line Loading @@ -17,8 +17,11 @@ package com.android.systemui.doze; import static android.os.PowerManager.GO_TO_SLEEP_REASON_TIMEOUT; import static com.android.systemui.keyguard.WakefulnessLifecycle.WAKEFULNESS_GOING_TO_SLEEP; import static java.lang.Integer.max; import android.annotation.Nullable; import android.annotation.SuppressLint; import android.content.BroadcastReceiver; Loading @@ -39,6 +42,7 @@ import android.view.Display; import com.android.app.tracing.TraceUtils; import com.android.internal.R; import com.android.systemui.dagger.qualifiers.Application; import com.android.systemui.dagger.qualifiers.Main; import com.android.systemui.doze.dagger.BrightnessSensor; import com.android.systemui.doze.dagger.DozeScope; Loading @@ -46,18 +50,24 @@ import com.android.systemui.doze.dagger.WrappedService; import com.android.systemui.keyguard.WakefulnessLifecycle; import com.android.systemui.statusbar.phone.DozeParameters; import com.android.systemui.statusbar.policy.DevicePostureController; import com.android.systemui.util.kotlin.JavaAdapterKt; import com.android.systemui.util.sensors.AsyncSensorManager; import com.android.systemui.util.settings.SystemSettings; import com.android.systemui.wallpapers.domain.interactor.WallpaperInteractor; import kotlin.Unit; import kotlinx.coroutines.CoroutineScope; import kotlinx.coroutines.Job; import java.io.PrintWriter; import java.util.Arrays; import java.util.Objects; import java.util.Optional; import java.util.concurrent.CancellationException; import javax.inject.Inject; import kotlin.Unit; /** * Controls the screen brightness when dozing. */ Loading Loading @@ -88,9 +98,14 @@ public class DozeScreenBrightness extends BroadcastReceiver implements DozeMachi private final DevicePostureController mDevicePostureController; private final DozeLog mDozeLog; private final SystemSettings mSystemSettings; private final WallpaperInteractor mWallpaperInteractor; private final CoroutineScope mScope; private Job mWallpaperSupportsAmbientModeJob = null; private boolean mWallpaperSupportsAmbientMode; private final int[] mSensorToBrightness; @Nullable private final float[] mSensorToBrightnessFloat; private final int[] mSensorToWallpaperScrimOpacity; private final int[] mSensorToScrimOpacity; private final int mScreenBrightnessDim; private final float mScreenBrightnessDimFloat; Loading Loading @@ -127,7 +142,10 @@ public class DozeScreenBrightness extends BroadcastReceiver implements DozeMachi DevicePostureController devicePostureController, DozeLog dozeLog, SystemSettings systemSettings, DisplayManager displayManager) { DisplayManager displayManager, WallpaperInteractor wallpaperInteractor, @Application CoroutineScope scope ) { mContext = context; mDozeService = service; mSensorManager = sensorManager; Loading @@ -141,6 +159,8 @@ public class DozeScreenBrightness extends BroadcastReceiver implements DozeMachi mHandler = handler; mDozeLog = dozeLog; mSystemSettings = systemSettings; mWallpaperInteractor = wallpaperInteractor; mScope = scope; mScreenBrightnessMinimumDimAmountFloat = context.getResources().getFloat( R.dimen.config_screenBrightnessMinimumDimAmountFloat); Loading @@ -154,6 +174,7 @@ public class DozeScreenBrightness extends BroadcastReceiver implements DozeMachi mSensorToBrightnessFloat = mDisplayManager.getDozeBrightnessSensorValueToBrightness(mContext.getDisplayId()); mSensorToScrimOpacity = alwaysOnDisplayPolicy.dimmingScrimArray; mSensorToWallpaperScrimOpacity = alwaysOnDisplayPolicy.wallpaperDimmingScrimArray; mDevicePostureController.addCallback(mDevicePostureCallback); } Loading @@ -163,6 +184,7 @@ public class DozeScreenBrightness extends BroadcastReceiver implements DozeMachi mState = newState; switch (newState) { case INITIALIZED: startListeningForWallpaperSupportsAmbientMode(); resetBrightnessToDefault(); break; case DOZE_AOD: Loading Loading @@ -190,6 +212,7 @@ public class DozeScreenBrightness extends BroadcastReceiver implements DozeMachi } private void onDestroy() { stopListeningForWallpaperSupportsAmbientMode(); setLightSensorEnabled(false); mDevicePostureController.removeCallback(mDevicePostureCallback); } Loading Loading @@ -266,7 +289,11 @@ public class DozeScreenBrightness extends BroadcastReceiver implements DozeMachi if (sensorValue < 0 || sensorValue >= mSensorToScrimOpacity.length) { return -1; } return mSensorToScrimOpacity[sensorValue]; int wallpaperScrimOpacity = -1; if (mWallpaperSupportsAmbientMode && sensorValue < mSensorToWallpaperScrimOpacity.length) { wallpaperScrimOpacity = mSensorToWallpaperScrimOpacity[sensorValue]; } return max(wallpaperScrimOpacity, mSensorToScrimOpacity[sensorValue]); } private int computeBrightness(int sensorValue) { Loading Loading @@ -435,6 +462,22 @@ public class DozeScreenBrightness extends BroadcastReceiver implements DozeMachi updateBrightnessAndReady(false /* force */); } private void startListeningForWallpaperSupportsAmbientMode() { if (mWallpaperSupportsAmbientModeJob != null) return; mWallpaperSupportsAmbientModeJob = JavaAdapterKt.collectFlow( mScope, mScope.getCoroutineContext(), mWallpaperInteractor.getWallpaperSupportsAmbientMode(), supportsAmbientMode -> mWallpaperSupportsAmbientMode = supportsAmbientMode ); } private void stopListeningForWallpaperSupportsAmbientMode() { if (mWallpaperSupportsAmbientModeJob == null) return; mWallpaperSupportsAmbientModeJob.cancel(new CancellationException("Stop monitoring")); mWallpaperSupportsAmbientModeJob = null; } /** Dump current state */ public void dump(PrintWriter pw) { pw.println("DozeScreenBrightness:"); Loading @@ -445,6 +488,8 @@ public class DozeScreenBrightness extends BroadcastReceiver implements DozeMachi idpw.println("sensorToBrightness=" + Arrays.toString(mSensorToBrightness)); idpw.println("sensorToBrightnessFloat=" + Arrays.toString(mSensorToBrightnessFloat)); idpw.println("sensorToScrimOpacity=" + Arrays.toString(mSensorToScrimOpacity)); idpw.println("sensorToWallpaperScrimOpacity=" + Arrays.toString(mSensorToWallpaperScrimOpacity)); idpw.println("screenBrightnessDim=" + mScreenBrightnessDim); idpw.println("screenBrightnessDimFloat=" + mScreenBrightnessDimFloat); idpw.println("mDefaultDozeBrightness=" + mDefaultDozeBrightness); Loading Loading
packages/SystemUI/res/values/config.xml +13 −0 Original line number Diff line number Diff line Loading @@ -333,6 +333,19 @@ <item>0</item> <!-- 4: SUN --> </integer-array> <!-- Doze: Table that translates sensor values from the doze_brightness_sensor_type sensor to an opacity value for a black scrim that is overlaid in AOD to darken the AOD wallpaper. Valid range is from 0 (transparent) to 255 (opaque). -1 means keeping the current opacity. --> <integer-array name="config_doze_brightness_sensor_to_wallpaper_scrim_opacity"> <item>-1</item> <!-- 0: OFF --> <item>0</item> <!-- 1: NIGHT --> <item>0</item> <!-- 2: LOW --> <item>0</item> <!-- 3: HIGH --> <item>0</item> <!-- 4: SUN --> </integer-array> <!-- Doze: whether the double tap sensor reports 2D touch coordinates --> <bool name="doze_double_tap_reports_touch_coordinates">false</bool> Loading
packages/SystemUI/src/com/android/systemui/doze/AlwaysOnDisplayPolicy.java +12 −0 Original line number Diff line number Diff line Loading @@ -49,6 +49,7 @@ public class AlwaysOnDisplayPolicy { static final String KEY_SCREEN_BRIGHTNESS_ARRAY = "screen_brightness_array"; static final String KEY_DIMMING_SCRIM_ARRAY = "dimming_scrim_array"; static final String KEY_WALLPAPER_DIMMING_SCRIM_ARRAY = "wallpaper_dimming_scrim_array"; static final String KEY_PROX_SCREEN_OFF_DELAY_MS = "prox_screen_off_delay"; static final String KEY_PROX_COOLDOWN_TRIGGER_MS = "prox_cooldown_trigger"; static final String KEY_PROX_COOLDOWN_PERIOD_MS = "prox_cooldown_period"; Loading Loading @@ -94,6 +95,14 @@ public class AlwaysOnDisplayPolicy { */ public int[] dimmingScrimArray; /** * Integer array to map ambient brightness type to dimming scrim for aod wallpaper. * * @see Settings.Global#ALWAYS_ON_DISPLAY_CONSTANTS * @see #KEY_WALLPAPER_DIMMING_SCRIM_ARRAY */ public int[] wallpaperDimmingScrimArray; /** * Delay time(ms) from covering the prox to turning off the screen. * Loading Loading @@ -205,6 +214,9 @@ public class AlwaysOnDisplayPolicy { dimmingScrimArray = mParser.getIntArray(KEY_DIMMING_SCRIM_ARRAY, resources.getIntArray( R.array.config_doze_brightness_sensor_to_scrim_opacity)); wallpaperDimmingScrimArray = mParser.getIntArray(KEY_WALLPAPER_DIMMING_SCRIM_ARRAY, resources.getIntArray( R.array.config_doze_brightness_sensor_to_wallpaper_scrim_opacity)); } } } Loading
packages/SystemUI/src/com/android/systemui/doze/DozeLog.java +1 −1 Original line number Diff line number Diff line Loading @@ -467,7 +467,7 @@ public class DozeLog implements Dumpable { * @param scrimOpacity */ public void traceSetAodDimmingScrim(float scrimOpacity) { mLogger.logSetAodDimmingScrim((long) scrimOpacity); mLogger.logSetAodDimmingScrim(scrimOpacity); } /** Loading
packages/SystemUI/src/com/android/systemui/doze/DozeLogger.kt +3 −3 Original line number Diff line number Diff line Loading @@ -342,12 +342,12 @@ class DozeLogger @Inject constructor(@DozeLog private val buffer: LogBuffer) { ) } fun logSetAodDimmingScrim(scrimOpacity: Long) { fun logSetAodDimmingScrim(scrimOpacity: Float) { buffer.log( TAG, INFO, { long1 = scrimOpacity }, { "Doze aod dimming scrim opacity set, opacity=$long1" }, { double1 = scrimOpacity.toDouble() }, { "Doze aod dimming scrim opacity set, opacity=$double1" }, ) } Loading
packages/SystemUI/src/com/android/systemui/doze/DozeScreenBrightness.java +49 −4 Original line number Diff line number Diff line Loading @@ -17,8 +17,11 @@ package com.android.systemui.doze; import static android.os.PowerManager.GO_TO_SLEEP_REASON_TIMEOUT; import static com.android.systemui.keyguard.WakefulnessLifecycle.WAKEFULNESS_GOING_TO_SLEEP; import static java.lang.Integer.max; import android.annotation.Nullable; import android.annotation.SuppressLint; import android.content.BroadcastReceiver; Loading @@ -39,6 +42,7 @@ import android.view.Display; import com.android.app.tracing.TraceUtils; import com.android.internal.R; import com.android.systemui.dagger.qualifiers.Application; import com.android.systemui.dagger.qualifiers.Main; import com.android.systemui.doze.dagger.BrightnessSensor; import com.android.systemui.doze.dagger.DozeScope; Loading @@ -46,18 +50,24 @@ import com.android.systemui.doze.dagger.WrappedService; import com.android.systemui.keyguard.WakefulnessLifecycle; import com.android.systemui.statusbar.phone.DozeParameters; import com.android.systemui.statusbar.policy.DevicePostureController; import com.android.systemui.util.kotlin.JavaAdapterKt; import com.android.systemui.util.sensors.AsyncSensorManager; import com.android.systemui.util.settings.SystemSettings; import com.android.systemui.wallpapers.domain.interactor.WallpaperInteractor; import kotlin.Unit; import kotlinx.coroutines.CoroutineScope; import kotlinx.coroutines.Job; import java.io.PrintWriter; import java.util.Arrays; import java.util.Objects; import java.util.Optional; import java.util.concurrent.CancellationException; import javax.inject.Inject; import kotlin.Unit; /** * Controls the screen brightness when dozing. */ Loading Loading @@ -88,9 +98,14 @@ public class DozeScreenBrightness extends BroadcastReceiver implements DozeMachi private final DevicePostureController mDevicePostureController; private final DozeLog mDozeLog; private final SystemSettings mSystemSettings; private final WallpaperInteractor mWallpaperInteractor; private final CoroutineScope mScope; private Job mWallpaperSupportsAmbientModeJob = null; private boolean mWallpaperSupportsAmbientMode; private final int[] mSensorToBrightness; @Nullable private final float[] mSensorToBrightnessFloat; private final int[] mSensorToWallpaperScrimOpacity; private final int[] mSensorToScrimOpacity; private final int mScreenBrightnessDim; private final float mScreenBrightnessDimFloat; Loading Loading @@ -127,7 +142,10 @@ public class DozeScreenBrightness extends BroadcastReceiver implements DozeMachi DevicePostureController devicePostureController, DozeLog dozeLog, SystemSettings systemSettings, DisplayManager displayManager) { DisplayManager displayManager, WallpaperInteractor wallpaperInteractor, @Application CoroutineScope scope ) { mContext = context; mDozeService = service; mSensorManager = sensorManager; Loading @@ -141,6 +159,8 @@ public class DozeScreenBrightness extends BroadcastReceiver implements DozeMachi mHandler = handler; mDozeLog = dozeLog; mSystemSettings = systemSettings; mWallpaperInteractor = wallpaperInteractor; mScope = scope; mScreenBrightnessMinimumDimAmountFloat = context.getResources().getFloat( R.dimen.config_screenBrightnessMinimumDimAmountFloat); Loading @@ -154,6 +174,7 @@ public class DozeScreenBrightness extends BroadcastReceiver implements DozeMachi mSensorToBrightnessFloat = mDisplayManager.getDozeBrightnessSensorValueToBrightness(mContext.getDisplayId()); mSensorToScrimOpacity = alwaysOnDisplayPolicy.dimmingScrimArray; mSensorToWallpaperScrimOpacity = alwaysOnDisplayPolicy.wallpaperDimmingScrimArray; mDevicePostureController.addCallback(mDevicePostureCallback); } Loading @@ -163,6 +184,7 @@ public class DozeScreenBrightness extends BroadcastReceiver implements DozeMachi mState = newState; switch (newState) { case INITIALIZED: startListeningForWallpaperSupportsAmbientMode(); resetBrightnessToDefault(); break; case DOZE_AOD: Loading Loading @@ -190,6 +212,7 @@ public class DozeScreenBrightness extends BroadcastReceiver implements DozeMachi } private void onDestroy() { stopListeningForWallpaperSupportsAmbientMode(); setLightSensorEnabled(false); mDevicePostureController.removeCallback(mDevicePostureCallback); } Loading Loading @@ -266,7 +289,11 @@ public class DozeScreenBrightness extends BroadcastReceiver implements DozeMachi if (sensorValue < 0 || sensorValue >= mSensorToScrimOpacity.length) { return -1; } return mSensorToScrimOpacity[sensorValue]; int wallpaperScrimOpacity = -1; if (mWallpaperSupportsAmbientMode && sensorValue < mSensorToWallpaperScrimOpacity.length) { wallpaperScrimOpacity = mSensorToWallpaperScrimOpacity[sensorValue]; } return max(wallpaperScrimOpacity, mSensorToScrimOpacity[sensorValue]); } private int computeBrightness(int sensorValue) { Loading Loading @@ -435,6 +462,22 @@ public class DozeScreenBrightness extends BroadcastReceiver implements DozeMachi updateBrightnessAndReady(false /* force */); } private void startListeningForWallpaperSupportsAmbientMode() { if (mWallpaperSupportsAmbientModeJob != null) return; mWallpaperSupportsAmbientModeJob = JavaAdapterKt.collectFlow( mScope, mScope.getCoroutineContext(), mWallpaperInteractor.getWallpaperSupportsAmbientMode(), supportsAmbientMode -> mWallpaperSupportsAmbientMode = supportsAmbientMode ); } private void stopListeningForWallpaperSupportsAmbientMode() { if (mWallpaperSupportsAmbientModeJob == null) return; mWallpaperSupportsAmbientModeJob.cancel(new CancellationException("Stop monitoring")); mWallpaperSupportsAmbientModeJob = null; } /** Dump current state */ public void dump(PrintWriter pw) { pw.println("DozeScreenBrightness:"); Loading @@ -445,6 +488,8 @@ public class DozeScreenBrightness extends BroadcastReceiver implements DozeMachi idpw.println("sensorToBrightness=" + Arrays.toString(mSensorToBrightness)); idpw.println("sensorToBrightnessFloat=" + Arrays.toString(mSensorToBrightnessFloat)); idpw.println("sensorToScrimOpacity=" + Arrays.toString(mSensorToScrimOpacity)); idpw.println("sensorToWallpaperScrimOpacity=" + Arrays.toString(mSensorToWallpaperScrimOpacity)); idpw.println("screenBrightnessDim=" + mScreenBrightnessDim); idpw.println("screenBrightnessDimFloat=" + mScreenBrightnessDimFloat); idpw.println("mDefaultDozeBrightness=" + mDefaultDozeBrightness); Loading