Loading packages/SystemUI/src/com/android/systemui/doze/DozeFactory.java +4 −3 Original line number Original line Diff line number Diff line Loading @@ -63,7 +63,7 @@ public class DozeFactory { new DozeFalsingManagerAdapter(FalsingManager.getInstance(context)), new DozeFalsingManagerAdapter(FalsingManager.getInstance(context)), createDozeTriggers(context, sensorManager, host, alarmManager, config, params, createDozeTriggers(context, sensorManager, host, alarmManager, config, params, handler, wakeLock, machine), handler, wakeLock, machine), createDozeUi(context, host, wakeLock, machine, handler, alarmManager), createDozeUi(context, host, wakeLock, machine, handler, alarmManager, params), new DozeScreenState(wrappedService, handler), new DozeScreenState(wrappedService, handler), createDozeScreenBrightness(context, wrappedService, sensorManager, host, handler), createDozeScreenBrightness(context, wrappedService, sensorManager, host, handler), }); }); Loading @@ -89,8 +89,9 @@ public class DozeFactory { } } private DozeMachine.Part createDozeUi(Context context, DozeHost host, WakeLock wakeLock, private DozeMachine.Part createDozeUi(Context context, DozeHost host, WakeLock wakeLock, DozeMachine machine, Handler handler, AlarmManager alarmManager) { DozeMachine machine, Handler handler, AlarmManager alarmManager, return new DozeUi(context, alarmManager, machine, wakeLock, host, handler); DozeParameters params) { return new DozeUi(context, alarmManager, machine, wakeLock, host, handler, params); } } public static DozeHost getHost(DozeService service) { public static DozeHost getHost(DozeService service) { Loading packages/SystemUI/src/com/android/systemui/doze/DozeHost.java +1 −0 Original line number Original line Diff line number Diff line Loading @@ -38,6 +38,7 @@ public interface DozeHost { void extendPulse(); void extendPulse(); void setAnimateWakeup(boolean animateWakeup); void setAnimateWakeup(boolean animateWakeup); void setAnimateScreenOff(boolean animateScreenOff); void onDoubleTap(float x, float y); void onDoubleTap(float x, float y); Loading packages/SystemUI/src/com/android/systemui/doze/DozeUi.java +7 −2 Original line number Original line Diff line number Diff line Loading @@ -23,6 +23,7 @@ import android.os.SystemClock; import android.text.format.Formatter; import android.text.format.Formatter; import android.util.Log; import android.util.Log; import com.android.systemui.statusbar.phone.DozeParameters; import com.android.systemui.util.AlarmTimeout; import com.android.systemui.util.AlarmTimeout; import com.android.systemui.util.wakelock.WakeLock; import com.android.systemui.util.wakelock.WakeLock; Loading @@ -41,18 +42,22 @@ public class DozeUi implements DozeMachine.Part { private final WakeLock mWakeLock; private final WakeLock mWakeLock; private final DozeMachine mMachine; private final DozeMachine mMachine; private final AlarmTimeout mTimeTicker; private final AlarmTimeout mTimeTicker; private final boolean mCanAnimateWakeup; private long mLastTimeTickElapsed = 0; private long mLastTimeTickElapsed = 0; public DozeUi(Context context, AlarmManager alarmManager, DozeMachine machine, public DozeUi(Context context, AlarmManager alarmManager, DozeMachine machine, WakeLock wakeLock, DozeHost host, Handler handler) { WakeLock wakeLock, DozeHost host, Handler handler, DozeParameters params) { mContext = context; mContext = context; mMachine = machine; mMachine = machine; mWakeLock = wakeLock; mWakeLock = wakeLock; mHost = host; mHost = host; mHandler = handler; mHandler = handler; mCanAnimateWakeup = !params.getDisplayNeedsBlanking(); mTimeTicker = new AlarmTimeout(alarmManager, this::onTimeTick, "doze_time_tick", handler); mTimeTicker = new AlarmTimeout(alarmManager, this::onTimeTick, "doze_time_tick", handler); mHost.setAnimateScreenOff(params.getCanControlScreenOffAnimation()); } } private void pulseWhileDozing(int reason) { private void pulseWhileDozing(int reason) { Loading Loading @@ -106,7 +111,7 @@ public class DozeUi implements DozeMachine.Part { // Keep current state. // Keep current state. break; break; default: default: mHost.setAnimateWakeup(false); mHost.setAnimateWakeup(mCanAnimateWakeup); break; break; } } } } Loading packages/SystemUI/src/com/android/systemui/statusbar/phone/DozeParameters.java +22 −0 Original line number Original line Diff line number Diff line Loading @@ -119,6 +119,28 @@ public class DozeParameters { return mAmbientDisplayConfiguration.alwaysOnEnabled(UserHandle.USER_CURRENT); return mAmbientDisplayConfiguration.alwaysOnEnabled(UserHandle.USER_CURRENT); } } /** * Some screens need to be completely black before changing the display power mode, * unexpected behavior might happen if this parameter isn't respected. * * @return true if screen needs to be completely black before a power transition. */ public boolean getDisplayNeedsBlanking() { return mContext.getResources().getBoolean( com.android.internal.R.bool.config_displayBlanksAfterDoze); } /** * Whether we can implement our own screen off animation or if we need * to rely on DisplayPowerManager to dim the display. * * @return true if SystemUI can control the screen off animation. */ public boolean getCanControlScreenOffAnimation() { return !mContext.getResources().getBoolean( com.android.internal.R.bool.config_dozeAfterScreenOff); } private boolean getBoolean(String propName, int resId) { private boolean getBoolean(String propName, int resId) { return SystemProperties.getBoolean(propName, mContext.getResources().getBoolean(resId)); return SystemProperties.getBoolean(propName, mContext.getResources().getBoolean(resId)); } } Loading packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimState.java +22 −9 Original line number Original line Diff line number Diff line Loading @@ -20,6 +20,7 @@ import android.graphics.Color; import android.os.Trace; import android.os.Trace; import com.android.systemui.statusbar.ScrimView; import com.android.systemui.statusbar.ScrimView; import com.android.systemui.statusbar.stack.StackStateAnimator; /** /** * Possible states of the ScrimController state machine. * Possible states of the ScrimController state machine. Loading @@ -38,13 +39,19 @@ public enum ScrimState { @Override @Override public void prepare(ScrimState previousState) { public void prepare(ScrimState previousState) { mBlankScreen = false; if (previousState == ScrimState.AOD) { mAnimationDuration = StackStateAnimator.ANIMATION_DURATION_WAKEUP; if (mDisplayRequiresBlanking) { // DisplayPowerManager will blank the screen, we'll just // DisplayPowerManager will blank the screen, we'll just // set our scrim to black in this frame to avoid flickering and // set our scrim to black in this frame to avoid flickering and // fade it out afterwards. // fade it out afterwards. mBlankScreen = previousState == ScrimState.AOD; mBlankScreen = true; if (previousState == ScrimState.AOD) { updateScrimColor(mScrimInFront, 1, Color.BLACK); updateScrimColor(mScrimInFront, 1, Color.BLACK); } } } else { mAnimationDuration = ScrimController.ANIMATION_DURATION; } mCurrentBehindAlpha = mScrimBehindAlphaKeyguard; mCurrentBehindAlpha = mScrimBehindAlphaKeyguard; mCurrentInFrontAlpha = 0; mCurrentInFrontAlpha = 0; } } Loading Loading @@ -78,7 +85,7 @@ public enum ScrimState { AOD { AOD { @Override @Override public void prepare(ScrimState previousState) { public void prepare(ScrimState previousState) { if (previousState == ScrimState.PULSING) { if (previousState == ScrimState.PULSING && !mCanControlScreenOff) { updateScrimColor(mScrimInFront, 1, Color.BLACK); updateScrimColor(mScrimInFront, 1, Color.BLACK); } } final boolean alwaysOnEnabled = mDozeParameters.getAlwaysOn(); final boolean alwaysOnEnabled = mDozeParameters.getAlwaysOn(); Loading @@ -89,7 +96,7 @@ public enum ScrimState { mCurrentBehindTint = Color.BLACK; mCurrentBehindTint = Color.BLACK; // DisplayPowerManager will blank the screen for us, we just need // DisplayPowerManager will blank the screen for us, we just need // to set our state. // to set our state. mAnimateChange = false; mAnimateChange = mCanControlScreenOff; } } }, }, Loading @@ -103,9 +110,11 @@ public enum ScrimState { mCurrentInFrontAlpha = 0; mCurrentInFrontAlpha = 0; mCurrentInFrontTint = Color.BLACK; mCurrentInFrontTint = Color.BLACK; mCurrentBehindTint = Color.BLACK; mCurrentBehindTint = Color.BLACK; mBlankScreen = true; mBlankScreen = mDisplayRequiresBlanking; if (mDisplayRequiresBlanking) { updateScrimColor(mScrimInFront, 1, Color.BLACK); updateScrimColor(mScrimInFront, 1, Color.BLACK); } } } }, }, /** /** Loading Loading @@ -147,11 +156,15 @@ public enum ScrimState { ScrimView mScrimInFront; ScrimView mScrimInFront; ScrimView mScrimBehind; ScrimView mScrimBehind; DozeParameters mDozeParameters; DozeParameters mDozeParameters; boolean mDisplayRequiresBlanking; boolean mCanControlScreenOff; public void init(ScrimView scrimInFront, ScrimView scrimBehind, DozeParameters dozeParameters) { public void init(ScrimView scrimInFront, ScrimView scrimBehind, DozeParameters dozeParameters) { mScrimInFront = scrimInFront; mScrimInFront = scrimInFront; mScrimBehind = scrimBehind; mScrimBehind = scrimBehind; mDozeParameters = dozeParameters; mDozeParameters = dozeParameters; mDisplayRequiresBlanking = dozeParameters.getDisplayNeedsBlanking(); mCanControlScreenOff = dozeParameters.getCanControlScreenOffAnimation(); } } public void prepare(ScrimState previousState) { public void prepare(ScrimState previousState) { Loading Loading
packages/SystemUI/src/com/android/systemui/doze/DozeFactory.java +4 −3 Original line number Original line Diff line number Diff line Loading @@ -63,7 +63,7 @@ public class DozeFactory { new DozeFalsingManagerAdapter(FalsingManager.getInstance(context)), new DozeFalsingManagerAdapter(FalsingManager.getInstance(context)), createDozeTriggers(context, sensorManager, host, alarmManager, config, params, createDozeTriggers(context, sensorManager, host, alarmManager, config, params, handler, wakeLock, machine), handler, wakeLock, machine), createDozeUi(context, host, wakeLock, machine, handler, alarmManager), createDozeUi(context, host, wakeLock, machine, handler, alarmManager, params), new DozeScreenState(wrappedService, handler), new DozeScreenState(wrappedService, handler), createDozeScreenBrightness(context, wrappedService, sensorManager, host, handler), createDozeScreenBrightness(context, wrappedService, sensorManager, host, handler), }); }); Loading @@ -89,8 +89,9 @@ public class DozeFactory { } } private DozeMachine.Part createDozeUi(Context context, DozeHost host, WakeLock wakeLock, private DozeMachine.Part createDozeUi(Context context, DozeHost host, WakeLock wakeLock, DozeMachine machine, Handler handler, AlarmManager alarmManager) { DozeMachine machine, Handler handler, AlarmManager alarmManager, return new DozeUi(context, alarmManager, machine, wakeLock, host, handler); DozeParameters params) { return new DozeUi(context, alarmManager, machine, wakeLock, host, handler, params); } } public static DozeHost getHost(DozeService service) { public static DozeHost getHost(DozeService service) { Loading
packages/SystemUI/src/com/android/systemui/doze/DozeHost.java +1 −0 Original line number Original line Diff line number Diff line Loading @@ -38,6 +38,7 @@ public interface DozeHost { void extendPulse(); void extendPulse(); void setAnimateWakeup(boolean animateWakeup); void setAnimateWakeup(boolean animateWakeup); void setAnimateScreenOff(boolean animateScreenOff); void onDoubleTap(float x, float y); void onDoubleTap(float x, float y); Loading
packages/SystemUI/src/com/android/systemui/doze/DozeUi.java +7 −2 Original line number Original line Diff line number Diff line Loading @@ -23,6 +23,7 @@ import android.os.SystemClock; import android.text.format.Formatter; import android.text.format.Formatter; import android.util.Log; import android.util.Log; import com.android.systemui.statusbar.phone.DozeParameters; import com.android.systemui.util.AlarmTimeout; import com.android.systemui.util.AlarmTimeout; import com.android.systemui.util.wakelock.WakeLock; import com.android.systemui.util.wakelock.WakeLock; Loading @@ -41,18 +42,22 @@ public class DozeUi implements DozeMachine.Part { private final WakeLock mWakeLock; private final WakeLock mWakeLock; private final DozeMachine mMachine; private final DozeMachine mMachine; private final AlarmTimeout mTimeTicker; private final AlarmTimeout mTimeTicker; private final boolean mCanAnimateWakeup; private long mLastTimeTickElapsed = 0; private long mLastTimeTickElapsed = 0; public DozeUi(Context context, AlarmManager alarmManager, DozeMachine machine, public DozeUi(Context context, AlarmManager alarmManager, DozeMachine machine, WakeLock wakeLock, DozeHost host, Handler handler) { WakeLock wakeLock, DozeHost host, Handler handler, DozeParameters params) { mContext = context; mContext = context; mMachine = machine; mMachine = machine; mWakeLock = wakeLock; mWakeLock = wakeLock; mHost = host; mHost = host; mHandler = handler; mHandler = handler; mCanAnimateWakeup = !params.getDisplayNeedsBlanking(); mTimeTicker = new AlarmTimeout(alarmManager, this::onTimeTick, "doze_time_tick", handler); mTimeTicker = new AlarmTimeout(alarmManager, this::onTimeTick, "doze_time_tick", handler); mHost.setAnimateScreenOff(params.getCanControlScreenOffAnimation()); } } private void pulseWhileDozing(int reason) { private void pulseWhileDozing(int reason) { Loading Loading @@ -106,7 +111,7 @@ public class DozeUi implements DozeMachine.Part { // Keep current state. // Keep current state. break; break; default: default: mHost.setAnimateWakeup(false); mHost.setAnimateWakeup(mCanAnimateWakeup); break; break; } } } } Loading
packages/SystemUI/src/com/android/systemui/statusbar/phone/DozeParameters.java +22 −0 Original line number Original line Diff line number Diff line Loading @@ -119,6 +119,28 @@ public class DozeParameters { return mAmbientDisplayConfiguration.alwaysOnEnabled(UserHandle.USER_CURRENT); return mAmbientDisplayConfiguration.alwaysOnEnabled(UserHandle.USER_CURRENT); } } /** * Some screens need to be completely black before changing the display power mode, * unexpected behavior might happen if this parameter isn't respected. * * @return true if screen needs to be completely black before a power transition. */ public boolean getDisplayNeedsBlanking() { return mContext.getResources().getBoolean( com.android.internal.R.bool.config_displayBlanksAfterDoze); } /** * Whether we can implement our own screen off animation or if we need * to rely on DisplayPowerManager to dim the display. * * @return true if SystemUI can control the screen off animation. */ public boolean getCanControlScreenOffAnimation() { return !mContext.getResources().getBoolean( com.android.internal.R.bool.config_dozeAfterScreenOff); } private boolean getBoolean(String propName, int resId) { private boolean getBoolean(String propName, int resId) { return SystemProperties.getBoolean(propName, mContext.getResources().getBoolean(resId)); return SystemProperties.getBoolean(propName, mContext.getResources().getBoolean(resId)); } } Loading
packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimState.java +22 −9 Original line number Original line Diff line number Diff line Loading @@ -20,6 +20,7 @@ import android.graphics.Color; import android.os.Trace; import android.os.Trace; import com.android.systemui.statusbar.ScrimView; import com.android.systemui.statusbar.ScrimView; import com.android.systemui.statusbar.stack.StackStateAnimator; /** /** * Possible states of the ScrimController state machine. * Possible states of the ScrimController state machine. Loading @@ -38,13 +39,19 @@ public enum ScrimState { @Override @Override public void prepare(ScrimState previousState) { public void prepare(ScrimState previousState) { mBlankScreen = false; if (previousState == ScrimState.AOD) { mAnimationDuration = StackStateAnimator.ANIMATION_DURATION_WAKEUP; if (mDisplayRequiresBlanking) { // DisplayPowerManager will blank the screen, we'll just // DisplayPowerManager will blank the screen, we'll just // set our scrim to black in this frame to avoid flickering and // set our scrim to black in this frame to avoid flickering and // fade it out afterwards. // fade it out afterwards. mBlankScreen = previousState == ScrimState.AOD; mBlankScreen = true; if (previousState == ScrimState.AOD) { updateScrimColor(mScrimInFront, 1, Color.BLACK); updateScrimColor(mScrimInFront, 1, Color.BLACK); } } } else { mAnimationDuration = ScrimController.ANIMATION_DURATION; } mCurrentBehindAlpha = mScrimBehindAlphaKeyguard; mCurrentBehindAlpha = mScrimBehindAlphaKeyguard; mCurrentInFrontAlpha = 0; mCurrentInFrontAlpha = 0; } } Loading Loading @@ -78,7 +85,7 @@ public enum ScrimState { AOD { AOD { @Override @Override public void prepare(ScrimState previousState) { public void prepare(ScrimState previousState) { if (previousState == ScrimState.PULSING) { if (previousState == ScrimState.PULSING && !mCanControlScreenOff) { updateScrimColor(mScrimInFront, 1, Color.BLACK); updateScrimColor(mScrimInFront, 1, Color.BLACK); } } final boolean alwaysOnEnabled = mDozeParameters.getAlwaysOn(); final boolean alwaysOnEnabled = mDozeParameters.getAlwaysOn(); Loading @@ -89,7 +96,7 @@ public enum ScrimState { mCurrentBehindTint = Color.BLACK; mCurrentBehindTint = Color.BLACK; // DisplayPowerManager will blank the screen for us, we just need // DisplayPowerManager will blank the screen for us, we just need // to set our state. // to set our state. mAnimateChange = false; mAnimateChange = mCanControlScreenOff; } } }, }, Loading @@ -103,9 +110,11 @@ public enum ScrimState { mCurrentInFrontAlpha = 0; mCurrentInFrontAlpha = 0; mCurrentInFrontTint = Color.BLACK; mCurrentInFrontTint = Color.BLACK; mCurrentBehindTint = Color.BLACK; mCurrentBehindTint = Color.BLACK; mBlankScreen = true; mBlankScreen = mDisplayRequiresBlanking; if (mDisplayRequiresBlanking) { updateScrimColor(mScrimInFront, 1, Color.BLACK); updateScrimColor(mScrimInFront, 1, Color.BLACK); } } } }, }, /** /** Loading Loading @@ -147,11 +156,15 @@ public enum ScrimState { ScrimView mScrimInFront; ScrimView mScrimInFront; ScrimView mScrimBehind; ScrimView mScrimBehind; DozeParameters mDozeParameters; DozeParameters mDozeParameters; boolean mDisplayRequiresBlanking; boolean mCanControlScreenOff; public void init(ScrimView scrimInFront, ScrimView scrimBehind, DozeParameters dozeParameters) { public void init(ScrimView scrimInFront, ScrimView scrimBehind, DozeParameters dozeParameters) { mScrimInFront = scrimInFront; mScrimInFront = scrimInFront; mScrimBehind = scrimBehind; mScrimBehind = scrimBehind; mDozeParameters = dozeParameters; mDozeParameters = dozeParameters; mDisplayRequiresBlanking = dozeParameters.getDisplayNeedsBlanking(); mCanControlScreenOff = dozeParameters.getCanControlScreenOffAnimation(); } } public void prepare(ScrimState previousState) { public void prepare(ScrimState previousState) { Loading