Loading packages/SystemUI/src/com/android/systemui/doze/DozeFactory.java +1 −1 Original line number Diff line number Diff line Loading @@ -75,7 +75,7 @@ public class DozeFactory { handler, wakeLock, machine, dockManager, dozeLog), createDozeUi(context, host, wakeLock, machine, handler, alarmManager, params, dozeLog), new DozeScreenState(wrappedService, handler, params, wakeLock), new DozeScreenState(wrappedService, handler, host, params, wakeLock), createDozeScreenBrightness(context, wrappedService, sensorManager, host, params, handler), new DozeWallpaperState(context, getBiometricUnlockController(dozeService)), Loading packages/SystemUI/src/com/android/systemui/doze/DozeHost.java +3 −2 Original line number Diff line number Diff line Loading @@ -63,9 +63,10 @@ public interface DozeHost { void setDozeScreenBrightness(int value); /** * Makes scrims black and changes animation durations. * Fade out screen before switching off the display power mode. * @param onDisplayOffCallback Executed when the display is black. */ default void prepareForGentleWakeUp() {} void prepareForGentleSleep(Runnable onDisplayOffCallback); void onIgnoreTouchWhilePulsing(boolean ignore); Loading packages/SystemUI/src/com/android/systemui/doze/DozeScreenState.java +20 −8 Original line number Diff line number Diff line Loading @@ -16,6 +16,12 @@ package com.android.systemui.doze; import static com.android.systemui.doze.DozeMachine.State.DOZE; import static com.android.systemui.doze.DozeMachine.State.DOZE_AOD; import static com.android.systemui.doze.DozeMachine.State.DOZE_AOD_PAUSED; import static com.android.systemui.doze.DozeMachine.State.DOZE_AOD_PAUSING; import static com.android.systemui.doze.DozeMachine.State.DOZE_PULSE_DONE; import android.os.Handler; import android.util.Log; import android.view.Display; Loading Loading @@ -48,21 +54,24 @@ public class DozeScreenState implements DozeMachine.Part { private final Handler mHandler; private final Runnable mApplyPendingScreenState = this::applyPendingScreenState; private final DozeParameters mParameters; private final DozeHost mDozeHost; private int mPendingScreenState = Display.STATE_UNKNOWN; private SettableWakeLock mWakeLock; public DozeScreenState(DozeMachine.Service service, Handler handler, public DozeScreenState(DozeMachine.Service service, Handler handler, DozeHost host, DozeParameters parameters, WakeLock wakeLock) { mDozeService = service; mHandler = handler; mParameters = parameters; mDozeHost = host; mWakeLock = new SettableWakeLock(wakeLock, TAG); } @Override public void transitionTo(DozeMachine.State oldState, DozeMachine.State newState) { int screenState = newState.screenState(mParameters); mDozeHost.prepareForGentleSleep(null); if (newState == DozeMachine.State.FINISH) { // Make sure not to apply the screen state after DozeService was destroyed. Loading @@ -79,12 +88,13 @@ public class DozeScreenState implements DozeMachine.Part { return; } boolean messagePending = mHandler.hasCallbacks(mApplyPendingScreenState); boolean pulseEnding = oldState == DozeMachine.State.DOZE_PULSE_DONE && newState == DozeMachine.State.DOZE_AOD; boolean turningOn = (oldState == DozeMachine.State.DOZE_AOD_PAUSED || oldState == DozeMachine.State.DOZE) && newState == DozeMachine.State.DOZE_AOD; boolean justInitialized = oldState == DozeMachine.State.INITIALIZED; final boolean messagePending = mHandler.hasCallbacks(mApplyPendingScreenState); final boolean pulseEnding = oldState == DOZE_PULSE_DONE && newState == DOZE_AOD; final boolean turningOn = (oldState == DOZE_AOD_PAUSED || oldState == DOZE) && newState == DOZE_AOD; final boolean turningOff = (oldState == DOZE_AOD && newState == DOZE) || (oldState == DOZE_AOD_PAUSING && newState == DOZE_AOD_PAUSED); final boolean justInitialized = oldState == DozeMachine.State.INITIALIZED; if (messagePending || justInitialized || pulseEnding || turningOn) { // During initialization, we hide the navigation bar. That is however only applied after // a traversal; setting the screen state here is immediate however, so it can happen Loading @@ -93,7 +103,7 @@ public class DozeScreenState implements DozeMachine.Part { mPendingScreenState = screenState; // Delay screen state transitions even longer while animations are running. boolean shouldDelayTransition = newState == DozeMachine.State.DOZE_AOD boolean shouldDelayTransition = newState == DOZE_AOD && mParameters.shouldControlScreenOff() && !turningOn; if (shouldDelayTransition) { Loading @@ -114,6 +124,8 @@ public class DozeScreenState implements DozeMachine.Part { } else if (DEBUG) { Log.d(TAG, "Pending display state change to " + screenState); } } else if (turningOff) { mDozeHost.prepareForGentleSleep(() -> applyScreenState(screenState)); } else { applyScreenState(screenState); } Loading packages/SystemUI/src/com/android/systemui/doze/DozeUi.java +0 −1 Original line number Diff line number Diff line Loading @@ -135,7 +135,6 @@ public class DozeUi implements DozeMachine.Part { break; case DOZE: case DOZE_AOD_PAUSED: mHost.prepareForGentleWakeUp(); unscheduleTimeTick(); break; case DOZE_REQUEST_PULSE: Loading packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimController.java +1 −17 Original line number Diff line number Diff line Loading @@ -258,7 +258,7 @@ public class ScrimController implements ViewTreeObserver.OnPreDrawListener, OnCo final ScrimState oldState = mState; mState = state; Trace.traceCounter(Trace.TRACE_TAG_APP, "scrim_state", mState.getIndex()); Trace.traceCounter(Trace.TRACE_TAG_APP, "scrim_state", mState.ordinal()); if (mCallback != null) { mCallback.onCancelled(); Loading Loading @@ -518,22 +518,6 @@ public class ScrimController implements ViewTreeObserver.OnPreDrawListener, OnCo mState.PULSING.setAodFrontScrimAlpha(alpha); } /** * Set front scrim to black, cancelling animations, in order to prepare to fade them * away once the display turns on. */ public void prepareForGentleWakeUp() { if (mState == ScrimState.AOD && mDozeParameters.getAlwaysOn()) { mInFrontAlpha = 1f; mInFrontTint = Color.BLACK; mBehindTint = Color.BLACK; mAnimateChange = false; updateScrims(); mAnimateChange = true; mAnimationDuration = ANIMATION_DURATION_LONG; } } /** * If the lock screen sensor is active. */ Loading Loading
packages/SystemUI/src/com/android/systemui/doze/DozeFactory.java +1 −1 Original line number Diff line number Diff line Loading @@ -75,7 +75,7 @@ public class DozeFactory { handler, wakeLock, machine, dockManager, dozeLog), createDozeUi(context, host, wakeLock, machine, handler, alarmManager, params, dozeLog), new DozeScreenState(wrappedService, handler, params, wakeLock), new DozeScreenState(wrappedService, handler, host, params, wakeLock), createDozeScreenBrightness(context, wrappedService, sensorManager, host, params, handler), new DozeWallpaperState(context, getBiometricUnlockController(dozeService)), Loading
packages/SystemUI/src/com/android/systemui/doze/DozeHost.java +3 −2 Original line number Diff line number Diff line Loading @@ -63,9 +63,10 @@ public interface DozeHost { void setDozeScreenBrightness(int value); /** * Makes scrims black and changes animation durations. * Fade out screen before switching off the display power mode. * @param onDisplayOffCallback Executed when the display is black. */ default void prepareForGentleWakeUp() {} void prepareForGentleSleep(Runnable onDisplayOffCallback); void onIgnoreTouchWhilePulsing(boolean ignore); Loading
packages/SystemUI/src/com/android/systemui/doze/DozeScreenState.java +20 −8 Original line number Diff line number Diff line Loading @@ -16,6 +16,12 @@ package com.android.systemui.doze; import static com.android.systemui.doze.DozeMachine.State.DOZE; import static com.android.systemui.doze.DozeMachine.State.DOZE_AOD; import static com.android.systemui.doze.DozeMachine.State.DOZE_AOD_PAUSED; import static com.android.systemui.doze.DozeMachine.State.DOZE_AOD_PAUSING; import static com.android.systemui.doze.DozeMachine.State.DOZE_PULSE_DONE; import android.os.Handler; import android.util.Log; import android.view.Display; Loading Loading @@ -48,21 +54,24 @@ public class DozeScreenState implements DozeMachine.Part { private final Handler mHandler; private final Runnable mApplyPendingScreenState = this::applyPendingScreenState; private final DozeParameters mParameters; private final DozeHost mDozeHost; private int mPendingScreenState = Display.STATE_UNKNOWN; private SettableWakeLock mWakeLock; public DozeScreenState(DozeMachine.Service service, Handler handler, public DozeScreenState(DozeMachine.Service service, Handler handler, DozeHost host, DozeParameters parameters, WakeLock wakeLock) { mDozeService = service; mHandler = handler; mParameters = parameters; mDozeHost = host; mWakeLock = new SettableWakeLock(wakeLock, TAG); } @Override public void transitionTo(DozeMachine.State oldState, DozeMachine.State newState) { int screenState = newState.screenState(mParameters); mDozeHost.prepareForGentleSleep(null); if (newState == DozeMachine.State.FINISH) { // Make sure not to apply the screen state after DozeService was destroyed. Loading @@ -79,12 +88,13 @@ public class DozeScreenState implements DozeMachine.Part { return; } boolean messagePending = mHandler.hasCallbacks(mApplyPendingScreenState); boolean pulseEnding = oldState == DozeMachine.State.DOZE_PULSE_DONE && newState == DozeMachine.State.DOZE_AOD; boolean turningOn = (oldState == DozeMachine.State.DOZE_AOD_PAUSED || oldState == DozeMachine.State.DOZE) && newState == DozeMachine.State.DOZE_AOD; boolean justInitialized = oldState == DozeMachine.State.INITIALIZED; final boolean messagePending = mHandler.hasCallbacks(mApplyPendingScreenState); final boolean pulseEnding = oldState == DOZE_PULSE_DONE && newState == DOZE_AOD; final boolean turningOn = (oldState == DOZE_AOD_PAUSED || oldState == DOZE) && newState == DOZE_AOD; final boolean turningOff = (oldState == DOZE_AOD && newState == DOZE) || (oldState == DOZE_AOD_PAUSING && newState == DOZE_AOD_PAUSED); final boolean justInitialized = oldState == DozeMachine.State.INITIALIZED; if (messagePending || justInitialized || pulseEnding || turningOn) { // During initialization, we hide the navigation bar. That is however only applied after // a traversal; setting the screen state here is immediate however, so it can happen Loading @@ -93,7 +103,7 @@ public class DozeScreenState implements DozeMachine.Part { mPendingScreenState = screenState; // Delay screen state transitions even longer while animations are running. boolean shouldDelayTransition = newState == DozeMachine.State.DOZE_AOD boolean shouldDelayTransition = newState == DOZE_AOD && mParameters.shouldControlScreenOff() && !turningOn; if (shouldDelayTransition) { Loading @@ -114,6 +124,8 @@ public class DozeScreenState implements DozeMachine.Part { } else if (DEBUG) { Log.d(TAG, "Pending display state change to " + screenState); } } else if (turningOff) { mDozeHost.prepareForGentleSleep(() -> applyScreenState(screenState)); } else { applyScreenState(screenState); } Loading
packages/SystemUI/src/com/android/systemui/doze/DozeUi.java +0 −1 Original line number Diff line number Diff line Loading @@ -135,7 +135,6 @@ public class DozeUi implements DozeMachine.Part { break; case DOZE: case DOZE_AOD_PAUSED: mHost.prepareForGentleWakeUp(); unscheduleTimeTick(); break; case DOZE_REQUEST_PULSE: Loading
packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimController.java +1 −17 Original line number Diff line number Diff line Loading @@ -258,7 +258,7 @@ public class ScrimController implements ViewTreeObserver.OnPreDrawListener, OnCo final ScrimState oldState = mState; mState = state; Trace.traceCounter(Trace.TRACE_TAG_APP, "scrim_state", mState.getIndex()); Trace.traceCounter(Trace.TRACE_TAG_APP, "scrim_state", mState.ordinal()); if (mCallback != null) { mCallback.onCancelled(); Loading Loading @@ -518,22 +518,6 @@ public class ScrimController implements ViewTreeObserver.OnPreDrawListener, OnCo mState.PULSING.setAodFrontScrimAlpha(alpha); } /** * Set front scrim to black, cancelling animations, in order to prepare to fade them * away once the display turns on. */ public void prepareForGentleWakeUp() { if (mState == ScrimState.AOD && mDozeParameters.getAlwaysOn()) { mInFrontAlpha = 1f; mInFrontTint = Color.BLACK; mBehindTint = Color.BLACK; mAnimateChange = false; updateScrims(); mAnimateChange = true; mAnimationDuration = ANIMATION_DURATION_LONG; } } /** * If the lock screen sensor is active. */ Loading