Use separate flags for enabling hardware and software auto-brightness.
This cleans up the code in preparation for some other auto-brightness changes and fixes support for devices without light sensors. Change-Id: I3d4802cf860a865ffd86a8bb57cd57b46359433d Signed-off-by: Mike Lockwood <lockwood@android.com>
This commit is contained in:
@@ -211,7 +211,8 @@ class PowerManagerService extends IPowerManager.Stub
|
|||||||
private long mScreenOnStartTime;
|
private long mScreenOnStartTime;
|
||||||
private boolean mPreventScreenOn;
|
private boolean mPreventScreenOn;
|
||||||
private int mScreenBrightnessOverride = -1;
|
private int mScreenBrightnessOverride = -1;
|
||||||
private boolean mHasHardwareAutoBrightness;
|
private boolean mUseSoftwareAutoBrightness;
|
||||||
|
private boolean mUseHardwareAutoBrightness;
|
||||||
private boolean mAutoBrightessEnabled;
|
private boolean mAutoBrightessEnabled;
|
||||||
private int[] mAutoBrightnessLevels;
|
private int[] mAutoBrightnessLevels;
|
||||||
private int[] mLcdBacklightValues;
|
private int[] mLcdBacklightValues;
|
||||||
@@ -438,9 +439,16 @@ class PowerManagerService extends IPowerManager.Stub
|
|||||||
mScreenOffIntent.addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY);
|
mScreenOffIntent.addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY);
|
||||||
|
|
||||||
Resources resources = mContext.getResources();
|
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);
|
com.android.internal.R.bool.config_hardware_automatic_brightness_available);
|
||||||
if (!mHasHardwareAutoBrightness) {
|
if (mUseHardwareAutoBrightness) {
|
||||||
|
mUseSoftwareAutoBrightness = false;
|
||||||
|
}
|
||||||
|
if (mUseSoftwareAutoBrightness) {
|
||||||
mAutoBrightnessLevels = resources.getIntArray(
|
mAutoBrightnessLevels = resources.getIntArray(
|
||||||
com.android.internal.R.array.config_autoBrightnessLevels);
|
com.android.internal.R.array.config_autoBrightnessLevels);
|
||||||
mLcdBacklightValues = resources.getIntArray(
|
mLcdBacklightValues = resources.getIntArray(
|
||||||
@@ -479,7 +487,7 @@ class PowerManagerService extends IPowerManager.Stub
|
|||||||
// And explicitly do the initial update of our cached settings
|
// And explicitly do the initial update of our cached settings
|
||||||
updateGservicesValues();
|
updateGservicesValues();
|
||||||
|
|
||||||
if (mAutoBrightessEnabled && !mHasHardwareAutoBrightness) {
|
if (mUseSoftwareAutoBrightness && mAutoBrightessEnabled) {
|
||||||
// turn the screen on
|
// turn the screen on
|
||||||
setPowerState(SCREEN_BRIGHT);
|
setPowerState(SCREEN_BRIGHT);
|
||||||
} else {
|
} else {
|
||||||
@@ -581,7 +589,7 @@ class PowerManagerService extends IPowerManager.Stub
|
|||||||
switch (wl.flags & LOCK_MASK)
|
switch (wl.flags & LOCK_MASK)
|
||||||
{
|
{
|
||||||
case PowerManager.FULL_WAKE_LOCK:
|
case PowerManager.FULL_WAKE_LOCK:
|
||||||
if (mAutoBrightessEnabled && !mHasHardwareAutoBrightness) {
|
if (mAutoBrightessEnabled && mUseSoftwareAutoBrightness) {
|
||||||
wl.minState = SCREEN_BRIGHT;
|
wl.minState = SCREEN_BRIGHT;
|
||||||
} else {
|
} else {
|
||||||
wl.minState = (mKeyboardVisible ? ALL_BRIGHT : SCREEN_BUTTON_BRIGHT);
|
wl.minState = (mKeyboardVisible ? ALL_BRIGHT : SCREEN_BUTTON_BRIGHT);
|
||||||
@@ -887,7 +895,8 @@ class PowerManagerService extends IPowerManager.Stub
|
|||||||
pw.println(" mLightSensorEnabled=" + mLightSensorEnabled);
|
pw.println(" mLightSensorEnabled=" + mLightSensorEnabled);
|
||||||
pw.println(" mLightSensorValue=" + mLightSensorValue);
|
pw.println(" mLightSensorValue=" + mLightSensorValue);
|
||||||
pw.println(" mLightSensorPendingValue=" + mLightSensorPendingValue);
|
pw.println(" mLightSensorPendingValue=" + mLightSensorPendingValue);
|
||||||
pw.println(" mHasHardwareAutoBrightness=" + mHasHardwareAutoBrightness);
|
pw.println(" mUseHardwareAutoBrightness=" + mUseHardwareAutoBrightness);
|
||||||
|
pw.println(" mUseSoftwareAutoBrightness=" + mUseSoftwareAutoBrightness);
|
||||||
pw.println(" mAutoBrightessEnabled=" + mAutoBrightessEnabled);
|
pw.println(" mAutoBrightessEnabled=" + mAutoBrightessEnabled);
|
||||||
mScreenBrightness.dump(pw, " mScreenBrightness: ");
|
mScreenBrightness.dump(pw, " mScreenBrightness: ");
|
||||||
mKeyboardBrightness.dump(pw, " mKeyboardBrightness: ");
|
mKeyboardBrightness.dump(pw, " mKeyboardBrightness: ");
|
||||||
@@ -1290,7 +1299,7 @@ class PowerManagerService extends IPowerManager.Stub
|
|||||||
|
|
||||||
private int setScreenStateLocked(boolean on) {
|
private int setScreenStateLocked(boolean on) {
|
||||||
int err = Power.setScreenState(on);
|
int err = Power.setScreenState(on);
|
||||||
if (err == 0 && !mHasHardwareAutoBrightness) {
|
if (err == 0 && mUseSoftwareAutoBrightness) {
|
||||||
enableLightSensor(on && mAutoBrightessEnabled);
|
enableLightSensor(on && mAutoBrightessEnabled);
|
||||||
if (!on) {
|
if (!on) {
|
||||||
// make sure button and key backlights are off too
|
// make sure button and key backlights are off too
|
||||||
@@ -1337,7 +1346,7 @@ class PowerManagerService extends IPowerManager.Stub
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!mDoneBooting && !(mAutoBrightessEnabled && !mHasHardwareAutoBrightness)) {
|
if (!mDoneBooting && !(mAutoBrightessEnabled && mUseSoftwareAutoBrightness)) {
|
||||||
newState |= ALL_BRIGHT;
|
newState |= ALL_BRIGHT;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1758,7 +1767,7 @@ class PowerManagerService extends IPowerManager.Stub
|
|||||||
try {
|
try {
|
||||||
if (mScreenBrightnessOverride >= 0) {
|
if (mScreenBrightnessOverride >= 0) {
|
||||||
return mScreenBrightnessOverride;
|
return mScreenBrightnessOverride;
|
||||||
} else if (mLightSensorBrightness >= 0 && !mHasHardwareAutoBrightness) {
|
} else if (mLightSensorBrightness >= 0 && mUseSoftwareAutoBrightness) {
|
||||||
return mLightSensorBrightness;
|
return mLightSensorBrightness;
|
||||||
}
|
}
|
||||||
final int brightness = Settings.System.getInt(mContext.getContentResolver(),
|
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
|
// Only turn on button backlights if a button was pressed
|
||||||
// and auto brightness is disabled
|
// and auto brightness is disabled
|
||||||
if (eventType == BUTTON_EVENT &&
|
if (eventType == BUTTON_EVENT &&
|
||||||
!(mAutoBrightessEnabled && !mHasHardwareAutoBrightness)) {
|
!(mAutoBrightessEnabled && mUseSoftwareAutoBrightness)) {
|
||||||
mUserState = (mKeyboardVisible ? ALL_BRIGHT : SCREEN_BUTTON_BRIGHT);
|
mUserState = (mKeyboardVisible ? ALL_BRIGHT : SCREEN_BUTTON_BRIGHT);
|
||||||
} else {
|
} else {
|
||||||
// don't clear button/keyboard backlights when the screen is touched.
|
// 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);
|
Log.d(TAG, "lightSensorChangedLocked " + value);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (mHasHardwareAutoBrightness) return;
|
|
||||||
|
|
||||||
if (mLightSensorValue != value) {
|
if (mLightSensorValue != value) {
|
||||||
mLightSensorValue = value;
|
mLightSensorValue = value;
|
||||||
if ((mPowerState & BATTERY_LOW_BIT) == 0) {
|
if ((mPowerState & BATTERY_LOW_BIT) == 0) {
|
||||||
@@ -2057,17 +2064,17 @@ class PowerManagerService extends IPowerManager.Stub
|
|||||||
boolean enabled = (mode == SCREEN_BRIGHTNESS_MODE_AUTOMATIC);
|
boolean enabled = (mode == SCREEN_BRIGHTNESS_MODE_AUTOMATIC);
|
||||||
if (mAutoBrightessEnabled != enabled) {
|
if (mAutoBrightessEnabled != enabled) {
|
||||||
mAutoBrightessEnabled = enabled;
|
mAutoBrightessEnabled = enabled;
|
||||||
// reset computed brightness
|
|
||||||
mLightSensorValue = -1;
|
|
||||||
mLightSensorBrightness = -1;
|
|
||||||
|
|
||||||
if (mHasHardwareAutoBrightness) {
|
if (mUseHardwareAutoBrightness) {
|
||||||
// When setting auto-brightness, must reset the brightness afterwards
|
// When setting auto-brightness, must reset the brightness afterwards
|
||||||
mHardware.setAutoBrightness_UNCHECKED(enabled);
|
mHardware.setAutoBrightness_UNCHECKED(enabled);
|
||||||
if (screenIsOn()) {
|
if (screenIsOn()) {
|
||||||
setBacklightBrightness((int)mScreenBrightness.curValue);
|
setBacklightBrightness((int)mScreenBrightness.curValue);
|
||||||
}
|
}
|
||||||
} else {
|
} else if (mUseSoftwareAutoBrightness) {
|
||||||
|
// reset computed brightness
|
||||||
|
mLightSensorValue = -1;
|
||||||
|
mLightSensorBrightness = -1;
|
||||||
enableLightSensor(screenIsOn() && enabled);
|
enableLightSensor(screenIsOn() && enabled);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -2222,7 +2229,7 @@ class PowerManagerService extends IPowerManager.Stub
|
|||||||
mSensorManager = new SensorManager(mHandlerThread.getLooper());
|
mSensorManager = new SensorManager(mHandlerThread.getLooper());
|
||||||
mProximitySensor = mSensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY);
|
mProximitySensor = mSensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY);
|
||||||
// don't bother with the light sensor if auto brightness is handled in hardware
|
// don't bother with the light sensor if auto brightness is handled in hardware
|
||||||
if (!mHasHardwareAutoBrightness) {
|
if (mUseSoftwareAutoBrightness) {
|
||||||
mLightSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_LIGHT);
|
mLightSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_LIGHT);
|
||||||
enableLightSensor(mAutoBrightessEnabled);
|
enableLightSensor(mAutoBrightessEnabled);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user