Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ea5fed1a authored by Lucas Dupin's avatar Lucas Dupin Committed by Android (Google) Code Review
Browse files

Merge "Fade out display when prox or presence"

parents 97fffca6 edbe45ba
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -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)),
+3 −2
Original line number Diff line number Diff line
@@ -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);

+20 −8
Original line number Diff line number Diff line
@@ -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;
@@ -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.
@@ -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
@@ -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) {
@@ -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);
        }
+0 −1
Original line number Diff line number Diff line
@@ -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:
+1 −17
Original line number Diff line number Diff line
@@ -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();
@@ -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