[Android] Rework the PiP conditions

Nicolas Pomepuy git at videolan.org
Wed Apr 23 08:38:38 UTC 2025


vlc-android | branch: master | Nicolas Pomepuy <nicolas at videolabs.io> | Tue Apr 15 10:31:38 2025 +0200| [caebf7e61c735fd693edcd3bd3fadceee53f0ae3] | committer: Nicolas Pomepuy

Rework the PiP conditions

Fixes #3199

> https://code.videolan.org/videolan/vlc-android/commit/caebf7e61c735fd693edcd3bd3fadceee53f0ae3
---

 .../main/java/org/videolan/resources/AndroidDevices.kt    | 15 +++++++++++----
 .../org/videolan/vlc/gui/helpers/PlayerOptionsDelegate.kt |  1 +
 .../vlc/gui/preferences/PreferenceVisibilityManager.kt    |  2 +-
 3 files changed, 13 insertions(+), 5 deletions(-)

diff --git a/application/resources/src/main/java/org/videolan/resources/AndroidDevices.kt b/application/resources/src/main/java/org/videolan/resources/AndroidDevices.kt
index 7fd7b1a4a5..56978dac42 100644
--- a/application/resources/src/main/java/org/videolan/resources/AndroidDevices.kt
+++ b/application/resources/src/main/java/org/videolan/resources/AndroidDevices.kt
@@ -37,8 +37,13 @@ import org.videolan.resources.util.getPackageInfoCompat
 import org.videolan.tools.containsName
 import org.videolan.tools.getFileNameFromPath
 import org.videolan.tools.startsWith
-import java.io.*
-import java.util.*
+import java.io.BufferedReader
+import java.io.Closeable
+import java.io.File
+import java.io.FileReader
+import java.io.IOException
+import java.util.Locale
+import java.util.StringTokenizer
 import kotlin.math.absoluteValue
 
 @TargetApi(VERSION_CODES.N)
@@ -53,7 +58,9 @@ object AndroidDevices {
     val isTv: Boolean
     val isAmazon = Build.MANUFACTURER == "Amazon"
     val isChromeBook: Boolean
+    //Is the system PiP available on this device system
     val hasPiP: Boolean
+    //Is PiP or custom PiP allowed on this device
     val pipAllowed: Boolean
     private val noMediaStyleManufacturers = arrayOf("huawei", "symphony teleca")
     val showMediaStyle = !isManufacturerBannedForMediastyleNotifications
@@ -128,8 +135,8 @@ object AndroidDevices {
         isChromeBook = pm != null && pm.hasSystemFeature("org.chromium.arc.device_management")
         isTv = isAndroidTv || !isChromeBook && !hasTsp
         hasPlayServices = pm == null || hasPlayServices(pm)
-        hasPiP = AndroidUtil.isOOrLater && pm != null && pm.hasSystemFeature(PackageManager.FEATURE_PICTURE_IN_PICTURE) || AndroidUtil.isNougatOrLater && isAndroidTv
-        pipAllowed = hasPiP || hasTsp && !AndroidUtil.isOOrLater
+        hasPiP = pm != null && pm.hasSystemFeature(PackageManager.FEATURE_PICTURE_IN_PICTURE)
+        pipAllowed = hasPiP || (hasTsp && !AndroidUtil.isOOrLater)
         val tm = ctx.getSystemService<TelephonyManager>()
         isPhone = tm == null || tm.phoneType != TelephonyManager.PHONE_TYPE_NONE
     }
diff --git a/application/vlc-android/src/org/videolan/vlc/gui/helpers/PlayerOptionsDelegate.kt b/application/vlc-android/src/org/videolan/vlc/gui/helpers/PlayerOptionsDelegate.kt
index 459853c027..5239b6e82e 100644
--- a/application/vlc-android/src/org/videolan/vlc/gui/helpers/PlayerOptionsDelegate.kt
+++ b/application/vlc-android/src/org/videolan/vlc/gui/helpers/PlayerOptionsDelegate.kt
@@ -3,6 +3,7 @@ package org.videolan.vlc.gui.helpers
 import android.annotation.SuppressLint
 import android.content.DialogInterface
 import android.content.Intent
+import android.content.pm.PackageManager
 import android.support.v4.media.session.PlaybackStateCompat
 import android.view.Gravity
 import android.view.LayoutInflater
diff --git a/application/vlc-android/src/org/videolan/vlc/gui/preferences/PreferenceVisibilityManager.kt b/application/vlc-android/src/org/videolan/vlc/gui/preferences/PreferenceVisibilityManager.kt
index 136daf8904..33bd6d4a25 100644
--- a/application/vlc-android/src/org/videolan/vlc/gui/preferences/PreferenceVisibilityManager.kt
+++ b/application/vlc-android/src/org/videolan/vlc/gui/preferences/PreferenceVisibilityManager.kt
@@ -70,7 +70,7 @@ object PreferenceVisibilityManager {
         TV_FOLDERS_FIRST, BROWSER_SHOW_HIDDEN_FILES, PLAYLIST_MODE_VIDEO, PLAYLIST_MODE_AUDIO -> forTv
         "show_update" -> !forTv && BuildConfig.DEBUG
         AUDIO_DUCKING -> !AndroidUtil.isOOrLater
-        POPUP_FORCE_LEGACY -> AndroidUtil.isOOrLater && !forTv
+        POPUP_FORCE_LEGACY -> AndroidDevices.pipAllowed
         RESUME_PLAYBACK -> AndroidDevices.isPhone && !forTv
         KEY_AOUT -> VlcMigrationHelper.getAudioOutputFromDevice() == VlcMigrationHelper.AudioOutput.ALL
         "audio_digital_output" -> sharedPreferences.getString("aout", "0") != "2"



More information about the Android mailing list