Merge "Clamp display brightness in AOD"

This commit is contained in:
Lucas Dupin
2018-07-30 05:10:44 +00:00
committed by Android (Google) Code Review
2 changed files with 27 additions and 2 deletions

View File

@@ -23,6 +23,8 @@ import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.os.Handler;
import android.os.Trace;
import android.os.UserHandle;
import android.provider.Settings;
import com.android.internal.annotations.VisibleForTesting;
@@ -111,7 +113,7 @@ public class DozeScreenBrightness implements DozeMachine.Part, SensorEventListen
int brightness = computeBrightness(mLastSensorValue);
boolean brightnessReady = brightness > 0;
if (brightnessReady) {
mDozeService.setDozeScreenBrightness(brightness);
mDozeService.setDozeScreenBrightness(clampToUserSetting(brightness));
}
int scrimOpacity = -1;
@@ -150,10 +152,17 @@ public class DozeScreenBrightness implements DozeMachine.Part, SensorEventListen
}
private void resetBrightnessToDefault() {
mDozeService.setDozeScreenBrightness(mDefaultDozeBrightness);
mDozeService.setDozeScreenBrightness(clampToUserSetting(mDefaultDozeBrightness));
mDozeHost.setAodDimmingScrim(0f);
}
private int clampToUserSetting(int brightness) {
int userSetting = Settings.System.getIntForUser(mContext.getContentResolver(),
Settings.System.SCREEN_BRIGHTNESS, Integer.MAX_VALUE,
UserHandle.USER_CURRENT);
return Math.min(brightness, userSetting);
}
private void setLightSensorEnabled(boolean enabled) {
if (enabled && !mRegistered && mLightSensor != null) {
// Wait until we get an event from the sensor until indicating ready.

View File

@@ -34,6 +34,8 @@ import static org.junit.Assert.assertThat;
import static org.junit.Assert.assertTrue;
import android.os.PowerManager;
import android.os.UserHandle;
import android.provider.Settings;
import android.support.test.filters.SmallTest;
import android.support.test.runner.AndroidJUnit4;
@@ -60,6 +62,9 @@ public class DozeScreenBrightnessTest extends SysuiTestCase {
@Before
public void setUp() throws Exception {
Settings.System.putIntForUser(mContext.getContentResolver(),
Settings.System.SCREEN_BRIGHTNESS, DEFAULT_BRIGHTNESS,
UserHandle.USER_CURRENT);
mServiceFake = new DozeServiceFake();
mHostFake = new DozeHostFake();
mSensorManager = new FakeSensorManager(mContext);
@@ -87,6 +92,17 @@ public class DozeScreenBrightnessTest extends SysuiTestCase {
assertEquals(3, mServiceFake.screenBrightness);
}
@Test
public void testAod_usesLightSensorRespectingUserSetting() throws Exception {
int maxBrightness = 3;
Settings.System.putIntForUser(mContext.getContentResolver(),
Settings.System.SCREEN_BRIGHTNESS, maxBrightness,
UserHandle.USER_CURRENT);
mScreen.transitionTo(UNINITIALIZED, INITIALIZED);
assertEquals(maxBrightness, mServiceFake.screenBrightness);
}
@Test
public void testPausingAod_doesntPauseLightSensor() throws Exception {
mScreen.transitionTo(UNINITIALIZED, INITIALIZED);