summaryrefslogtreecommitdiff
path: root/core/java/android/app/ActivityThread.java
diff options
context:
space:
mode:
authorWale Ogunwale <ogunwale@google.com>2015-12-04 15:35:38 -0800
committerWale Ogunwale <ogunwale@google.com>2015-12-07 07:40:56 -0800
commit5f986095bed776c119d2f5452e0afeac3a437ea2 (patch)
treead50d476f4784fb5fcb603ac1118b2db9317bf94 /core/java/android/app/ActivityThread.java
parentc72b3101ee368d2a9943e4436ede679acfa38f92 (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.java36
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>();
/**