summaryrefslogtreecommitdiff
path: root/core/java
diff options
context:
space:
mode:
authorJaewan Kim <jaewan@google.com>2016-04-26 06:02:59 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2016-04-26 06:03:01 +0000
commitbdc4700155f5ff89e213cb0e9efe49897b888f7d (patch)
tree031d051b0d9f11216b18b83f04229c4fe783f642 /core/java
parente4860f02564e887918192f733a29f04552f83414 (diff)
parentf0fd218382b96f052d22a2e8ee00510cc23a6d1e (diff)
Merge "PIP: Send KEYCODE_WINDOW to app first if PIP isn't exist" into nyc-dev
Diffstat (limited to 'core/java')
-rw-r--r--core/java/android/view/View.java7
-rw-r--r--core/java/android/view/Window.java13
-rw-r--r--core/java/com/android/internal/policy/PhoneWindow.java7
-rw-r--r--core/java/com/android/internal/statusbar/IStatusBar.aidl9
4 files changed, 29 insertions, 7 deletions
diff --git a/core/java/android/view/View.java b/core/java/android/view/View.java
index eb895ff7f49c..2fc1187b4977 100644
--- a/core/java/android/view/View.java
+++ b/core/java/android/view/View.java
@@ -3071,6 +3071,13 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
/**
* @hide
*
+ * Whether the TV's picture-in-picture is visible or not.
+ */
+ public static final int TV_PICTURE_IN_PICTURE_VISIBLE = 0x00010000;
+
+ /**
+ * @hide
+ *
* Makes navigation bar transparent (but not the status bar).
*/
public static final int NAVIGATION_BAR_TRANSPARENT = 0x00008000;
diff --git a/core/java/android/view/Window.java b/core/java/android/view/Window.java
index e3abb5d70031..e598113bb3b1 100644
--- a/core/java/android/view/Window.java
+++ b/core/java/android/view/Window.java
@@ -24,6 +24,7 @@ import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.StyleRes;
import android.annotation.SystemApi;
+import android.app.ActivityManagerNative;
import android.content.Context;
import android.content.res.Configuration;
import android.content.res.Resources;
@@ -1256,6 +1257,18 @@ public abstract class Window {
}
/**
+ * Puts the activity in picture-in-picture mode.
+ * @see android.R.attr#supportsPictureInPicture
+ * @hide
+ */
+ protected void enterPictureInPictureMode() {
+ try {
+ ActivityManagerNative.getDefault().enterPictureInPictureMode(mAppToken);
+ } catch (IllegalArgumentException|RemoteException e) {
+ }
+ }
+
+ /**
* Convenience for
* {@link #setContentView(View, android.view.ViewGroup.LayoutParams)}
* to set the screen content from a layout resource. The resource will be
diff --git a/core/java/com/android/internal/policy/PhoneWindow.java b/core/java/com/android/internal/policy/PhoneWindow.java
index 151c530eea3c..16198433d99f 100644
--- a/core/java/com/android/internal/policy/PhoneWindow.java
+++ b/core/java/com/android/internal/policy/PhoneWindow.java
@@ -2002,6 +2002,13 @@ public class PhoneWindow extends Window implements MenuBuilder.Callback {
}
return true;
}
+
+ case KeyEvent.KEYCODE_WINDOW: {
+ if (!event.isCanceled()) {
+ enterPictureInPictureMode();
+ }
+ return true;
+ }
}
return false;
diff --git a/core/java/com/android/internal/statusbar/IStatusBar.aidl b/core/java/com/android/internal/statusbar/IStatusBar.aidl
index 5cbe1cec8956..7706ff7f173f 100644
--- a/core/java/com/android/internal/statusbar/IStatusBar.aidl
+++ b/core/java/com/android/internal/statusbar/IStatusBar.aidl
@@ -105,14 +105,9 @@ oneway interface IStatusBar
void onCameraLaunchGestureDetected(int source);
/**
- * Request picture-in-picture.
- *
- * <p>
- * This is called when an user presses picture-in-picture key or equivalent.
- * TV device may start picture-in-picture from foreground activity if there's none.
- * Picture-in-picture overlay menu will be shown instead otherwise.
+ * Shows the TV's picture-in-picture menu if an activity is in picture-in-picture mode.
*/
- void requestTvPictureInPicture();
+ void showTvPictureInPictureMenu();
void addQsTile(in ComponentName tile);
void remQsTile(in ComponentName tile);