diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 7fef33fa..a6d81f86 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -103,7 +103,10 @@ android:configChanges="mcc|mnc|locale|touchscreen|keyboard|keyboardHidden|navigation|screenLayout|fontScale|uiMode|orientation|screenSize|smallestScreenSize|layoutDirection" android:screenOrientation="sensorLandscape" android:noHistory="true" + android:supportsPictureInPicture="true" android:resizeableActivity="true" + android:launchMode="singleTask" + android:excludeFromRecents="true" android:theme="@style/StreamTheme"> = Build.VERSION_CODES.O) { + if (prefConfig.enablePip && connected) { + enterPictureInPictureMode( + new PictureInPictureParams.Builder() + .setAspectRatio(new Rational(prefConfig.width, prefConfig.height)) + .build()); + } + } + } + @Override public void onWindowFocusChanged(boolean hasFocus) { super.onWindowFocusChanged(hasFocus); diff --git a/app/src/main/java/com/limelight/preferences/PreferenceConfiguration.java b/app/src/main/java/com/limelight/preferences/PreferenceConfiguration.java index 42154ca0..b4b69643 100644 --- a/app/src/main/java/com/limelight/preferences/PreferenceConfiguration.java +++ b/app/src/main/java/com/limelight/preferences/PreferenceConfiguration.java @@ -26,6 +26,7 @@ public class PreferenceConfiguration { private static final String BATTERY_SAVER_PREF_STRING = "checkbox_battery_saver"; private static final String DISABLE_FRAME_DROP_PREF_STRING = "checkbox_disable_frame_drop"; private static final String ENABLE_HDR_PREF_STRING = "checkbox_enable_hdr"; + private static final String ENABLE_PIP_PREF_STRING = "checkbox_enable_pip"; private static final int BITRATE_DEFAULT_720_30 = 5; private static final int BITRATE_DEFAULT_720_60 = 10; @@ -52,6 +53,7 @@ public class PreferenceConfiguration { private static final boolean DEFAULT_BATTERY_SAVER = false; private static final boolean DEFAULT_DISABLE_FRAME_DROP = false; private static final boolean DEFAULT_ENABLE_HDR = false; + private static final boolean DEFAULT_ENABLE_PIP = false; public static final int FORCE_H265_ON = -1; public static final int AUTOSELECT_H265 = 0; @@ -69,6 +71,7 @@ public class PreferenceConfiguration { public boolean batterySaver; public boolean disableFrameDrop; public boolean enableHdr; + public boolean enablePip; public static int getDefaultBitrate(String resFpsString) { if (resFpsString.equals("720p30")) { @@ -213,6 +216,7 @@ public class PreferenceConfiguration { config.batterySaver = prefs.getBoolean(BATTERY_SAVER_PREF_STRING, DEFAULT_BATTERY_SAVER); config.disableFrameDrop = prefs.getBoolean(DISABLE_FRAME_DROP_PREF_STRING, DEFAULT_DISABLE_FRAME_DROP); config.enableHdr = prefs.getBoolean(ENABLE_HDR_PREF_STRING, DEFAULT_ENABLE_HDR); + config.enablePip = prefs.getBoolean(ENABLE_PIP_PREF_STRING, DEFAULT_ENABLE_PIP); return config; } diff --git a/app/src/main/java/com/limelight/preferences/StreamSettings.java b/app/src/main/java/com/limelight/preferences/StreamSettings.java index 4a65b3b1..522c165c 100644 --- a/app/src/main/java/com/limelight/preferences/StreamSettings.java +++ b/app/src/main/java/com/limelight/preferences/StreamSettings.java @@ -68,6 +68,13 @@ public class StreamSettings extends Activity { screen.removePreference(category); } + // Remove PiP mode on devices pre-Oreo + if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O) { + PreferenceCategory category = + (PreferenceCategory) findPreference("category_basic_settings"); + category.removePreference(findPreference("checkbox_enable_pip")); + } + // Remove HDR preference for devices below Nougat if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N) { LimeLog.info("Excluding HDR toggle based on OS"); diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 205882f7..8b81b333 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -110,6 +110,8 @@ Disable on-screen connection warning messages while streaming Battery saver Uses less battery, but may increase stuttering + Enable Picture-in-Picture observer mode + Allows the stream to be viewed (but not controlled) while multitasking Audio Settings Enable 5.1 surround sound diff --git a/app/src/main/res/xml/preferences.xml b/app/src/main/res/xml/preferences.xml index 54366266..27fa953b 100644 --- a/app/src/main/res/xml/preferences.xml +++ b/app/src/main/res/xml/preferences.xml @@ -1,7 +1,8 @@ - + +