diff --git a/app/phone/src/main/java/dev/jdtech/jellyfin/PlayerActivity.kt b/app/phone/src/main/java/dev/jdtech/jellyfin/PlayerActivity.kt index 33c8d15a..5171533a 100644 --- a/app/phone/src/main/java/dev/jdtech/jellyfin/PlayerActivity.kt +++ b/app/phone/src/main/java/dev/jdtech/jellyfin/PlayerActivity.kt @@ -169,6 +169,11 @@ class PlayerActivity : BasePlayerActivity() { viewModel.eventsChannelFlow.collect { event -> when (event) { is PlayerEvents.NavigateBack -> finish() + is PlayerEvents.IsPlayingChanged -> { + if (appPreferences.playerPipGesture) { + setPictureInPictureParams(pipParams(event.isPlaying)) + } + } } } } @@ -263,12 +268,16 @@ class PlayerActivity : BasePlayerActivity() { } override fun onUserLeaveHint() { - if (appPreferences.playerPipGesture && viewModel.player.isPlaying && !isControlsLocked) { + if (Build.VERSION.SDK_INT < Build.VERSION_CODES.S && + appPreferences.playerPipGesture && + viewModel.player.isPlaying && + !isControlsLocked + ) { pictureInPicture() } } - private fun pipParams(): PictureInPictureParams { + private fun pipParams(enableAutoEnter: Boolean = viewModel.player.isPlaying): PictureInPictureParams { val displayAspectRatio = Rational(binding.playerView.width, binding.playerView.height) val aspectRatio = binding.playerView.player?.videoSize?.let { @@ -296,26 +305,21 @@ class PlayerActivity : BasePlayerActivity() { ) } - return PictureInPictureParams.Builder() + val builder = PictureInPictureParams.Builder() .setAspectRatio(aspectRatio) .setSourceRectHint(sourceRectHint) - .build() + + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) { + builder.setAutoEnterEnabled(enableAutoEnter) + } + + return builder.build() } private fun pictureInPicture() { if (!isPipSupported) { return } - binding.playerView.useController = false - binding.playerView.findViewById