am c831b978: Merge "Add isScreenBrightnessBoosted and a broadcast when underlying value changes." into lmp-mr1-modular-dev

* commit 'c831b978238d5ed200ca329c540eff00faba77e3':
  Add isScreenBrightnessBoosted and a broadcast when underlying value changes.
This commit is contained in:
Bryce Lee
2015-03-25 16:09:48 +00:00
committed by Android Git Automerger
6 changed files with 90 additions and 1 deletions

View File

@@ -23738,6 +23738,7 @@ package android.os {
public final class PowerManager { public final class PowerManager {
method public boolean isInteractive(); method public boolean isInteractive();
method public boolean isPowerSaveMode(); method public boolean isPowerSaveMode();
method public boolean isScreenBrightnessBoosted();
method public deprecated boolean isScreenOn(); method public deprecated boolean isScreenOn();
method public boolean isWakeLockLevelSupported(int); method public boolean isWakeLockLevelSupported(int);
method public android.os.PowerManager.WakeLock newWakeLock(int, java.lang.String); method public android.os.PowerManager.WakeLock newWakeLock(int, java.lang.String);
@@ -23745,6 +23746,7 @@ package android.os {
method public void userActivity(long, int, int); method public void userActivity(long, int, int);
field public static final int ACQUIRE_CAUSES_WAKEUP = 268435456; // 0x10000000 field public static final int ACQUIRE_CAUSES_WAKEUP = 268435456; // 0x10000000
field public static final java.lang.String ACTION_POWER_SAVE_MODE_CHANGED = "android.os.action.POWER_SAVE_MODE_CHANGED"; field public static final java.lang.String ACTION_POWER_SAVE_MODE_CHANGED = "android.os.action.POWER_SAVE_MODE_CHANGED";
field public static final java.lang.String ACTION_SCREEN_BRIGHTNESS_BOOST_CHANGED = "android.os.action.SCREEN_BRIGHTNESS_BOOST_CHANGED";
field public static final deprecated int FULL_WAKE_LOCK = 26; // 0x1a field public static final deprecated int FULL_WAKE_LOCK = 26; // 0x1a
field public static final int ON_AFTER_RELEASE = 536870912; // 0x20000000 field public static final int ON_AFTER_RELEASE = 536870912; // 0x20000000
field public static final int PARTIAL_WAKE_LOCK = 1; // 0x1 field public static final int PARTIAL_WAKE_LOCK = 1; // 0x1

View File

@@ -50,6 +50,7 @@ interface IPowerManager
void setStayOnSetting(int val); void setStayOnSetting(int val);
void boostScreenBrightness(long time); void boostScreenBrightness(long time);
boolean isScreenBrightnessBoosted();
// temporarily overrides the screen brightness settings to allow the user to // temporarily overrides the screen brightness settings to allow the user to
// see the effect of a settings change without applying it immediately // see the effect of a settings change without applying it immediately

View File

@@ -711,6 +711,22 @@ public final class PowerManager {
} }
} }
/**
* Returns whether the screen brightness is currently boosted to maximum, caused by a call
* to {@link #boostScreenBrightness(long)}.
* @return {@code True} if the screen brightness is currently boosted. {@code False} otherwise.
*
* @hide
*/
@SystemApi
public boolean isScreenBrightnessBoosted() {
try {
return mService.isScreenBrightnessBoosted();
} catch (RemoteException e) {
return false;
}
}
/** /**
* Sets the brightness of the backlights (screen, keyboard, button). * Sets the brightness of the backlights (screen, keyboard, button).
* <p> * <p>
@@ -891,6 +907,16 @@ public final class PowerManager {
/** @hide */ /** @hide */
public static final String EXTRA_POWER_SAVE_MODE = "mode"; public static final String EXTRA_POWER_SAVE_MODE = "mode";
/**
* Intent that is broadcast when the state of {@link #isScreenBrightnessBoosted()} has changed.
* This broadcast is only sent to registered receivers.
*
* @hide
**/
@SystemApi
public static final String ACTION_SCREEN_BRIGHTNESS_BOOST_CHANGED
= "android.os.action.SCREEN_BRIGHTNESS_BOOST_CHANGED";
/** /**
* A wake lock is a mechanism to indicate that your application needs * A wake lock is a mechanism to indicate that your application needs
* to have the device stay on. * to have the device stay on.

View File

@@ -77,6 +77,8 @@
<protected-broadcast android:name="android.os.action.POWER_SAVE_MODE_CHANGED" /> <protected-broadcast android:name="android.os.action.POWER_SAVE_MODE_CHANGED" />
<protected-broadcast android:name="android.os.action.POWER_SAVE_MODE_CHANGING" /> <protected-broadcast android:name="android.os.action.POWER_SAVE_MODE_CHANGING" />
<protected-broadcast android:name="android.os.action.SCREEN_BRIGHTNESS_BOOST_CHANGED" />
<protected-broadcast android:name="android.app.action.ENTER_CAR_MODE" /> <protected-broadcast android:name="android.app.action.ENTER_CAR_MODE" />
<protected-broadcast android:name="android.app.action.EXIT_CAR_MODE" /> <protected-broadcast android:name="android.app.action.EXIT_CAR_MODE" />
<protected-broadcast android:name="android.app.action.ENTER_DESK_MODE" /> <protected-broadcast android:name="android.app.action.ENTER_DESK_MODE" />

View File

@@ -78,6 +78,7 @@ final class Notifier {
private static final int MSG_USER_ACTIVITY = 1; private static final int MSG_USER_ACTIVITY = 1;
private static final int MSG_BROADCAST = 2; private static final int MSG_BROADCAST = 2;
private static final int MSG_WIRELESS_CHARGING_STARTED = 3; private static final int MSG_WIRELESS_CHARGING_STARTED = 3;
private static final int MSG_SCREEN_BRIGHTNESS_BOOST_CHANGED = 4;
private final Object mLock = new Object(); private final Object mLock = new Object();
@@ -92,6 +93,7 @@ final class Notifier {
private final NotifierHandler mHandler; private final NotifierHandler mHandler;
private final Intent mScreenOnIntent; private final Intent mScreenOnIntent;
private final Intent mScreenOffIntent; private final Intent mScreenOffIntent;
private final Intent mScreenBrightnessBoostIntent;
// The current interactive state. // The current interactive state.
private int mActualInteractiveState; private int mActualInteractiveState;
@@ -128,6 +130,10 @@ final class Notifier {
mScreenOffIntent = new Intent(Intent.ACTION_SCREEN_OFF); mScreenOffIntent = new Intent(Intent.ACTION_SCREEN_OFF);
mScreenOffIntent.addFlags( mScreenOffIntent.addFlags(
Intent.FLAG_RECEIVER_REGISTERED_ONLY | Intent.FLAG_RECEIVER_FOREGROUND); Intent.FLAG_RECEIVER_REGISTERED_ONLY | Intent.FLAG_RECEIVER_FOREGROUND);
mScreenBrightnessBoostIntent =
new Intent(PowerManager.ACTION_SCREEN_BRIGHTNESS_BOOST_CHANGED);
mScreenBrightnessBoostIntent.addFlags(
Intent.FLAG_RECEIVER_REGISTERED_ONLY | Intent.FLAG_RECEIVER_FOREGROUND);
// Initialize interactive state for battery stats. // Initialize interactive state for battery stats.
try { try {
@@ -348,6 +354,19 @@ final class Notifier {
} }
} }
/**
* Called when screen brightness boost begins or ends.
*/
public void onScreenBrightnessBoostChanged() {
if (DEBUG) {
Slog.d(TAG, "onScreenBrightnessBoostChanged");
}
mSuspendBlocker.acquire();
Message msg = mHandler.obtainMessage(MSG_SCREEN_BRIGHTNESS_BOOST_CHANGED);
msg.setAsynchronous(true);
mHandler.sendMessage(msg);
}
/** /**
* Called when there has been user activity. * Called when there has been user activity.
*/ */
@@ -457,6 +476,22 @@ final class Notifier {
} }
} }
private void sendBrightnessBoostChangedBroadcast() {
if (DEBUG) {
Slog.d(TAG, "Sending brightness boost changed broadcast.");
}
mContext.sendOrderedBroadcastAsUser(mScreenBrightnessBoostIntent, UserHandle.ALL, null,
mScreeBrightnessBoostChangedDone, mHandler, 0, null, null);
}
private final BroadcastReceiver mScreeBrightnessBoostChangedDone = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
mSuspendBlocker.release();
}
};
private void sendWakeUpBroadcast() { private void sendWakeUpBroadcast() {
if (DEBUG) { if (DEBUG) {
Slog.d(TAG, "Sending wake up broadcast."); Slog.d(TAG, "Sending wake up broadcast.");
@@ -539,6 +574,9 @@ final class Notifier {
case MSG_WIRELESS_CHARGING_STARTED: case MSG_WIRELESS_CHARGING_STARTED:
playWirelessChargingStartedSound(); playWirelessChargingStartedSound();
break; break;
case MSG_SCREEN_BRIGHTNESS_BOOST_CHANGED:
sendBrightnessBoostChangedBroadcast();
break;
} }
} }
} }

