diff --git a/app/src/main/java/com/github/libretube/ui/fragments/PlayerFragment.kt b/app/src/main/java/com/github/libretube/ui/fragments/PlayerFragment.kt index afc681468..2babe06ab 100644 --- a/app/src/main/java/com/github/libretube/ui/fragments/PlayerFragment.kt +++ b/app/src/main/java/com/github/libretube/ui/fragments/PlayerFragment.kt @@ -166,6 +166,7 @@ class PlayerFragment : BaseFragment() { private var sponsorBlockNotifications = true private var skipButtonsEnabled = false private var pipEnabled = true + private var videoShownInExternalPlayer = false private var skipSegmentsManually = false private var progressiveLoadingIntervalSize = "64" @@ -666,6 +667,13 @@ class PlayerFragment : BaseFragment() { if (!commentsLoaded!!) fetchComments() } + override fun onStart() { + super.onStart() + + // Assuming the video is not playing in external player when returning to app + videoShownInExternalPlayer = false + } + override fun onPause() { // pauses the player if the screen is turned off @@ -1049,6 +1057,9 @@ class PlayerFragment : BaseFragment() { if (response.hls != null) { binding.relPlayerOpen.setOnClickListener { + // Do not start picture in picture when playing in external player + videoShownInExternalPlayer = true + // start an intent with video as mimetype using the hls stream val uri: Uri = Uri.parse(response.hls) val intent = Intent() @@ -1523,7 +1534,12 @@ class PlayerFragment : BaseFragment() { } private fun shouldStartPiP(): Boolean { - if (!pipEnabled || exoPlayer.playbackState == PlaybackState.STATE_PAUSED) return false + if (!pipEnabled || + exoPlayer.playbackState == PlaybackState.STATE_PAUSED || + videoShownInExternalPlayer + ) { + return false + } val bounds = Rect() binding.playerScrollView.getHitRect(bounds)