diff --git a/services/java/com/android/server/PowerManagerService.java b/services/java/com/android/server/PowerManagerService.java index 4bf606dcf9abf..be1e8a5e372f6 100644 --- a/services/java/com/android/server/PowerManagerService.java +++ b/services/java/com/android/server/PowerManagerService.java @@ -211,7 +211,8 @@ class PowerManagerService extends IPowerManager.Stub private long mScreenOnStartTime; private boolean mPreventScreenOn; private int mScreenBrightnessOverride = -1; - private boolean mHasHardwareAutoBrightness; + private boolean mUseSoftwareAutoBrightness; + private boolean mUseHardwareAutoBrightness; private boolean mAutoBrightessEnabled; private int[] mAutoBrightnessLevels; private int[] mLcdBacklightValues; @@ -438,9 +439,16 @@ class PowerManagerService extends IPowerManager.Stub mScreenOffIntent.addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY); Resources resources = mContext.getResources(); - mHasHardwareAutoBrightness = resources.getBoolean( + + // read settings for auto-brightness + mUseSoftwareAutoBrightness = resources.getBoolean( + com.android.internal.R.bool.config_automatic_brightness_available); + mUseHardwareAutoBrightness = resources.getBoolean( com.android.internal.R.bool.config_hardware_automatic_brightness_available); - if (!mHasHardwareAutoBrightness) { + if (mUseHardwareAutoBrightness) { + mUseSoftwareAutoBrightness = false; + } + if (mUseSoftwareAutoBrightness) { mAutoBrightnessLevels = resources.getIntArray( com.android.internal.R.array.config_autoBrightnessLevels); mLcdBacklightValues = resources.getIntArray( @@ -479,7 +487,7 @@ class PowerManagerService extends IPowerManager.Stub // And explicitly do the initial update of our cached settings updateGservicesValues(); - if (mAutoBrightessEnabled && !mHasHardwareAutoBrightness) { + if (mUseSoftwareAutoBrightness && mAutoBrightessEnabled) { // turn the screen on setPowerState(SCREEN_BRIGHT); } else { @@ -581,7 +589,7 @@ class PowerManagerService extends IPowerManager.Stub switch (wl.flags & LOCK_MASK) { case PowerManager.FULL_WAKE_LOCK: - if (mAutoBrightessEnabled && !mHasHardwareAutoBrightness) { + if (mAutoBrightessEnabled && mUseSoftwareAutoBrightness) { wl.minState = SCREEN_BRIGHT; } else { wl.minState = (mKeyboardVisible ? ALL_BRIGHT : SCREEN_BUTTON_BRIGHT); @@ -887,7 +895,8 @@ class PowerManagerService extends IPowerManager.Stub pw.println(" mLightSensorEnabled=" + mLightSensorEnabled); pw.println(" mLightSensorValue=" + mLightSensorValue); pw.println(" mLightSensorPendingValue=" + mLightSensorPendingValue); - pw.println(" mHasHardwareAutoBrightness=" + mHasHardwareAutoBrightness); + pw.println(" mUseHardwareAutoBrightness=" + mUseHardwareAutoBrightness); + pw.println(" mUseSoftwareAutoBrightness=" + mUseSoftwareAutoBrightness); pw.println(" mAutoBrightessEnabled=" + mAutoBrightessEnabled); mScreenBrightness.dump(pw, " mScreenBrightness: "); mKeyboardBrightness.dump(pw, " mKeyboardBrightness: "); @@ -1290,7 +1299,7 @@ class PowerManagerService extends IPowerManager.Stub private int setScreenStateLocked(boolean on) { int err = Power.setScreenState(on); - if (err == 0 && !mHasHardwareAutoBrightness) { + if (err == 0 && mUseSoftwareAutoBrightness) { enableLightSensor(on && mAutoBrightessEnabled); if (!on) { // make sure button and key backlights are off too @@ -1337,7 +1346,7 @@ class PowerManagerService extends IPowerManager.Stub return; } - if (!mDoneBooting && !(mAutoBrightessEnabled && !mHasHardwareAutoBrightness)) { + if (!mDoneBooting && !(mAutoBrightessEnabled && mUseSoftwareAutoBrightness)) { newState |= ALL_BRIGHT; } @@ -1758,7 +1767,7 @@ class PowerManagerService extends IPowerManager.Stub try { if (mScreenBrightnessOverride >= 0) { return mScreenBrightnessOverride; - } else if (mLightSensorBrightness >= 0 && !mHasHardwareAutoBrightness) { + } else if (mLightSensorBrightness >= 0 && mUseSoftwareAutoBrightness) { return mLightSensorBrightness; } final int brightness = Settings.System.getInt(mContext.getContentResolver(), @@ -1850,7 +1859,7 @@ class PowerManagerService extends IPowerManager.Stub // Only turn on button backlights if a button was pressed // and auto brightness is disabled if (eventType == BUTTON_EVENT && - !(mAutoBrightessEnabled && !mHasHardwareAutoBrightness)) { + !(mAutoBrightessEnabled && mUseSoftwareAutoBrightness)) { mUserState = (mKeyboardVisible ? ALL_BRIGHT : SCREEN_BUTTON_BRIGHT); } else { // don't clear button/keyboard backlights when the screen is touched. @@ -1908,8 +1917,6 @@ class PowerManagerService extends IPowerManager.Stub Log.d(TAG, "lightSensorChangedLocked " + value); } - if (mHasHardwareAutoBrightness) return; - if (mLightSensorValue != value) { mLightSensorValue = value; if ((mPowerState & BATTERY_LOW_BIT) == 0) { @@ -2057,17 +2064,17 @@ class PowerManagerService extends IPowerManager.Stub boolean enabled = (mode == SCREEN_BRIGHTNESS_MODE_AUTOMATIC); if (mAutoBrightessEnabled != enabled) { mAutoBrightessEnabled = enabled; - // reset computed brightness - mLightSensorValue = -1; - mLightSensorBrightness = -1; - if (mHasHardwareAutoBrightness) { + if (mUseHardwareAutoBrightness) { // When setting auto-brightness, must reset the brightness afterwards mHardware.setAutoBrightness_UNCHECKED(enabled); if (screenIsOn()) { setBacklightBrightness((int)mScreenBrightness.curValue); } - } else { + } else if (mUseSoftwareAutoBrightness) { + // reset computed brightness + mLightSensorValue = -1; + mLightSensorBrightness = -1; enableLightSensor(screenIsOn() && enabled); } } @@ -2222,7 +2229,7 @@ class PowerManagerService extends IPowerManager.Stub mSensorManager = new SensorManager(mHandlerThread.getLooper()); mProximitySensor = mSensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY); // don't bother with the light sensor if auto brightness is handled in hardware - if (!mHasHardwareAutoBrightness) { + if (mUseSoftwareAutoBrightness) { mLightSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_LIGHT); enableLightSensor(mAutoBrightessEnabled); }