View File

@@ -1900,6 +1900,7 @@ public final class PowerManagerService extends SystemService
} }
} }
mScreenBrightnessBoostInProgress = false; mScreenBrightnessBoostInProgress = false;
mNotifier.onScreenBrightnessBoostChanged();
userActivityNoUpdateLocked(now, userActivityNoUpdateLocked(now,
PowerManager.USER_ACTIVITY_EVENT_OTHER, 0, Process.SYSTEM_UID); PowerManager.USER_ACTIVITY_EVENT_OTHER, 0, Process.SYSTEM_UID);
} }
@@ -2275,7 +2276,10 @@ public final class PowerManagerService extends SystemService
Slog.i(TAG, "Brightness boost activated (uid " + uid +")..."); Slog.i(TAG, "Brightness boost activated (uid " + uid +")...");
mLastScreenBrightnessBoostTime = eventTime; mLastScreenBrightnessBoostTime = eventTime;
mScreenBrightnessBoostInProgress = true; if (!mScreenBrightnessBoostInProgress) {
mScreenBrightnessBoostInProgress = true;
mNotifier.onScreenBrightnessBoostChanged();
}
mDirty |= DIRTY_SCREEN_BRIGHTNESS_BOOST; mDirty |= DIRTY_SCREEN_BRIGHTNESS_BOOST;
userActivityNoUpdateLocked(eventTime, userActivityNoUpdateLocked(eventTime,
@@ -2284,6 +2288,12 @@ public final class PowerManagerService extends SystemService
} }
} }
private boolean isScreenBrightnessBoostedInternal() {
synchronized (mLock) {
return mScreenBrightnessBoostInProgress;
}
}
/** /**
* Called when a screen brightness boost timeout has occurred. * Called when a screen brightness boost timeout has occurred.
* *
@@ -3217,6 +3227,16 @@ public final class PowerManagerService extends SystemService
} }
} }
@Override // Binder call
public boolean isScreenBrightnessBoosted() {
final long ident = Binder.clearCallingIdentity();
try {
return isScreenBrightnessBoostedInternal();
} finally {
Binder.restoreCallingIdentity(ident);
}
}
@Override // Binder call @Override // Binder call
protected void dump(FileDescriptor fd, PrintWriter pw, String[] args) { protected void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
if (mContext.checkCallingOrSelfPermission(Manifest.permission.DUMP) if (mContext.checkCallingOrSelfPermission(Manifest.permission.DUMP)