diff options
| author | Wale Ogunwale <ogunwale@google.com> | 2015-12-04 15:35:38 -0800 |
|---|---|---|
| committer | Wale Ogunwale <ogunwale@google.com> | 2015-12-07 07:40:56 -0800 |
| commit | 5f986095bed776c119d2f5452e0afeac3a437ea2 (patch) | |
| tree | ad50d476f4784fb5fcb603ac1118b2db9317bf94 /core/java/android/app/ActivityThread.java | |
| parent | c72b3101ee368d2a9943e4436ede679acfa38f92 (diff) | |
APIs for activity to know when its windowing/pip modes change
Added APIs that allow activities to ask the system if they are currently
in multi-window or picture-in-picture mode and also get notified when
their modes change.
Bug: 25509834
Bug: 25683717
Change-Id: I4b8c316a49940bd6a8b31a93b345f9fd725a4721
Diffstat (limited to 'core/java/android/app/ActivityThread.java')
| -rw-r--r-- | core/java/android/app/ActivityThread.java | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/core/java/android/app/ActivityThread.java b/core/java/android/app/ActivityThread.java index e64d13a61f62..f3539ff5ae61 100644 --- a/core/java/android/app/ActivityThread.java +++ b/core/java/android/app/ActivityThread.java @@ -1275,6 +1275,18 @@ public final class ActivityThread { } catch (IOException e) { } } + + @Override + public void scheduleMultiWindowModeChanged(IBinder token, boolean multiWindowMode) + throws RemoteException { + sendMessage(H.MULTI_WINDOW_MODE_CHANGED, token, multiWindowMode ? 1 : 0); + } + + @Override + public void schedulePictureInPictureModeChanged(IBinder token, boolean pipMode) + throws RemoteException { + sendMessage(H.PICTURE_IN_PICTURE_MODE_CHANGED, token, pipMode ? 1 : 0); + } } private int getLifecycleSeq() { @@ -1336,6 +1348,8 @@ public final class ActivityThread { public static final int ENTER_ANIMATION_COMPLETE = 149; public static final int START_BINDER_TRACKING = 150; public static final int STOP_BINDER_TRACKING_AND_DUMP = 151; + public static final int MULTI_WINDOW_MODE_CHANGED = 152; + public static final int PICTURE_IN_PICTURE_MODE_CHANGED = 153; String codeToString(int code) { if (DEBUG_MESSAGES) { @@ -1389,6 +1403,8 @@ public final class ActivityThread { case CANCEL_VISIBLE_BEHIND: return "CANCEL_VISIBLE_BEHIND"; case BACKGROUND_VISIBLE_BEHIND_CHANGED: return "BACKGROUND_VISIBLE_BEHIND_CHANGED"; case ENTER_ANIMATION_COMPLETE: return "ENTER_ANIMATION_COMPLETE"; + case MULTI_WINDOW_MODE_CHANGED: return "MULTI_WINDOW_MODE_CHANGED"; + case PICTURE_IN_PICTURE_MODE_CHANGED: return "PICTURE_IN_PICTURE_MODE_CHANGED"; } } return Integer.toString(code); @@ -1632,6 +1648,12 @@ public final class ActivityThread { case STOP_BINDER_TRACKING_AND_DUMP: handleStopBinderTrackingAndDump((ParcelFileDescriptor) msg.obj); break; + case MULTI_WINDOW_MODE_CHANGED: + handleMultiWindowModeChanged((IBinder) msg.obj, msg.arg1 == 1); + break; + case PICTURE_IN_PICTURE_MODE_CHANGED: + handlePictureInPictureModeChanged((IBinder) msg.obj, msg.arg1 == 1); + break; } Object obj = msg.obj; if (obj instanceof SomeArgs) { @@ -2814,6 +2836,20 @@ public final class ActivityThread { } } + private void handleMultiWindowModeChanged(IBinder token, boolean multiWindowMode) { + final ActivityClientRecord r = mActivities.get(token); + if (r != null) { + r.activity.onMultiWindowModeChanged(multiWindowMode); + } + } + + private void handlePictureInPictureModeChanged(IBinder token, boolean pipMode) { + final ActivityClientRecord r = mActivities.get(token); + if (r != null) { + r.activity.onPictureInPictureModeChanged(pipMode); + } + } + private static final ThreadLocal<Intent> sCurrentBroadcastIntent = new ThreadLocal<Intent>(); /** |
