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
This commit is contained in:
Lucas Dupin
2018-04-26 16:44:05 -07:00
parent b1a3a5f582
commit cbe0596c4d
3 changed files with 20 additions and 2 deletions

View File

@@ -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;

View File

@@ -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;
}
/**

View File

@@ -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;