Skip to content

Commit 3793368

Browse files
author
Craig Mautner
committed
Set screen brightness to match sensor at power on.
Use the first sensor value received after screen on to set the screen brightness. Do this setting immediately rather than animate to the target brightness. Fixes bug 6612418. Change-Id: I6c24c55e0bd35ef58a6494d3b5e449954241fd00
1 parent b215726 commit 3793368

File tree

1 file changed

+19
-8
lines changed

1 file changed

+19
-8
lines changed

services/java/com/android/server/PowerManagerService.java

Lines changed: 19 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -244,6 +244,7 @@ public class PowerManagerService extends IPowerManager.Stub
244244
private Handler mHandler;
245245
private final TimeoutTask mTimeoutTask = new TimeoutTask();
246246
private ScreenBrightnessAnimator mScreenBrightnessAnimator;
247+
private boolean mWaitingForFirstLightSensor = false;
247248
private boolean mStillNeedSleepNotification;
248249
private boolean mIsPowered = false;
249250
private IActivityManager mActivityService;
@@ -1755,7 +1756,11 @@ private int setScreenStateLocked(boolean on) {
17551756
mLastScreenOnTime = (on ? SystemClock.elapsedRealtime() : 0);
17561757
if (mUseSoftwareAutoBrightness) {
17571758
enableLightSensorLocked(on);
1758-
if (!on) {
1759+
if (on) {
1760+
// If AutoBrightness is enabled, set the brightness immediately after the
1761+
// next sensor value is received.
1762+
mWaitingForFirstLightSensor = mAutoBrightessEnabled;
1763+
} else {
17591764
// make sure button and key backlights are off too
17601765
mButtonLight.turnOff();
17611766
mKeyboardLight.turnOff();
@@ -2636,7 +2641,7 @@ private void dockStateChanged(int state) {
26362641

26372642
private void lightSensorChangedLocked(int value, boolean immediate) {
26382643
if (mDebugLightSensor) {
2639-
Slog.d(TAG, "lightSensorChangedLocked " + value);
2644+
Slog.d(TAG, "lightSensorChangedLocked value=" + value + " immediate=" + immediate);
26402645
}
26412646

26422647
// Don't do anything if the screen is off.
@@ -3212,7 +3217,9 @@ private void proximityChangedLocked(boolean active) {
32123217
private void enableLightSensorLocked(boolean enable) {
32133218
if (mDebugLightSensor) {
32143219
Slog.d(TAG, "enableLightSensorLocked enable=" + enable
3215-
+ " mAutoBrightessEnabled=" + mAutoBrightessEnabled);
3220+
+ " mLightSensorEnabled=" + mLightSensorEnabled
3221+
+ " mAutoBrightessEnabled=" + mAutoBrightessEnabled
3222+
+ " mWaitingForFirstLightSensor=" + mWaitingForFirstLightSensor);
32163223
}
32173224
if (!mAutoBrightessEnabled) {
32183225
enable = false;
@@ -3226,8 +3233,8 @@ private void enableLightSensorLocked(boolean enable) {
32263233
// reset our highest value when reenabling
32273234
mHighestLightSensorValue = -1;
32283235
// force recompute of backlight values
3229-
if (mLightSensorValue >= 0) {
3230-
int value = (int)mLightSensorValue;
3236+
final int value = (int)mLightSensorValue;
3237+
if (value >= 0) {
32313238
mLightSensorValue = -1;
32323239
handleLightSensorValue(value, true);
32333240
}
@@ -3291,8 +3298,9 @@ public void onAccuracyChanged(Sensor sensor, int accuracy) {
32913298

32923299
private void handleLightSensorValue(int value, boolean immediate) {
32933300
long milliseconds = SystemClock.elapsedRealtime();
3294-
if (mLightSensorValue == -1 ||
3295-
milliseconds < mLastScreenOnTime + mLightSensorWarmupTime) {
3301+
if (mLightSensorValue == -1
3302+
|| milliseconds < mLastScreenOnTime + mLightSensorWarmupTime
3303+
|| mWaitingForFirstLightSensor) {
32963304
// process the value immediately if screen has just turned on
32973305
mHandler.removeCallbacks(mAutoBrightnessTask);
32983306
mLightSensorPendingDecrease = false;
@@ -3327,7 +3335,10 @@ public void onSensorChanged(SensorEvent event) {
33273335
if (isScreenTurningOffLocked()) {
33283336
return;
33293337
}
3330-
handleLightSensorValue((int)event.values[0], false);
3338+
handleLightSensorValue((int)event.values[0], mWaitingForFirstLightSensor);
3339+
if (mWaitingForFirstLightSensor) {
3340+
mWaitingForFirstLightSensor = false;
3341+
}
33313342
}
33323343
}
33333344

0 commit comments

Comments
 (0)