From ef73162887943e16587b8e737b19e59348338e8c Mon Sep 17 00:00:00 2001 From: Mike Lockwood Date: Wed, 27 Jan 2010 17:51:34 -0500 Subject: [PATCH] Support for triggering the lockscreen while the screen is on: Add new ALLOW_LOCK_WHILE_SCREEN_ON window manager flag, which when set causes the window manager to put up the lockscreen after the normal screen timeout has elapsed. Add plumbing to pass PowerManager.userActivity() to the window manager policy. Change-Id: I05adc52bad39c56031a08e8ec3cbcf5c2d9b9827 Signed-off-by: Mike Lockwood --- api/current.xml | 15 +++++++++++++-- core/java/android/view/WindowManager.java | 6 ++++++ core/java/android/view/WindowManagerPolicy.java | 6 ++++++ .../com/android/server/PowerManagerService.java | 4 ++++ .../com/android/server/WindowManagerService.java | 3 ++- 5 files changed, 31 insertions(+), 3 deletions(-) diff --git a/api/current.xml b/api/current.xml index fe373183f082b..d6c305e990d04 100644 --- a/api/current.xml +++ b/api/current.xml @@ -72273,7 +72273,7 @@ type="float" transient="false" volatile="false" - value="0.001f" + value="0.0010f" static="true" final="true" deprecated="not deprecated" @@ -178552,6 +178552,17 @@ visibility="public" > + + - + diff --git a/core/java/android/view/WindowManager.java b/core/java/android/view/WindowManager.java index 8e15f89e63252..5ffc09ad19e71 100644 --- a/core/java/android/view/WindowManager.java +++ b/core/java/android/view/WindowManager.java @@ -369,6 +369,12 @@ public interface WindowManager extends ViewManager { */ public int flags; + /** Window flag: as long as this window is visible to the user, allow + * the lock screen to activate while the screen is on. + * This can be used independently, or in combination with + * {@link #FLAG_KEEP_SCREEN_ON} and/or {@link FLAG_SHOW_WHEN_LOCKED} */ + public static final int FLAG_ALLOW_LOCK_WHILE_SCREEN_ON = 0x00000001; + /** Window flag: everything behind this window will be dimmed. * Use {@link #dimAmount} to control the amount of dim. */ public static final int FLAG_DIM_BEHIND = 0x00000002; diff --git a/core/java/android/view/WindowManagerPolicy.java b/core/java/android/view/WindowManagerPolicy.java index 21577bf920aee..7bc5cced21153 100644 --- a/core/java/android/view/WindowManagerPolicy.java +++ b/core/java/android/view/WindowManagerPolicy.java @@ -826,6 +826,12 @@ public interface WindowManagerPolicy { */ public void systemReady(); + /** + * Called when userActivity is signalled in the power manager. + * This is safe to call from any thread, with any window manager locks held or not. + */ + public void userActivity(); + /** * Called when we have finished booting and can now display the home * screen to the user. This wilWl happen after systemReady(), and at diff --git a/services/java/com/android/server/PowerManagerService.java b/services/java/com/android/server/PowerManagerService.java index cefd3124f80d2..e14a9734c8c99 100644 --- a/services/java/com/android/server/PowerManagerService.java +++ b/services/java/com/android/server/PowerManagerService.java @@ -2011,6 +2011,10 @@ class PowerManagerService extends IPowerManager.Stub } } } + + if (mPolicy != null) { + mPolicy.userActivity(); + } } private int getAutoBrightnessValue(int sensorValue, int[] values) { diff --git a/services/java/com/android/server/WindowManagerService.java b/services/java/com/android/server/WindowManagerService.java index 1d14e5e656846..88aadbd665ce2 100644 --- a/services/java/com/android/server/WindowManagerService.java +++ b/services/java/com/android/server/WindowManagerService.java @@ -2385,7 +2385,8 @@ public class WindowManagerService extends IWindowManager.Stub // to provide the correct semantics while starting. final int mask = WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED - | WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD; + | WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD + | WindowManager.LayoutParams.FLAG_ALLOW_LOCK_WHILE_SCREEN_ON; WindowManager.LayoutParams sa = win.mAppToken.startingWindow.mAttrs; sa.flags = (sa.flags&~mask) | (win.mAttrs.flags&mask); }