From 602febe876b0bb6630ae7d88be9cf554c9cb8e24 Mon Sep 17 00:00:00 2001 From: Cameron Gutman Date: Wed, 29 Jun 2022 23:28:52 -0500 Subject: [PATCH] Use onPictureInPictureRequested() to enter PiP on Android 11 --- app/src/main/java/com/limelight/Game.java | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/com/limelight/Game.java b/app/src/main/java/com/limelight/Game.java index 0d3beaea..1d70130b 100644 --- a/app/src/main/java/com/limelight/Game.java +++ b/app/src/main/java/com/limelight/Game.java @@ -633,8 +633,8 @@ public class Game extends Activity implements SurfaceHolder.Callback, super.onUserLeaveHint(); // PiP is only supported on Oreo and later, and we don't need to manually enter PiP on - // Android S and later. - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O && Build.VERSION.SDK_INT < Build.VERSION_CODES.S) { + // Android S and later. On Android R, we will use onPictureInPictureRequested() instead. + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O && Build.VERSION.SDK_INT < Build.VERSION_CODES.R) { if (autoEnterPip) { try { // This has thrown all sorts of weird exceptions on Samsung devices @@ -648,6 +648,16 @@ public class Game extends Activity implements SurfaceHolder.Callback, } } + @Override + @TargetApi(Build.VERSION_CODES.R) + public boolean onPictureInPictureRequested() { + // Enter PiP when requested unless we're on Android 12 which supports auto-enter. + if (autoEnterPip && Build.VERSION.SDK_INT < Build.VERSION_CODES.S) { + enterPictureInPictureMode(getPictureInPictureParams(false)); + } + return true; + } + @Override public void onWindowFocusChanged(boolean hasFocus) { super.onWindowFocusChanged(hasFocus);