am 56ecfcce: Handle KEYCODE_SOFT_SLEEP from Ungaze.
* commit '56ecfcce6c88fc80cf509effcebb124bbe0c79f8': Handle KEYCODE_SOFT_SLEEP from Ungaze.
This commit is contained in:
committed by
Android Git Automerger
commit
740cf71c99
@@ -107,6 +107,12 @@ public abstract class PowerManagerInternal {
|
||||
*/
|
||||
public abstract void setUserActivityTimeoutOverrideFromWindowManager(long timeoutMillis);
|
||||
|
||||
/**
|
||||
* Used by the window manager to tell the power manager that the user is no longer actively
|
||||
* using the device.
|
||||
*/
|
||||
public abstract void setUserInactiveOverrideFromWindowManager();
|
||||
|
||||
/**
|
||||
* Used by device administration to set the maximum screen off timeout.
|
||||
*
|
||||
|
||||
@@ -784,8 +784,11 @@ public class KeyEvent extends InputEvent implements Parcelable {
|
||||
/** Key code constant: Step backward media key.
|
||||
* Steps media backward, one frame at a time. */
|
||||
public static final int KEYCODE_MEDIA_STEP_BACKWARD = 275;
|
||||
/** Key code constant: put device to sleep unless a wakelock is held.
|
||||
* @hide */
|
||||
public static final int KEYCODE_SOFT_SLEEP = 276;
|
||||
|
||||
private static final int LAST_KEYCODE = KEYCODE_MEDIA_STEP_BACKWARD;
|
||||
private static final int LAST_KEYCODE = KEYCODE_SOFT_SLEEP;
|
||||
|
||||
// NOTE: If you add a new keycode here you must also add it to:
|
||||
// isSystem()
|
||||
|
||||
@@ -1814,6 +1814,7 @@ i
|
||||
<enum name="KEYCODE_MEDIA_SKIP_BACKWARD" value="273" />
|
||||
<enum name="KEYCODE_MEDIA_STEP_FORWARD" value="274" />
|
||||
<enum name="KEYCODE_MEDIA_STEP_BACKWARD" value="275" />
|
||||
<enum name="KEYCODE_SOFT_SLEEP" value="276" />
|
||||
</attr>
|
||||
|
||||
<!-- ***************************************************************** -->
|
||||
|
||||
@@ -65,6 +65,7 @@ import android.os.Looper;
|
||||
import android.os.Message;
|
||||
import android.os.Messenger;
|
||||
import android.os.PowerManager;
|
||||
import android.os.PowerManagerInternal;
|
||||
import android.os.Process;
|
||||
import android.os.RemoteException;
|
||||
import android.os.ServiceManager;
|
||||
@@ -265,6 +266,7 @@ public class PhoneWindowManager implements WindowManagerPolicy {
|
||||
WindowManagerFuncs mWindowManagerFuncs;
|
||||
WindowManagerInternal mWindowManagerInternal;
|
||||
PowerManager mPowerManager;
|
||||
PowerManagerInternal mPowerManagerInternal;
|
||||
ActivityManagerInternal mActivityManagerInternal;
|
||||
DreamManagerInternal mDreamManagerInternal;
|
||||
IStatusBarService mStatusBarService;
|
||||
@@ -1324,6 +1326,7 @@ public class PhoneWindowManager implements WindowManagerPolicy {
|
||||
mActivityManagerInternal = LocalServices.getService(ActivityManagerInternal.class);
|
||||
mDreamManagerInternal = LocalServices.getService(DreamManagerInternal.class);
|
||||
mAppOpsManager = (AppOpsManager) mContext.getSystemService(Context.APP_OPS_SERVICE);
|
||||
mPowerManagerInternal = LocalServices.getService(PowerManagerInternal.class);
|
||||
|
||||
// Init display burn-in protection
|
||||
boolean burnInProtectionEnabled = context.getResources().getBoolean(
|
||||
@@ -5080,6 +5083,15 @@ public class PhoneWindowManager implements WindowManagerPolicy {
|
||||
break;
|
||||
}
|
||||
|
||||
case KeyEvent.KEYCODE_SOFT_SLEEP: {
|
||||
result &= ~ACTION_PASS_TO_USER;
|
||||
isWakeKey = false;
|
||||
if (!down) {
|
||||
mPowerManagerInternal.setUserInactiveOverrideFromWindowManager();
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
case KeyEvent.KEYCODE_WAKEUP: {
|
||||
result &= ~ACTION_PASS_TO_USER;
|
||||
isWakeKey = true;
|
||||
|
||||
@@ -393,6 +393,10 @@ public final class PowerManagerService extends SystemService
|
||||
// Use -1 to disable.
|
||||
private int mScreenBrightnessOverrideFromWindowManager = -1;
|
||||
|
||||
// The window manager has determined the user to be inactive via other means.
|
||||
// Set this to false to disable.
|
||||
private boolean mUserInactiveOverrideFromWindowManager;
|
||||
|
||||
// The user activity timeout override from the window manager
|
||||
// to allow the current foreground activity to override the user activity timeout.
|
||||
// Use -1 to disable.
|
||||
@@ -1028,6 +1032,10 @@ public final class PowerManagerService extends SystemService
|
||||
|
||||
mNotifier.onUserActivity(event, uid);
|
||||
|
||||
if (mUserInactiveOverrideFromWindowManager) {
|
||||
mUserInactiveOverrideFromWindowManager = false;
|
||||
}
|
||||
|
||||
if (mWakefulness == WAKEFULNESS_ASLEEP
|
||||
|| mWakefulness == WAKEFULNESS_DOZING
|
||||
|| (flags & PowerManager.USER_ACTIVITY_FLAG_INDIRECT) != 0) {
|
||||
@@ -1525,6 +1533,7 @@ public final class PowerManagerService extends SystemService
|
||||
final int sleepTimeout = getSleepTimeoutLocked();
|
||||
final int screenOffTimeout = getScreenOffTimeoutLocked(sleepTimeout);
|
||||
final int screenDimDuration = getScreenDimDurationLocked(screenOffTimeout);
|
||||
final boolean userInactiveOverride = mUserInactiveOverrideFromWindowManager;
|
||||
|
||||
mUserActivitySummary = 0;
|
||||
if (mLastUserActivityTime >= mLastWakeTime) {
|
||||
@@ -1550,6 +1559,7 @@ public final class PowerManagerService extends SystemService
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (mUserActivitySummary == 0) {
|
||||
if (sleepTimeout >= 0) {
|
||||
final long anyUserActivity = Math.max(mLastUserActivityTime,
|
||||
@@ -1565,6 +1575,12 @@ public final class PowerManagerService extends SystemService
|
||||
nextTimeout = -1;
|
||||
}
|
||||
}
|
||||
|
||||
if (mUserActivitySummary != USER_ACTIVITY_SCREEN_DREAM && userInactiveOverride) {
|
||||
mUserActivitySummary = USER_ACTIVITY_SCREEN_DREAM;
|
||||
nextTimeout = -1;
|
||||
}
|
||||
|
||||
if (mUserActivitySummary != 0 && nextTimeout >= 0) {
|
||||
Message msg = mHandler.obtainMessage(MSG_USER_ACTIVITY_TIMEOUT);
|
||||
msg.setAsynchronous(true);
|
||||
@@ -2494,6 +2510,14 @@ public final class PowerManagerService extends SystemService
|
||||
}
|
||||
}
|
||||
|
||||
private void setUserInactiveOverrideFromWindowManagerInternal() {
|
||||
synchronized (mLock) {
|
||||
mUserInactiveOverrideFromWindowManager = true;
|
||||
mDirty |= DIRTY_USER_ACTIVITY;
|
||||
updatePowerStateLocked();
|
||||
}
|
||||
}
|
||||
|
||||
private void setUserActivityTimeoutOverrideFromWindowManagerInternal(long timeoutMillis) {
|
||||
synchronized (mLock) {
|
||||
if (mUserActivityTimeoutOverrideFromWindowManager != timeoutMillis) {
|
||||
@@ -2683,6 +2707,8 @@ public final class PowerManagerService extends SystemService
|
||||
+ mScreenBrightnessOverrideFromWindowManager);
|
||||
pw.println(" mUserActivityTimeoutOverrideFromWindowManager="
|
||||
+ mUserActivityTimeoutOverrideFromWindowManager);
|
||||
pw.println(" mUserInactiveOverrideFromWindowManager="
|
||||
+ mUserInactiveOverrideFromWindowManager);
|
||||
pw.println(" mTemporaryScreenBrightnessSettingOverride="
|
||||
+ mTemporaryScreenBrightnessSettingOverride);
|
||||
pw.println(" mTemporaryScreenAutoBrightnessAdjustmentSettingOverride="
|
||||
@@ -3486,6 +3512,11 @@ public final class PowerManagerService extends SystemService
|
||||
setDozeOverrideFromDreamManagerInternal(screenState, screenBrightness);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setUserInactiveOverrideFromWindowManager() {
|
||||
setUserInactiveOverrideFromWindowManagerInternal();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setUserActivityTimeoutOverrideFromWindowManager(long timeoutMillis) {
|
||||
setUserActivityTimeoutOverrideFromWindowManagerInternal(timeoutMillis);
|
||||
|
||||
Reference in New Issue
Block a user