Loading packages/SystemUI/src/com/android/systemui/doze/DozeHost.java +0 −1 Original line number Diff line number Diff line Loading @@ -40,7 +40,6 @@ public interface DozeHost { void extendPulse(int reason); void setAnimateWakeup(boolean animateWakeup); void setAnimateScreenOff(boolean animateScreenOff); /** * Reports that a tap event happend on the Sensors Low Power Island. Loading packages/SystemUI/src/com/android/systemui/doze/DozeUi.java +2 −101 Original line number Diff line number Diff line Loading @@ -21,30 +21,21 @@ import static com.android.systemui.doze.DozeMachine.State.DOZE_AOD_PAUSED; import android.app.AlarmManager; import android.content.Context; import android.content.res.Configuration; import android.os.Handler; import android.os.SystemClock; import android.provider.Settings; import android.text.format.Formatter; import android.util.Log; import com.android.internal.annotations.VisibleForTesting; import com.android.keyguard.KeyguardUpdateMonitor; import com.android.keyguard.KeyguardUpdateMonitorCallback; import com.android.systemui.dagger.qualifiers.Main; import com.android.systemui.doze.dagger.DozeScope; import com.android.systemui.plugins.statusbar.StatusBarStateController; import com.android.systemui.statusbar.phone.DozeParameters; import com.android.systemui.statusbar.policy.ConfigurationController; import com.android.systemui.tuner.TunerService; import com.android.systemui.unfold.FoldAodAnimationController; import com.android.systemui.unfold.FoldAodAnimationController.FoldAodAnimationStatus; import com.android.systemui.unfold.SysUIUnfoldComponent; import com.android.systemui.util.AlarmTimeout; import com.android.systemui.util.wakelock.WakeLock; import java.util.Calendar; import java.util.Optional; import javax.inject.Inject; Loading @@ -52,9 +43,7 @@ import javax.inject.Inject; * The policy controlling doze. */ @DozeScope public class DozeUi implements DozeMachine.Part, TunerService.Tunable, ConfigurationController.ConfigurationListener, FoldAodAnimationStatus, StatusBarStateController.StateListener { public class DozeUi implements DozeMachine.Part { // if enabled, calls dozeTimeTick() whenever the time changes: private static final boolean BURN_IN_TESTING_ENABLED = false; private static final long TIME_TICK_DEADLINE_MILLIS = 90 * 1000; // 1.5min Loading @@ -62,25 +51,14 @@ public class DozeUi implements DozeMachine.Part, TunerService.Tunable, private final DozeHost mHost; private final Handler mHandler; private final WakeLock mWakeLock; private final FoldAodAnimationController mFoldAodAnimationController; private DozeMachine mMachine; private final AlarmTimeout mTimeTicker; private final boolean mCanAnimateTransition; private final DozeParameters mDozeParameters; private final DozeLog mDozeLog; private final StatusBarStateController mStatusBarStateController; private final TunerService mTunerService; private final ConfigurationController mConfigurationController; private boolean mKeyguardShowing; private final KeyguardUpdateMonitorCallback mKeyguardVisibilityCallback = new KeyguardUpdateMonitorCallback() { @Override public void onKeyguardVisibilityChanged(boolean showing) { mKeyguardShowing = showing; updateAnimateScreenOff(); } @Override public void onTimeChanged() { if (BURN_IN_TESTING_ENABLED && mStatusBarStateController.isDozing()) { Loading @@ -91,11 +69,6 @@ public class DozeUi implements DozeMachine.Part, TunerService.Tunable, mHandler.post(mWakeLock.wrap(() -> {})); } } @Override public void onShadeExpandedChanged(boolean expanded) { updateAnimateScreenOff(); } }; private long mLastTimeTickElapsed = 0; Loading @@ -104,10 +77,8 @@ public class DozeUi implements DozeMachine.Part, TunerService.Tunable, public DozeUi(Context context, AlarmManager alarmManager, WakeLock wakeLock, DozeHost host, @Main Handler handler, DozeParameters params, KeyguardUpdateMonitor keyguardUpdateMonitor, DozeLog dozeLog, TunerService tunerService, StatusBarStateController statusBarStateController, Optional<SysUIUnfoldComponent> sysUiUnfoldComponent, ConfigurationController configurationController) { DozeLog dozeLog) { mContext = context; mWakeLock = wakeLock; mHost = host; Loading @@ -117,31 +88,7 @@ public class DozeUi implements DozeMachine.Part, TunerService.Tunable, mTimeTicker = new AlarmTimeout(alarmManager, this::onTimeTick, "doze_time_tick", handler); keyguardUpdateMonitor.registerCallback(mKeyguardVisibilityCallback); mDozeLog = dozeLog; mTunerService = tunerService; mStatusBarStateController = statusBarStateController; mStatusBarStateController.addCallback(this); mTunerService.addTunable(this, Settings.Secure.DOZE_ALWAYS_ON); mConfigurationController = configurationController; mConfigurationController.addCallback(this); mFoldAodAnimationController = sysUiUnfoldComponent .map(SysUIUnfoldComponent::getFoldAodAnimationController).orElse(null); if (mFoldAodAnimationController != null) { mFoldAodAnimationController.addCallback(this); } } @Override public void destroy() { mTunerService.removeTunable(this); mConfigurationController.removeCallback(this); if (mFoldAodAnimationController != null) { mFoldAodAnimationController.removeCallback(this); } } @Override Loading @@ -149,22 +96,6 @@ public class DozeUi implements DozeMachine.Part, TunerService.Tunable, mMachine = dozeMachine; } /** * Decide if we're taking over the screen-off animation * when the device was configured to skip doze after screen off. */ private void updateAnimateScreenOff() { if (mCanAnimateTransition) { final boolean controlScreenOff = mDozeParameters.getAlwaysOn() && (mKeyguardShowing || mDozeParameters.shouldControlUnlockedScreenOff()) && !mHost.isPowerSaveActive(); mDozeParameters.setControlScreenOffAnimation(controlScreenOff); mHost.setAnimateScreenOff(controlScreenOff && mDozeParameters.shouldAnimateDozingChange()); } } private void pulseWhileDozing(int reason) { mHost.pulseWhileDozing( new DozeHost.PulseCallback() { Loading Loading @@ -293,34 +224,4 @@ public class DozeUi implements DozeMachine.Part, TunerService.Tunable, scheduleTimeTick(); } @VisibleForTesting KeyguardUpdateMonitorCallback getKeyguardCallback() { return mKeyguardVisibilityCallback; } @Override public void onTuningChanged(String key, String newValue) { if (key.equals(Settings.Secure.DOZE_ALWAYS_ON)) { updateAnimateScreenOff(); } } @Override public void onConfigChanged(Configuration newConfig) { updateAnimateScreenOff(); } /** * Called when StatusBar state changed, could affect unlocked screen off animation state */ @Override public void onStatePostChange() { updateAnimateScreenOff(); } @Override public void onFoldToAodAnimationChanged() { updateAnimateScreenOff(); } } packages/SystemUI/src/com/android/systemui/statusbar/phone/DozeParameters.java +80 −3 Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ package com.android.systemui.statusbar.phone; import android.content.res.Configuration; import android.content.res.Resources; import android.hardware.display.AmbientDisplayConfiguration; import android.os.PowerManager; Loading @@ -26,7 +27,10 @@ import android.util.Log; import android.util.MathUtils; import androidx.annotation.NonNull; import androidx.annotation.VisibleForTesting; import com.android.keyguard.KeyguardUpdateMonitor; import com.android.keyguard.KeyguardUpdateMonitorCallback; import com.android.systemui.Dumpable; import com.android.systemui.R; import com.android.systemui.dagger.SysUISingleton; Loading @@ -36,13 +40,18 @@ import com.android.systemui.doze.DozeScreenState; import com.android.systemui.dump.DumpManager; import com.android.systemui.flags.FeatureFlags; import com.android.systemui.flags.Flags; import com.android.systemui.plugins.statusbar.StatusBarStateController; import com.android.systemui.statusbar.policy.BatteryController; import com.android.systemui.statusbar.policy.ConfigurationController; import com.android.systemui.statusbar.policy.DevicePostureController; import com.android.systemui.tuner.TunerService; import com.android.systemui.unfold.FoldAodAnimationController; import com.android.systemui.unfold.SysUIUnfoldComponent; import java.io.FileDescriptor; import java.io.PrintWriter; import java.util.HashSet; import java.util.Optional; import java.util.Set; import javax.inject.Inject; Loading @@ -54,7 +63,8 @@ import javax.inject.Inject; public class DozeParameters implements TunerService.Tunable, com.android.systemui.plugins.statusbar.DozeParameters, Dumpable { Dumpable, ConfigurationController.ConfigurationListener, StatusBarStateController.StateListener, FoldAodAnimationController.FoldAodAnimationStatus { private static final int MAX_DURATION = 60 * 1000; public static final boolean FORCE_NO_BLANKING = SystemProperties.getBoolean("debug.force_no_blanking", false); Loading @@ -69,12 +79,30 @@ public class DozeParameters implements private final BatteryController mBatteryController; private final FeatureFlags mFeatureFlags; private final ScreenOffAnimationController mScreenOffAnimationController; private final FoldAodAnimationController mFoldAodAnimationController; private final UnlockedScreenOffAnimationController mUnlockedScreenOffAnimationController; private final Set<Callback> mCallbacks = new HashSet<>(); private boolean mDozeAlwaysOn; private boolean mControlScreenOffAnimation; private boolean mKeyguardShowing; @VisibleForTesting final KeyguardUpdateMonitorCallback mKeyguardVisibilityCallback = new KeyguardUpdateMonitorCallback() { @Override public void onKeyguardVisibilityChanged(boolean showing) { mKeyguardShowing = showing; updateControlScreenOff(); } @Override public void onShadeExpandedChanged(boolean expanded) { updateControlScreenOff(); } }; @Inject protected DozeParameters( @Main Resources resources, Loading @@ -85,7 +113,12 @@ public class DozeParameters implements TunerService tunerService, DumpManager dumpManager, FeatureFlags featureFlags, ScreenOffAnimationController screenOffAnimationController) { ScreenOffAnimationController screenOffAnimationController, Optional<SysUIUnfoldComponent> sysUiUnfoldComponent, UnlockedScreenOffAnimationController unlockedScreenOffAnimationController, KeyguardUpdateMonitor keyguardUpdateMonitor, ConfigurationController configurationController, StatusBarStateController statusBarStateController) { mResources = resources; mAmbientDisplayConfiguration = ambientDisplayConfiguration; mAlwaysOnPolicy = alwaysOnDisplayPolicy; Loading @@ -97,11 +130,22 @@ public class DozeParameters implements mPowerManager.setDozeAfterScreenOff(!mControlScreenOffAnimation); mFeatureFlags = featureFlags; mScreenOffAnimationController = screenOffAnimationController; mUnlockedScreenOffAnimationController = unlockedScreenOffAnimationController; keyguardUpdateMonitor.registerCallback(mKeyguardVisibilityCallback); tunerService.addTunable( this, Settings.Secure.DOZE_ALWAYS_ON, Settings.Secure.ACCESSIBILITY_DISPLAY_INVERSION_ENABLED); configurationController.addCallback(this); statusBarStateController.addCallback(this); mFoldAodAnimationController = sysUiUnfoldComponent .map(SysUIUnfoldComponent::getFoldAodAnimationController).orElse(null); if (mFoldAodAnimationController != null) { mFoldAodAnimationController.addCallback(this); } } public boolean getDisplayStateSupported() { Loading Loading @@ -222,13 +266,26 @@ public class DozeParameters implements mPowerManager.setDozeAfterScreenOff(!controlScreenOffAnimation); } public void updateControlScreenOff() { if (!getDisplayNeedsBlanking()) { final boolean controlScreenOff = getAlwaysOn() && (mKeyguardShowing || shouldControlUnlockedScreenOff()); setControlScreenOffAnimation(controlScreenOff); } } /** * Whether we want to control the screen off animation when the device is unlocked. If we do, * we'll animate in AOD before turning off the screen, rather than simply fading to black and * then abruptly showing AOD. * * There are currently several reasons we might not want to control the screen off even if we * are able to, such as the shade being expanded, being in landscape, or having animations * disabled for a11y. */ public boolean shouldControlUnlockedScreenOff() { return mScreenOffAnimationController.shouldControlUnlockedScreenOff(); return canControlUnlockedScreenOff() && mUnlockedScreenOffAnimationController.shouldPlayUnlockedScreenOffAnimation(); } public boolean shouldDelayKeyguardShow() { Loading Loading @@ -325,12 +382,32 @@ public class DozeParameters implements @Override public void onTuningChanged(String key, String newValue) { mDozeAlwaysOn = mAmbientDisplayConfiguration.alwaysOnEnabled(UserHandle.USER_CURRENT); if (key.equals(Settings.Secure.DOZE_ALWAYS_ON)) { updateControlScreenOff(); } for (Callback callback : mCallbacks) { callback.onAlwaysOnChange(); } mScreenOffAnimationController.onAlwaysOnChanged(getAlwaysOn()); } @Override public void onConfigChanged(Configuration newConfig) { updateControlScreenOff(); } @Override public void onStatePostChange() { updateControlScreenOff(); } @Override public void onFoldToAodAnimationChanged() { updateControlScreenOff(); } @Override public void dump(@NonNull FileDescriptor fd, @NonNull PrintWriter pw, @NonNull String[] args) { pw.print("getAlwaysOn(): "); pw.println(getAlwaysOn()); Loading packages/SystemUI/src/com/android/systemui/statusbar/phone/DozeServiceHost.java +0 −10 Original line number Diff line number Diff line Loading @@ -63,7 +63,6 @@ public final class DozeServiceHost implements DozeHost { private final DozeLog mDozeLog; private final PowerManager mPowerManager; private boolean mAnimateWakeup; private boolean mAnimateScreenOff; private boolean mIgnoreTouchWhilePulsing; private Runnable mPendingScreenOffCallback; @VisibleForTesting Loading Loading @@ -356,11 +355,6 @@ public final class DozeServiceHost implements DozeHost { mAnimateWakeup = animateWakeup; } @Override public void setAnimateScreenOff(boolean animateScreenOff) { mAnimateScreenOff = animateScreenOff; } @Override public void onSlpiTap(float screenX, float screenY) { if (screenX > 0 && screenY > 0 && mAmbientIndicationContainer != null Loading Loading @@ -440,10 +434,6 @@ public final class DozeServiceHost implements DozeHost { return mAnimateWakeup; } boolean shouldAnimateScreenOff() { return mAnimateScreenOff; } boolean getIgnoreTouchWhilePulsing() { return mIgnoreTouchWhilePulsing; } Loading packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java +1 −1 Original line number Diff line number Diff line Loading @@ -3162,7 +3162,7 @@ public class StatusBar extends CoreStartable implements boolean wakeAndUnlock = mBiometricUnlockController.getMode() == BiometricUnlockController.MODE_WAKE_AND_UNLOCK; boolean animate = (!mDozing && mDozeServiceHost.shouldAnimateWakeup() && !wakeAndUnlock) || (mDozing && mDozeServiceHost.shouldAnimateScreenOff() || (mDozing && mDozeParameters.shouldControlScreenOff() && visibleNotOccludedOrWillBe); mNotificationPanelViewController.setDozing(mDozing, animate, mWakeUpTouchLocation); Loading Loading
packages/SystemUI/src/com/android/systemui/doze/DozeHost.java +0 −1 Original line number Diff line number Diff line Loading @@ -40,7 +40,6 @@ public interface DozeHost { void extendPulse(int reason); void setAnimateWakeup(boolean animateWakeup); void setAnimateScreenOff(boolean animateScreenOff); /** * Reports that a tap event happend on the Sensors Low Power Island. Loading
packages/SystemUI/src/com/android/systemui/doze/DozeUi.java +2 −101 Original line number Diff line number Diff line Loading @@ -21,30 +21,21 @@ import static com.android.systemui.doze.DozeMachine.State.DOZE_AOD_PAUSED; import android.app.AlarmManager; import android.content.Context; import android.content.res.Configuration; import android.os.Handler; import android.os.SystemClock; import android.provider.Settings; import android.text.format.Formatter; import android.util.Log; import com.android.internal.annotations.VisibleForTesting; import com.android.keyguard.KeyguardUpdateMonitor; import com.android.keyguard.KeyguardUpdateMonitorCallback; import com.android.systemui.dagger.qualifiers.Main; import com.android.systemui.doze.dagger.DozeScope; import com.android.systemui.plugins.statusbar.StatusBarStateController; import com.android.systemui.statusbar.phone.DozeParameters; import com.android.systemui.statusbar.policy.ConfigurationController; import com.android.systemui.tuner.TunerService; import com.android.systemui.unfold.FoldAodAnimationController; import com.android.systemui.unfold.FoldAodAnimationController.FoldAodAnimationStatus; import com.android.systemui.unfold.SysUIUnfoldComponent; import com.android.systemui.util.AlarmTimeout; import com.android.systemui.util.wakelock.WakeLock; import java.util.Calendar; import java.util.Optional; import javax.inject.Inject; Loading @@ -52,9 +43,7 @@ import javax.inject.Inject; * The policy controlling doze. */ @DozeScope public class DozeUi implements DozeMachine.Part, TunerService.Tunable, ConfigurationController.ConfigurationListener, FoldAodAnimationStatus, StatusBarStateController.StateListener { public class DozeUi implements DozeMachine.Part { // if enabled, calls dozeTimeTick() whenever the time changes: private static final boolean BURN_IN_TESTING_ENABLED = false; private static final long TIME_TICK_DEADLINE_MILLIS = 90 * 1000; // 1.5min Loading @@ -62,25 +51,14 @@ public class DozeUi implements DozeMachine.Part, TunerService.Tunable, private final DozeHost mHost; private final Handler mHandler; private final WakeLock mWakeLock; private final FoldAodAnimationController mFoldAodAnimationController; private DozeMachine mMachine; private final AlarmTimeout mTimeTicker; private final boolean mCanAnimateTransition; private final DozeParameters mDozeParameters; private final DozeLog mDozeLog; private final StatusBarStateController mStatusBarStateController; private final TunerService mTunerService; private final ConfigurationController mConfigurationController; private boolean mKeyguardShowing; private final KeyguardUpdateMonitorCallback mKeyguardVisibilityCallback = new KeyguardUpdateMonitorCallback() { @Override public void onKeyguardVisibilityChanged(boolean showing) { mKeyguardShowing = showing; updateAnimateScreenOff(); } @Override public void onTimeChanged() { if (BURN_IN_TESTING_ENABLED && mStatusBarStateController.isDozing()) { Loading @@ -91,11 +69,6 @@ public class DozeUi implements DozeMachine.Part, TunerService.Tunable, mHandler.post(mWakeLock.wrap(() -> {})); } } @Override public void onShadeExpandedChanged(boolean expanded) { updateAnimateScreenOff(); } }; private long mLastTimeTickElapsed = 0; Loading @@ -104,10 +77,8 @@ public class DozeUi implements DozeMachine.Part, TunerService.Tunable, public DozeUi(Context context, AlarmManager alarmManager, WakeLock wakeLock, DozeHost host, @Main Handler handler, DozeParameters params, KeyguardUpdateMonitor keyguardUpdateMonitor, DozeLog dozeLog, TunerService tunerService, StatusBarStateController statusBarStateController, Optional<SysUIUnfoldComponent> sysUiUnfoldComponent, ConfigurationController configurationController) { DozeLog dozeLog) { mContext = context; mWakeLock = wakeLock; mHost = host; Loading @@ -117,31 +88,7 @@ public class DozeUi implements DozeMachine.Part, TunerService.Tunable, mTimeTicker = new AlarmTimeout(alarmManager, this::onTimeTick, "doze_time_tick", handler); keyguardUpdateMonitor.registerCallback(mKeyguardVisibilityCallback); mDozeLog = dozeLog; mTunerService = tunerService; mStatusBarStateController = statusBarStateController; mStatusBarStateController.addCallback(this); mTunerService.addTunable(this, Settings.Secure.DOZE_ALWAYS_ON); mConfigurationController = configurationController; mConfigurationController.addCallback(this); mFoldAodAnimationController = sysUiUnfoldComponent .map(SysUIUnfoldComponent::getFoldAodAnimationController).orElse(null); if (mFoldAodAnimationController != null) { mFoldAodAnimationController.addCallback(this); } } @Override public void destroy() { mTunerService.removeTunable(this); mConfigurationController.removeCallback(this); if (mFoldAodAnimationController != null) { mFoldAodAnimationController.removeCallback(this); } } @Override Loading @@ -149,22 +96,6 @@ public class DozeUi implements DozeMachine.Part, TunerService.Tunable, mMachine = dozeMachine; } /** * Decide if we're taking over the screen-off animation * when the device was configured to skip doze after screen off. */ private void updateAnimateScreenOff() { if (mCanAnimateTransition) { final boolean controlScreenOff = mDozeParameters.getAlwaysOn() && (mKeyguardShowing || mDozeParameters.shouldControlUnlockedScreenOff()) && !mHost.isPowerSaveActive(); mDozeParameters.setControlScreenOffAnimation(controlScreenOff); mHost.setAnimateScreenOff(controlScreenOff && mDozeParameters.shouldAnimateDozingChange()); } } private void pulseWhileDozing(int reason) { mHost.pulseWhileDozing( new DozeHost.PulseCallback() { Loading Loading @@ -293,34 +224,4 @@ public class DozeUi implements DozeMachine.Part, TunerService.Tunable, scheduleTimeTick(); } @VisibleForTesting KeyguardUpdateMonitorCallback getKeyguardCallback() { return mKeyguardVisibilityCallback; } @Override public void onTuningChanged(String key, String newValue) { if (key.equals(Settings.Secure.DOZE_ALWAYS_ON)) { updateAnimateScreenOff(); } } @Override public void onConfigChanged(Configuration newConfig) { updateAnimateScreenOff(); } /** * Called when StatusBar state changed, could affect unlocked screen off animation state */ @Override public void onStatePostChange() { updateAnimateScreenOff(); } @Override public void onFoldToAodAnimationChanged() { updateAnimateScreenOff(); } }
packages/SystemUI/src/com/android/systemui/statusbar/phone/DozeParameters.java +80 −3 Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ package com.android.systemui.statusbar.phone; import android.content.res.Configuration; import android.content.res.Resources; import android.hardware.display.AmbientDisplayConfiguration; import android.os.PowerManager; Loading @@ -26,7 +27,10 @@ import android.util.Log; import android.util.MathUtils; import androidx.annotation.NonNull; import androidx.annotation.VisibleForTesting; import com.android.keyguard.KeyguardUpdateMonitor; import com.android.keyguard.KeyguardUpdateMonitorCallback; import com.android.systemui.Dumpable; import com.android.systemui.R; import com.android.systemui.dagger.SysUISingleton; Loading @@ -36,13 +40,18 @@ import com.android.systemui.doze.DozeScreenState; import com.android.systemui.dump.DumpManager; import com.android.systemui.flags.FeatureFlags; import com.android.systemui.flags.Flags; import com.android.systemui.plugins.statusbar.StatusBarStateController; import com.android.systemui.statusbar.policy.BatteryController; import com.android.systemui.statusbar.policy.ConfigurationController; import com.android.systemui.statusbar.policy.DevicePostureController; import com.android.systemui.tuner.TunerService; import com.android.systemui.unfold.FoldAodAnimationController; import com.android.systemui.unfold.SysUIUnfoldComponent; import java.io.FileDescriptor; import java.io.PrintWriter; import java.util.HashSet; import java.util.Optional; import java.util.Set; import javax.inject.Inject; Loading @@ -54,7 +63,8 @@ import javax.inject.Inject; public class DozeParameters implements TunerService.Tunable, com.android.systemui.plugins.statusbar.DozeParameters, Dumpable { Dumpable, ConfigurationController.ConfigurationListener, StatusBarStateController.StateListener, FoldAodAnimationController.FoldAodAnimationStatus { private static final int MAX_DURATION = 60 * 1000; public static final boolean FORCE_NO_BLANKING = SystemProperties.getBoolean("debug.force_no_blanking", false); Loading @@ -69,12 +79,30 @@ public class DozeParameters implements private final BatteryController mBatteryController; private final FeatureFlags mFeatureFlags; private final ScreenOffAnimationController mScreenOffAnimationController; private final FoldAodAnimationController mFoldAodAnimationController; private final UnlockedScreenOffAnimationController mUnlockedScreenOffAnimationController; private final Set<Callback> mCallbacks = new HashSet<>(); private boolean mDozeAlwaysOn; private boolean mControlScreenOffAnimation; private boolean mKeyguardShowing; @VisibleForTesting final KeyguardUpdateMonitorCallback mKeyguardVisibilityCallback = new KeyguardUpdateMonitorCallback() { @Override public void onKeyguardVisibilityChanged(boolean showing) { mKeyguardShowing = showing; updateControlScreenOff(); } @Override public void onShadeExpandedChanged(boolean expanded) { updateControlScreenOff(); } }; @Inject protected DozeParameters( @Main Resources resources, Loading @@ -85,7 +113,12 @@ public class DozeParameters implements TunerService tunerService, DumpManager dumpManager, FeatureFlags featureFlags, ScreenOffAnimationController screenOffAnimationController) { ScreenOffAnimationController screenOffAnimationController, Optional<SysUIUnfoldComponent> sysUiUnfoldComponent, UnlockedScreenOffAnimationController unlockedScreenOffAnimationController, KeyguardUpdateMonitor keyguardUpdateMonitor, ConfigurationController configurationController, StatusBarStateController statusBarStateController) { mResources = resources; mAmbientDisplayConfiguration = ambientDisplayConfiguration; mAlwaysOnPolicy = alwaysOnDisplayPolicy; Loading @@ -97,11 +130,22 @@ public class DozeParameters implements mPowerManager.setDozeAfterScreenOff(!mControlScreenOffAnimation); mFeatureFlags = featureFlags; mScreenOffAnimationController = screenOffAnimationController; mUnlockedScreenOffAnimationController = unlockedScreenOffAnimationController; keyguardUpdateMonitor.registerCallback(mKeyguardVisibilityCallback); tunerService.addTunable( this, Settings.Secure.DOZE_ALWAYS_ON, Settings.Secure.ACCESSIBILITY_DISPLAY_INVERSION_ENABLED); configurationController.addCallback(this); statusBarStateController.addCallback(this); mFoldAodAnimationController = sysUiUnfoldComponent .map(SysUIUnfoldComponent::getFoldAodAnimationController).orElse(null); if (mFoldAodAnimationController != null) { mFoldAodAnimationController.addCallback(this); } } public boolean getDisplayStateSupported() { Loading Loading @@ -222,13 +266,26 @@ public class DozeParameters implements mPowerManager.setDozeAfterScreenOff(!controlScreenOffAnimation); } public void updateControlScreenOff() { if (!getDisplayNeedsBlanking()) { final boolean controlScreenOff = getAlwaysOn() && (mKeyguardShowing || shouldControlUnlockedScreenOff()); setControlScreenOffAnimation(controlScreenOff); } } /** * Whether we want to control the screen off animation when the device is unlocked. If we do, * we'll animate in AOD before turning off the screen, rather than simply fading to black and * then abruptly showing AOD. * * There are currently several reasons we might not want to control the screen off even if we * are able to, such as the shade being expanded, being in landscape, or having animations * disabled for a11y. */ public boolean shouldControlUnlockedScreenOff() { return mScreenOffAnimationController.shouldControlUnlockedScreenOff(); return canControlUnlockedScreenOff() && mUnlockedScreenOffAnimationController.shouldPlayUnlockedScreenOffAnimation(); } public boolean shouldDelayKeyguardShow() { Loading Loading @@ -325,12 +382,32 @@ public class DozeParameters implements @Override public void onTuningChanged(String key, String newValue) { mDozeAlwaysOn = mAmbientDisplayConfiguration.alwaysOnEnabled(UserHandle.USER_CURRENT); if (key.equals(Settings.Secure.DOZE_ALWAYS_ON)) { updateControlScreenOff(); } for (Callback callback : mCallbacks) { callback.onAlwaysOnChange(); } mScreenOffAnimationController.onAlwaysOnChanged(getAlwaysOn()); } @Override public void onConfigChanged(Configuration newConfig) { updateControlScreenOff(); } @Override public void onStatePostChange() { updateControlScreenOff(); } @Override public void onFoldToAodAnimationChanged() { updateControlScreenOff(); } @Override public void dump(@NonNull FileDescriptor fd, @NonNull PrintWriter pw, @NonNull String[] args) { pw.print("getAlwaysOn(): "); pw.println(getAlwaysOn()); Loading
packages/SystemUI/src/com/android/systemui/statusbar/phone/DozeServiceHost.java +0 −10 Original line number Diff line number Diff line Loading @@ -63,7 +63,6 @@ public final class DozeServiceHost implements DozeHost { private final DozeLog mDozeLog; private final PowerManager mPowerManager; private boolean mAnimateWakeup; private boolean mAnimateScreenOff; private boolean mIgnoreTouchWhilePulsing; private Runnable mPendingScreenOffCallback; @VisibleForTesting Loading Loading @@ -356,11 +355,6 @@ public final class DozeServiceHost implements DozeHost { mAnimateWakeup = animateWakeup; } @Override public void setAnimateScreenOff(boolean animateScreenOff) { mAnimateScreenOff = animateScreenOff; } @Override public void onSlpiTap(float screenX, float screenY) { if (screenX > 0 && screenY > 0 && mAmbientIndicationContainer != null Loading Loading @@ -440,10 +434,6 @@ public final class DozeServiceHost implements DozeHost { return mAnimateWakeup; } boolean shouldAnimateScreenOff() { return mAnimateScreenOff; } boolean getIgnoreTouchWhilePulsing() { return mIgnoreTouchWhilePulsing; } Loading
packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java +1 −1 Original line number Diff line number Diff line Loading @@ -3162,7 +3162,7 @@ public class StatusBar extends CoreStartable implements boolean wakeAndUnlock = mBiometricUnlockController.getMode() == BiometricUnlockController.MODE_WAKE_AND_UNLOCK; boolean animate = (!mDozing && mDozeServiceHost.shouldAnimateWakeup() && !wakeAndUnlock) || (mDozing && mDozeServiceHost.shouldAnimateScreenOff() || (mDozing && mDozeParameters.shouldControlScreenOff() && visibleNotOccludedOrWillBe); mNotificationPanelViewController.setDozing(mDozing, animate, mWakeUpTouchLocation); Loading