From cbe0596c4d7d438ac840fffe4b819ef5f5bea6f9 Mon Sep 17 00:00:00 2001 From: Lucas Dupin Date: Thu, 26 Apr 2018 16:44:05 -0700 Subject: Hide low-power mode black frame Hide the wallpaper earlier and wait a little longer to switch to low power mode. This way the flickering area is less noticeable, since less pixels will be visible, and users are less likely to be looking at the screen. Test: atest packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/DozeParametersTest.java Change-Id: I24f2d64f580d7fdc63f6c768446d06140c29cfa5 Fixes: 78302022 --- .../src/com/android/systemui/doze/DozeScreenState.java | 8 +++++++- .../com/android/systemui/statusbar/phone/DozeParameters.java | 4 +++- .../android/systemui/statusbar/phone/DozeParametersTest.java | 10 ++++++++++ 3 files changed, 20 insertions(+), 2 deletions(-) diff --git a/packages/SystemUI/src/com/android/systemui/doze/DozeScreenState.java b/packages/SystemUI/src/com/android/systemui/doze/DozeScreenState.java index a0fdb9dc5b90..b0bda16b1421 100644 --- a/packages/SystemUI/src/com/android/systemui/doze/DozeScreenState.java +++ b/packages/SystemUI/src/com/android/systemui/doze/DozeScreenState.java @@ -36,7 +36,13 @@ public class DozeScreenState implements DozeMachine.Part { * Delay entering low power mode when animating to make sure that we'll have * time to move all elements into their final positions while still at 60 fps. */ - private static final int ENTER_DOZE_DELAY = 3000; + private static final int ENTER_DOZE_DELAY = 6000; + /** + * Hide wallpaper earlier when entering low power mode. The gap between + * hiding the wallpaper and changing the display mode is necessary to hide + * the black frame that's inherent to hardware specs. + */ + public static final int ENTER_DOZE_HIDE_WALLPAPER_DELAY = 2000; private final DozeMachine.Service mDozeService; private final Handler mHandler; diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/DozeParameters.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/DozeParameters.java index d2d9c4c9613b..85fac16d1c7b 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/DozeParameters.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/DozeParameters.java @@ -30,6 +30,7 @@ import com.android.internal.hardware.AmbientDisplayConfiguration; import com.android.systemui.Dependency; import com.android.systemui.R; import com.android.systemui.doze.AlwaysOnDisplayPolicy; +import com.android.systemui.doze.DozeScreenState; import com.android.systemui.tuner.TunerService; import java.io.PrintWriter; @@ -153,7 +154,8 @@ public class DozeParameters implements TunerService.Tunable { * @return duration in millis. */ public long getWallpaperAodDuration() { - return mAlwaysOnPolicy.wallpaperVisibilityDuration; + return shouldControlScreenOff() ? DozeScreenState.ENTER_DOZE_HIDE_WALLPAPER_DELAY + : mAlwaysOnPolicy.wallpaperVisibilityDuration; } /** diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/DozeParametersTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/DozeParametersTest.java index 550a35dc9ffc..532019fe09c6 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/DozeParametersTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/DozeParametersTest.java @@ -22,6 +22,7 @@ import android.support.test.runner.AndroidJUnit4; import android.test.suitebuilder.annotation.SmallTest; import com.android.systemui.SysuiTestCase; +import com.android.systemui.doze.DozeScreenState; import com.android.systemui.statusbar.phone.DozeParameters.IntInOutMatcher; import org.junit.Assert; @@ -218,6 +219,15 @@ public class DozeParametersTest extends SysuiTestCase { verify(dozeParameters.getPowerManager()).setDozeAfterScreenOff(eq(false)); } + @Test + public void test_getWallpaperAodDuration_when_shouldControlScreenOff() { + TestableDozeParameters dozeParameters = new TestableDozeParameters(getContext()); + dozeParameters.setControlScreenOffAnimation(true); + Assert.assertEquals("wallpaper hides faster when controlling screen off", + dozeParameters.getWallpaperAodDuration(), + DozeScreenState.ENTER_DOZE_HIDE_WALLPAPER_DELAY); + } + private class TestableDozeParameters extends DozeParameters { private PowerManager mPowerManager; -- cgit v1.2.3-59-g8ed1b