Merge change I60dfecdc into eclair-mr2
* changes: Add window manager support for overriding button and keyboard backlight values.
This commit is contained in:
@@ -167061,6 +167061,39 @@
|
||||
visibility="public"
|
||||
>
|
||||
</field>
|
||||
<field name="BRIGHTNESS_OVERRIDE_FULL"
|
||||
type="float"
|
||||
transient="false"
|
||||
volatile="false"
|
||||
value="1.0f"
|
||||
static="true"
|
||||
final="true"
|
||||
deprecated="not deprecated"
|
||||
visibility="public"
|
||||
>
|
||||
</field>
|
||||
<field name="BRIGHTNESS_OVERRIDE_NONE"
|
||||
type="float"
|
||||
transient="false"
|
||||
volatile="false"
|
||||
value="-1.0f"
|
||||
static="true"
|
||||
final="true"
|
||||
deprecated="not deprecated"
|
||||
visibility="public"
|
||||
>
|
||||
</field>
|
||||
<field name="BRIGHTNESS_OVERRIDE_OFF"
|
||||
type="float"
|
||||
transient="false"
|
||||
volatile="false"
|
||||
value="0.0f"
|
||||
static="true"
|
||||
final="true"
|
||||
deprecated="not deprecated"
|
||||
visibility="public"
|
||||
>
|
||||
</field>
|
||||
<field name="CREATOR"
|
||||
type="android.os.Parcelable.Creator"
|
||||
transient="false"
|
||||
@@ -167917,6 +167950,16 @@
|
||||
visibility="public"
|
||||
>
|
||||
</field>
|
||||
<field name="buttonBrightness"
|
||||
type="float"
|
||||
transient="false"
|
||||
volatile="false"
|
||||
static="false"
|
||||
final="false"
|
||||
deprecated="not deprecated"
|
||||
visibility="public"
|
||||
>
|
||||
</field>
|
||||
<field name="dimAmount"
|
||||
type="float"
|
||||
transient="false"
|
||||
|
||||
@@ -49,4 +49,5 @@ public interface LocalPowerManager {
|
||||
boolean isScreenOn();
|
||||
|
||||
void setScreenBrightnessOverride(int brightness);
|
||||
void setButtonBrightnessOverride(int brightness);
|
||||
}
|
||||
|
||||
@@ -649,7 +649,28 @@ public interface WindowManager extends ViewManager {
|
||||
* be cleared automatically after the window is displayed.
|
||||
*/
|
||||
public static final int SOFT_INPUT_IS_FORWARD_NAVIGATION = 0x100;
|
||||
|
||||
|
||||
/**
|
||||
* Default value for {@link #screenBrightness} and {@link #buttonBrightness}
|
||||
* indicating that the brightness value is not overridden for this window
|
||||
* and normal brightness policy should be used.
|
||||
*/
|
||||
public static final float BRIGHTNESS_OVERRIDE_NONE = -1.0f;
|
||||
|
||||
/**
|
||||
* Value for {@link #screenBrightness} and {@link #buttonBrightness}
|
||||
* indicating that the screen or button backlight brightness should be set
|
||||
* to the lowest value when this window is in front.
|
||||
*/
|
||||
public static final float BRIGHTNESS_OVERRIDE_OFF = 0.0f;
|
||||
|
||||
/**
|
||||
* Value for {@link #screenBrightness} and {@link #buttonBrightness}
|
||||
* indicating that the screen or button backlight brightness should be set
|
||||
* to the hightest value when this window is in front.
|
||||
*/
|
||||
public static final float BRIGHTNESS_OVERRIDE_FULL = 1.0f;
|
||||
|
||||
/**
|
||||
* Desired operating mode for any soft input area. May any combination
|
||||
* of:
|
||||
@@ -717,8 +738,16 @@ public interface WindowManager extends ViewManager {
|
||||
* preferred screen brightness. 0 to 1 adjusts the brightness from
|
||||
* dark to full bright.
|
||||
*/
|
||||
public float screenBrightness = -1.0f;
|
||||
public float screenBrightness = BRIGHTNESS_OVERRIDE_NONE;
|
||||
|
||||
/**
|
||||
* This can be used to override the standard behavior of the button and
|
||||
* keyboard backlights. A value of less than 0, the default, means to
|
||||
* use the standard backlight behavior. 0 to 1 adjusts the brightness
|
||||
* from dark to full bright.
|
||||
*/
|
||||
public float buttonBrightness = BRIGHTNESS_OVERRIDE_NONE;
|
||||
|
||||
/**
|
||||
* Identifier for this window. This will usually be filled in for
|
||||
* you.
|
||||
@@ -816,6 +845,7 @@ public interface WindowManager extends ViewManager {
|
||||
out.writeFloat(alpha);
|
||||
out.writeFloat(dimAmount);
|
||||
out.writeFloat(screenBrightness);
|
||||
out.writeFloat(buttonBrightness);
|
||||
out.writeStrongBinder(token);
|
||||
out.writeString(packageName);
|
||||
TextUtils.writeToParcel(mTitle, out, parcelableFlags);
|
||||
@@ -851,6 +881,7 @@ public interface WindowManager extends ViewManager {
|
||||
alpha = in.readFloat();
|
||||
dimAmount = in.readFloat();
|
||||
screenBrightness = in.readFloat();
|
||||
buttonBrightness = in.readFloat();
|
||||
token = in.readStrongBinder();
|
||||
packageName = in.readString();
|
||||
mTitle = TextUtils.CHAR_SEQUENCE_CREATOR.createFromParcel(in);
|
||||
@@ -870,6 +901,8 @@ public interface WindowManager extends ViewManager {
|
||||
public static final int SOFT_INPUT_MODE_CHANGED = 1<<9;
|
||||
public static final int SCREEN_ORIENTATION_CHANGED = 1<<10;
|
||||
public static final int SCREEN_BRIGHTNESS_CHANGED = 1<<11;
|
||||
/** {@hide} */
|
||||
public static final int BUTTON_BRIGHTNESS_CHANGED = 1<<12;
|
||||
|
||||
// internal buffer to backup/restore parameters under compatibility mode.
|
||||
private int[] mCompatibilityParamsBackup = null;
|
||||
@@ -971,6 +1004,10 @@ public interface WindowManager extends ViewManager {
|
||||
screenBrightness = o.screenBrightness;
|
||||
changes |= SCREEN_BRIGHTNESS_CHANGED;
|
||||
}
|
||||
if (buttonBrightness != o.buttonBrightness) {
|
||||
buttonBrightness = o.buttonBrightness;
|
||||
changes |= BUTTON_BRIGHTNESS_CHANGED;
|
||||
}
|
||||
|
||||
if (screenOrientation != o.screenOrientation) {
|
||||
screenOrientation = o.screenOrientation;
|
||||
|
||||
@@ -209,7 +209,9 @@ class PowerManagerService extends IPowerManager.Stub
|
||||
private boolean mLightSensorEnabled;
|
||||
private float mLightSensorValue = -1;
|
||||
private float mLightSensorPendingValue = -1;
|
||||
private int mLightSensorBrightness = -1;
|
||||
private int mLightSensorScreenBrightness = -1;
|
||||
private int mLightSensorButtonBrightness = -1;
|
||||
private int mLightSensorKeyboardBrightness = -1;
|
||||
private boolean mDimScreen = true;
|
||||
private long mNextTimeout;
|
||||
private volatile int mPokey = 0;
|
||||
@@ -220,6 +222,7 @@ class PowerManagerService extends IPowerManager.Stub
|
||||
private long mLastScreenOnTime;
|
||||
private boolean mPreventScreenOn;
|
||||
private int mScreenBrightnessOverride = -1;
|
||||
private int mButtonBrightnessOverride = -1;
|
||||
private boolean mUseSoftwareAutoBrightness;
|
||||
private boolean mAutoBrightessEnabled;
|
||||
private int[] mAutoBrightnessLevels;
|
||||
@@ -919,7 +922,8 @@ class PowerManagerService extends IPowerManager.Stub
|
||||
pw.println(" mKeylightDelay=" + mKeylightDelay + " mDimDelay=" + mDimDelay
|
||||
+ " mScreenOffDelay=" + mScreenOffDelay);
|
||||
pw.println(" mPreventScreenOn=" + mPreventScreenOn
|
||||
+ " mScreenBrightnessOverride=" + mScreenBrightnessOverride);
|
||||
+ " mScreenBrightnessOverride=" + mScreenBrightnessOverride
|
||||
+ " mButtonBrightnessOverride=" + mButtonBrightnessOverride);
|
||||
pw.println(" mTotalDelaySetting=" + mTotalDelaySetting);
|
||||
pw.println(" mLastScreenOnTime=" + mLastScreenOnTime);
|
||||
pw.println(" mBroadcastWakeLock=" + mBroadcastWakeLock);
|
||||
@@ -933,8 +937,11 @@ class PowerManagerService extends IPowerManager.Stub
|
||||
pw.println(" mProximityPendingValue=" + mProximityPendingValue);
|
||||
pw.println(" mLastProximityEventTime=" + mLastProximityEventTime);
|
||||
pw.println(" mLightSensorEnabled=" + mLightSensorEnabled);
|
||||
pw.println(" mLightSensorValue=" + mLightSensorValue);
|
||||
pw.println(" mLightSensorPendingValue=" + mLightSensorPendingValue);
|
||||
pw.println(" mLightSensorValue=" + mLightSensorValue
|
||||
+ " mLightSensorPendingValue=" + mLightSensorPendingValue);
|
||||
pw.println(" mLightSensorScreenBrightness=" + mLightSensorScreenBrightness
|
||||
+ " mLightSensorButtonBrightness=" + mLightSensorButtonBrightness
|
||||
+ " mLightSensorKeyboardBrightness=" + mLightSensorKeyboardBrightness);
|
||||
pw.println(" mUseSoftwareAutoBrightness=" + mUseSoftwareAutoBrightness);
|
||||
pw.println(" mAutoBrightessEnabled=" + mAutoBrightessEnabled);
|
||||
mScreenBrightness.dump(pw, " mScreenBrightness: ");
|
||||
@@ -1302,7 +1309,18 @@ class PowerManagerService extends IPowerManager.Stub
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public void setButtonBrightnessOverride(int brightness) {
|
||||
mContext.enforceCallingOrSelfPermission(android.Manifest.permission.DEVICE_POWER, null);
|
||||
|
||||
synchronized (mLocks) {
|
||||
if (mButtonBrightnessOverride != brightness) {
|
||||
mButtonBrightnessOverride = brightness;
|
||||
updateLightsLocked(mPowerState, BUTTON_BRIGHT_BIT | KEYBOARD_BRIGHT_BIT);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Sanity-check that gets called 5 seconds after any call to
|
||||
* preventScreenOn(true). This ensures that the original call
|
||||
@@ -1451,8 +1469,7 @@ class PowerManagerService extends IPowerManager.Stub
|
||||
err = setScreenStateLocked(true);
|
||||
long identity = Binder.clearCallingIdentity();
|
||||
try {
|
||||
mBatteryStats.noteScreenBrightness(
|
||||
getPreferredBrightness());
|
||||
mBatteryStats.noteScreenBrightness(getPreferredBrightness());
|
||||
mBatteryStats.noteScreenOn();
|
||||
} catch (RemoteException e) {
|
||||
Log.w(TAG, "RemoteException calling noteScreenOn on BatteryStatsService", e);
|
||||
@@ -1523,6 +1540,8 @@ class PowerManagerService extends IPowerManager.Stub
|
||||
|
||||
private void updateLightsLocked(int newState, int forceState) {
|
||||
final int oldState = mPowerState;
|
||||
newState = applyButtonState(newState);
|
||||
newState = applyKeyboardState(newState);
|
||||
final int realDifference = (newState ^ oldState);
|
||||
final int difference = realDifference | forceState;
|
||||
if (difference == 0) {
|
||||
@@ -1541,9 +1560,9 @@ class PowerManagerService extends IPowerManager.Stub
|
||||
if ((newState & KEYBOARD_BRIGHT_BIT) == 0) {
|
||||
mKeyboardBrightness.setTargetLocked(Power.BRIGHTNESS_OFF,
|
||||
ANIM_STEPS, INITIAL_KEYBOARD_BRIGHTNESS,
|
||||
preferredBrightness);
|
||||
Power.BRIGHTNESS_ON);
|
||||
} else {
|
||||
mKeyboardBrightness.setTargetLocked(preferredBrightness,
|
||||
mKeyboardBrightness.setTargetLocked(Power.BRIGHTNESS_ON,
|
||||
ANIM_STEPS, INITIAL_KEYBOARD_BRIGHTNESS,
|
||||
Power.BRIGHTNESS_OFF);
|
||||
}
|
||||
@@ -1562,9 +1581,9 @@ class PowerManagerService extends IPowerManager.Stub
|
||||
if ((newState & BUTTON_BRIGHT_BIT) == 0) {
|
||||
mButtonBrightness.setTargetLocked(Power.BRIGHTNESS_OFF,
|
||||
ANIM_STEPS, INITIAL_BUTTON_BRIGHTNESS,
|
||||
preferredBrightness);
|
||||
Power.BRIGHTNESS_ON);
|
||||
} else {
|
||||
mButtonBrightness.setTargetLocked(preferredBrightness,
|
||||
mButtonBrightness.setTargetLocked(Power.BRIGHTNESS_ON,
|
||||
ANIM_STEPS, INITIAL_BUTTON_BRIGHTNESS,
|
||||
Power.BRIGHTNESS_OFF);
|
||||
}
|
||||
@@ -1820,9 +1839,9 @@ class PowerManagerService extends IPowerManager.Stub
|
||||
try {
|
||||
if (mScreenBrightnessOverride >= 0) {
|
||||
return mScreenBrightnessOverride;
|
||||
} else if (mLightSensorBrightness >= 0 && mUseSoftwareAutoBrightness
|
||||
} else if (mLightSensorScreenBrightness >= 0 && mUseSoftwareAutoBrightness
|
||||
&& mAutoBrightessEnabled) {
|
||||
return mLightSensorBrightness;
|
||||
return mLightSensorScreenBrightness;
|
||||
}
|
||||
final int brightness = Settings.System.getInt(mContext.getContentResolver(),
|
||||
SCREEN_BRIGHTNESS);
|
||||
@@ -1833,6 +1852,40 @@ class PowerManagerService extends IPowerManager.Stub
|
||||
}
|
||||
}
|
||||
|
||||
private int applyButtonState(int state) {
|
||||
int brightness = -1;
|
||||
if (mButtonBrightnessOverride >= 0) {
|
||||
brightness = mButtonBrightnessOverride;
|
||||
} else if (mLightSensorButtonBrightness >= 0 && mUseSoftwareAutoBrightness) {
|
||||
brightness = mLightSensorButtonBrightness;
|
||||
}
|
||||
if (brightness > 0) {
|
||||
return state | BUTTON_BRIGHT_BIT;
|
||||
} else if (brightness == 0) {
|
||||
return state & ~BUTTON_BRIGHT_BIT;
|
||||
} else {
|
||||
return state;
|
||||
}
|
||||
}
|
||||
|
||||
private int applyKeyboardState(int state) {
|
||||
int brightness = -1;
|
||||
if (!mKeyboardVisible) {
|
||||
brightness = 0;
|
||||
} else if (mButtonBrightnessOverride >= 0) {
|
||||
brightness = mButtonBrightnessOverride;
|
||||
} else if (mLightSensorKeyboardBrightness >= 0 && mUseSoftwareAutoBrightness) {
|
||||
brightness = mLightSensorKeyboardBrightness;
|
||||
}
|
||||
if (brightness > 0) {
|
||||
return state | KEYBOARD_BRIGHT_BIT;
|
||||
} else if (brightness == 0) {
|
||||
return state & ~KEYBOARD_BRIGHT_BIT;
|
||||
} else {
|
||||
return state;
|
||||
}
|
||||
}
|
||||
|
||||
public boolean isScreenOn() {
|
||||
synchronized (mLocks) {
|
||||
return (mPowerState & SCREEN_ON_BIT) != 0;
|
||||
@@ -2008,7 +2061,9 @@ class PowerManagerService extends IPowerManager.Stub
|
||||
} else {
|
||||
keyboardValue = 0;
|
||||
}
|
||||
mLightSensorBrightness = lcdValue;
|
||||
mLightSensorScreenBrightness = lcdValue;
|
||||
mLightSensorButtonBrightness = buttonValue;
|
||||
mLightSensorKeyboardBrightness = keyboardValue;
|
||||
|
||||
if (mDebugLightSensor) {
|
||||
Log.d(TAG, "lcdValue " + lcdValue);
|
||||
@@ -2032,31 +2087,35 @@ class PowerManagerService extends IPowerManager.Stub
|
||||
lcdValue, brightnessMode);
|
||||
}
|
||||
}
|
||||
if (ANIMATE_BUTTON_LIGHTS) {
|
||||
if (mButtonBrightness.setTargetLocked(buttonValue,
|
||||
AUTOBRIGHTNESS_ANIM_STEPS, INITIAL_BUTTON_BRIGHTNESS,
|
||||
(int)mButtonBrightness.curValue)) {
|
||||
startAnimation = true;
|
||||
if (mButtonBrightnessOverride < 0) {
|
||||
if (ANIMATE_BUTTON_LIGHTS) {
|
||||
if (mButtonBrightness.setTargetLocked(buttonValue,
|
||||
AUTOBRIGHTNESS_ANIM_STEPS, INITIAL_BUTTON_BRIGHTNESS,
|
||||
(int)mButtonBrightness.curValue)) {
|
||||
startAnimation = true;
|
||||
}
|
||||
} else {
|
||||
int brightnessMode = (mUseSoftwareAutoBrightness
|
||||
? HardwareService.BRIGHTNESS_MODE_SENSOR
|
||||
: HardwareService.BRIGHTNESS_MODE_USER);
|
||||
mHardware.setLightBrightness_UNCHECKED(HardwareService.LIGHT_ID_BUTTONS,
|
||||
buttonValue, brightnessMode);
|
||||
}
|
||||
} else {
|
||||
int brightnessMode = (mUseSoftwareAutoBrightness
|
||||
? HardwareService.BRIGHTNESS_MODE_SENSOR
|
||||
: HardwareService.BRIGHTNESS_MODE_USER);
|
||||
mHardware.setLightBrightness_UNCHECKED(HardwareService.LIGHT_ID_BUTTONS,
|
||||
buttonValue, brightnessMode);
|
||||
}
|
||||
if (ANIMATE_KEYBOARD_LIGHTS) {
|
||||
if (mKeyboardBrightness.setTargetLocked(keyboardValue,
|
||||
AUTOBRIGHTNESS_ANIM_STEPS, INITIAL_BUTTON_BRIGHTNESS,
|
||||
(int)mKeyboardBrightness.curValue)) {
|
||||
startAnimation = true;
|
||||
if (mButtonBrightnessOverride < 0 || !mKeyboardVisible) {
|
||||
if (ANIMATE_KEYBOARD_LIGHTS) {
|
||||
if (mKeyboardBrightness.setTargetLocked(keyboardValue,
|
||||
AUTOBRIGHTNESS_ANIM_STEPS, INITIAL_BUTTON_BRIGHTNESS,
|
||||
(int)mKeyboardBrightness.curValue)) {
|
||||
startAnimation = true;
|
||||
}
|
||||
} else {
|
||||
int brightnessMode = (mUseSoftwareAutoBrightness
|
||||
? HardwareService.BRIGHTNESS_MODE_SENSOR
|
||||
: HardwareService.BRIGHTNESS_MODE_USER);
|
||||
mHardware.setLightBrightness_UNCHECKED(HardwareService.LIGHT_ID_KEYBOARD,
|
||||
keyboardValue, brightnessMode);
|
||||
}
|
||||
} else {
|
||||
int brightnessMode = (mUseSoftwareAutoBrightness
|
||||
? HardwareService.BRIGHTNESS_MODE_SENSOR
|
||||
: HardwareService.BRIGHTNESS_MODE_USER);
|
||||
mHardware.setLightBrightness_UNCHECKED(HardwareService.LIGHT_ID_KEYBOARD,
|
||||
keyboardValue, brightnessMode);
|
||||
}
|
||||
if (startAnimation) {
|
||||
if (mDebugLightSensor) {
|
||||
|
||||
@@ -9313,6 +9313,7 @@ public class WindowManagerService extends IWindowManager.Stub
|
||||
boolean orientationChangeComplete = true;
|
||||
Session holdScreen = null;
|
||||
float screenBrightness = -1;
|
||||
float buttonBrightness = -1;
|
||||
boolean focusDisplayed = false;
|
||||
boolean animating = false;
|
||||
|
||||
@@ -10072,6 +10073,10 @@ public class WindowManagerService extends IWindowManager.Stub
|
||||
&& screenBrightness < 0) {
|
||||
screenBrightness = w.mAttrs.screenBrightness;
|
||||
}
|
||||
if (!syswin && w.mAttrs.buttonBrightness >= 0
|
||||
&& buttonBrightness < 0) {
|
||||
buttonBrightness = w.mAttrs.buttonBrightness;
|
||||
}
|
||||
if (attrs.type == WindowManager.LayoutParams.TYPE_SYSTEM_DIALOG
|
||||
|| attrs.type == WindowManager.LayoutParams.TYPE_KEYGUARD
|
||||
|| attrs.type == WindowManager.LayoutParams.TYPE_SYSTEM_ERROR) {
|
||||
@@ -10318,6 +10323,12 @@ public class WindowManagerService extends IWindowManager.Stub
|
||||
mPowerManager.setScreenBrightnessOverride((int)
|
||||
(screenBrightness * Power.BRIGHTNESS_ON));
|
||||
}
|
||||
if (buttonBrightness < 0 || buttonBrightness > 1.0f) {
|
||||
mPowerManager.setButtonBrightnessOverride(-1);
|
||||
} else {
|
||||
mPowerManager.setButtonBrightnessOverride((int)
|
||||
(buttonBrightness * Power.BRIGHTNESS_ON));
|
||||
}
|
||||
if (holdScreen != mHoldingScreenOn) {
|
||||
mHoldingScreenOn = holdScreen;
|
||||
Message m = mH.obtainMessage(H.HOLD_SCREEN_CHANGED, holdScreen);
|
||||
|
||||
Reference in New Issue
Block a user