diff --git a/android/src/main/java/dev/zoriya/omni/OmniView.kt b/android/src/main/java/dev/zoriya/omni/OmniView.kt index 5b02279..99906a0 100755 --- a/android/src/main/java/dev/zoriya/omni/OmniView.kt +++ b/android/src/main/java/dev/zoriya/omni/OmniView.kt @@ -125,6 +125,7 @@ class OmniView(val context: ThemedReactContext) : autoPip == false && curPip == this -> { activeView = WeakReference(null) + clearPictureInPictureParams() } } @@ -156,6 +157,7 @@ class OmniView(val context: ThemedReactContext) : restoreUiAfterPip() if (activeView.get() == this) { activeView = WeakReference(null) + clearPictureInPictureParams() } surfaceView.removeOnLayoutChangeListener(this) context.removeLifecycleEventListener(this) @@ -222,6 +224,21 @@ class OmniView(val context: ThemedReactContext) : activity.setPictureInPictureParams(buildPipParams(autoEnterEnabled)) } + private fun clearPictureInPictureParams() { + if (Build.VERSION.SDK_INT < Build.VERSION_CODES.S) { + return + } + val activity = context.currentActivity ?: return + if (activity.isFinishing || activity.isDestroyed) { + return + } + activity.setPictureInPictureParams( + PictureInPictureParams.Builder() + .setAutoEnterEnabled(false) + .build() + ) + } + private fun buildPipParams(autoEnterEnabled: Boolean): PictureInPictureParams { val aspectRatio = if (surfaceView.width > 0 && surfaceView.height > 0) { Rational(surfaceView.width, surfaceView.height)