Loading core/java/android/os/PowerManagerInternal.java +6 −0 Original line number Diff line number Diff line Loading @@ -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. * Loading core/java/android/view/KeyEvent.java +4 −1 Original line number Diff line number Diff line Loading @@ -788,8 +788,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() Loading core/res/res/values/attrs.xml +1 −0 Original line number Diff line number Diff line Loading @@ -1820,6 +1820,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> <!-- ***************************************************************** --> Loading services/core/java/com/android/server/policy/PhoneWindowManager.java +12 −0 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -265,6 +266,7 @@ public class PhoneWindowManager implements WindowManagerPolicy { WindowManagerFuncs mWindowManagerFuncs; WindowManagerInternal mWindowManagerInternal; PowerManager mPowerManager; PowerManagerInternal mPowerManagerInternal; ActivityManagerInternal mActivityManagerInternal; DreamManagerInternal mDreamManagerInternal; IStatusBarService mStatusBarService; Loading Loading @@ -1335,6 +1337,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( Loading Loading @@ -5125,6 +5128,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; Loading services/core/java/com/android/server/power/PowerManagerService.java +31 −0 Original line number Diff line number Diff line Loading @@ -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. Loading Loading @@ -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) { Loading Loading @@ -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) { Loading @@ -1550,6 +1559,7 @@ public final class PowerManagerService extends SystemService } } } if (mUserActivitySummary == 0) { if (sleepTimeout >= 0) { final long anyUserActivity = Math.max(mLastUserActivityTime, Loading @@ -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); Loading Loading @@ -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) { Loading Loading @@ -2688,6 +2712,8 @@ public final class PowerManagerService extends SystemService + mScreenBrightnessOverrideFromWindowManager); pw.println(" mUserActivityTimeoutOverrideFromWindowManager=" + mUserActivityTimeoutOverrideFromWindowManager); pw.println(" mUserInactiveOverrideFromWindowManager=" + mUserInactiveOverrideFromWindowManager); pw.println(" mTemporaryScreenBrightnessSettingOverride=" + mTemporaryScreenBrightnessSettingOverride); pw.println(" mTemporaryScreenAutoBrightnessAdjustmentSettingOverride=" Loading Loading @@ -3491,6 +3517,11 @@ public final class PowerManagerService extends SystemService setDozeOverrideFromDreamManagerInternal(screenState, screenBrightness); } @Override public void setUserInactiveOverrideFromWindowManager() { setUserInactiveOverrideFromWindowManagerInternal(); } @Override public void setUserActivityTimeoutOverrideFromWindowManager(long timeoutMillis) { setUserActivityTimeoutOverrideFromWindowManagerInternal(timeoutMillis); Loading Loading
core/java/android/os/PowerManagerInternal.java +6 −0 Original line number Diff line number Diff line Loading @@ -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. * Loading
core/java/android/view/KeyEvent.java +4 −1 Original line number Diff line number Diff line Loading @@ -788,8 +788,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() Loading
core/res/res/values/attrs.xml +1 −0 Original line number Diff line number Diff line Loading @@ -1820,6 +1820,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> <!-- ***************************************************************** --> Loading
services/core/java/com/android/server/policy/PhoneWindowManager.java +12 −0 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -265,6 +266,7 @@ public class PhoneWindowManager implements WindowManagerPolicy { WindowManagerFuncs mWindowManagerFuncs; WindowManagerInternal mWindowManagerInternal; PowerManager mPowerManager; PowerManagerInternal mPowerManagerInternal; ActivityManagerInternal mActivityManagerInternal; DreamManagerInternal mDreamManagerInternal; IStatusBarService mStatusBarService; Loading Loading @@ -1335,6 +1337,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( Loading Loading @@ -5125,6 +5128,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; Loading
services/core/java/com/android/server/power/PowerManagerService.java +31 −0 Original line number Diff line number Diff line Loading @@ -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. Loading Loading @@ -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) { Loading Loading @@ -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) { Loading @@ -1550,6 +1559,7 @@ public final class PowerManagerService extends SystemService } } } if (mUserActivitySummary == 0) { if (sleepTimeout >= 0) { final long anyUserActivity = Math.max(mLastUserActivityTime, Loading @@ -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); Loading Loading @@ -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) { Loading Loading @@ -2688,6 +2712,8 @@ public final class PowerManagerService extends SystemService + mScreenBrightnessOverrideFromWindowManager); pw.println(" mUserActivityTimeoutOverrideFromWindowManager=" + mUserActivityTimeoutOverrideFromWindowManager); pw.println(" mUserInactiveOverrideFromWindowManager=" + mUserInactiveOverrideFromWindowManager); pw.println(" mTemporaryScreenBrightnessSettingOverride=" + mTemporaryScreenBrightnessSettingOverride); pw.println(" mTemporaryScreenAutoBrightnessAdjustmentSettingOverride=" Loading Loading @@ -3491,6 +3517,11 @@ public final class PowerManagerService extends SystemService setDozeOverrideFromDreamManagerInternal(screenState, screenBrightness); } @Override public void setUserInactiveOverrideFromWindowManager() { setUserInactiveOverrideFromWindowManagerInternal(); } @Override public void setUserActivityTimeoutOverrideFromWindowManager(long timeoutMillis) { setUserActivityTimeoutOverrideFromWindowManagerInternal(timeoutMillis); Loading