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); }