PIP: Use long press HOME for PIP on Android TV (2/2)
Bug: 25580820
Change-Id: Ic269132ec7de1e725989ad57a1ee205b3334e3bb
diff --git a/services/core/java/com/android/server/policy/PhoneWindowManager.java b/services/core/java/com/android/server/policy/PhoneWindowManager.java
index 9c629bd..806c4ca 100644
--- a/services/core/java/com/android/server/policy/PhoneWindowManager.java
+++ b/services/core/java/com/android/server/policy/PhoneWindowManager.java
@@ -183,6 +183,8 @@
static final int LONG_PRESS_HOME_NOTHING = 0;
static final int LONG_PRESS_HOME_RECENT_SYSTEM_UI = 1;
static final int LONG_PRESS_HOME_ASSIST = 2;
+ static final int LONG_PRESS_HOME_PICTURE_IN_PICTURE = 3;
+ static final int LAST_LONG_PRESS_HOME_BEHAVIOR = LONG_PRESS_HOME_PICTURE_IN_PICTURE;
static final int DOUBLE_TAP_HOME_NOTHING = 0;
static final int DOUBLE_TAP_HOME_RECENT_SYSTEM_UI = 1;
@@ -1313,16 +1315,26 @@
}
}
- private void handleLongPressOnHome(int deviceId) {
- if (mLongPressOnHomeBehavior != LONG_PRESS_HOME_NOTHING) {
- mHomeConsumed = true;
- performHapticFeedbackLw(null, HapticFeedbackConstants.LONG_PRESS, false);
+ private void handleLongPressOnHome(int deviceId, KeyEvent event) {
+ if (mLongPressOnHomeBehavior == LONG_PRESS_HOME_NOTHING) {
+ return;
+ }
+ mHomeConsumed = true;
+ performHapticFeedbackLw(null, HapticFeedbackConstants.LONG_PRESS, false);
- if (mLongPressOnHomeBehavior == LONG_PRESS_HOME_RECENT_SYSTEM_UI) {
+ switch (mLongPressOnHomeBehavior) {
+ case LONG_PRESS_HOME_RECENT_SYSTEM_UI:
toggleRecentApps();
- } else if (mLongPressOnHomeBehavior == LONG_PRESS_HOME_ASSIST) {
+ break;
+ case LONG_PRESS_HOME_ASSIST:
launchAssistAction(null, deviceId);
- }
+ break;
+ case LONG_PRESS_HOME_PICTURE_IN_PICTURE:
+ handlePipKey(event);
+ break;
+ default:
+ Log.w(TAG, "Not defined home long press behavior: " + mLongPressOnHomeBehavior);
+ break;
}
}
@@ -1333,6 +1345,13 @@
}
}
+ private void handlePipKey(KeyEvent event) {
+ if (DEBUG_INPUT) Log.d(TAG, "handlePipKey event=" + event);
+ Intent intent = new Intent(Intent.ACTION_PICTURE_IN_PICTURE_BUTTON);
+ intent.putExtra(Intent.EXTRA_KEY_EVENT, event);
+ mContext.sendBroadcastAsUser(intent, UserHandle.ALL);
+ }
+
private final Runnable mHomeDoubleTapTimeoutRunnable = new Runnable() {
@Override
public void run() {
@@ -1625,7 +1644,7 @@
mLongPressOnHomeBehavior = mContext.getResources().getInteger(
com.android.internal.R.integer.config_longPressOnHomeBehavior);
if (mLongPressOnHomeBehavior < LONG_PRESS_HOME_NOTHING ||
- mLongPressOnHomeBehavior > LONG_PRESS_HOME_ASSIST) {
+ mLongPressOnHomeBehavior > LAST_LONG_PRESS_HOME_BEHAVIOR) {
mLongPressOnHomeBehavior = LONG_PRESS_HOME_NOTHING;
}
@@ -2851,7 +2870,7 @@
}
} else if ((event.getFlags() & KeyEvent.FLAG_LONG_PRESS) != 0) {
if (!keyguardOn) {
- handleLongPressOnHome(event.getDeviceId());
+ handleLongPressOnHome(event.getDeviceId(), event);
}
}
return -1;