mirror of
https://github.com/zoriya/react-native-video.git
synced 2026-05-24 15:29:48 +00:00
fix(android): catch error when PiP is not supported in activity
This commit is contained in:
+12
@@ -83,4 +83,16 @@ object PictureInPictureUtils {
|
||||
|
||||
return visibleRect
|
||||
}
|
||||
|
||||
fun safeSetPictureInPictureParams(params: PictureInPictureParams) {
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
||||
try {
|
||||
val currentActivity = NitroModules.applicationContext?.currentActivity
|
||||
currentActivity?.setPictureInPictureParams(params)
|
||||
} catch (_: Exception) {
|
||||
// Ignore: We cannot check if user has added support for PIP in manifest
|
||||
// so we need to catch error if he did not add it.
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -11,6 +11,7 @@ import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import android.widget.FrameLayout
|
||||
import android.widget.ImageButton
|
||||
import androidx.annotation.RequiresApi
|
||||
import androidx.core.view.isVisible
|
||||
import androidx.fragment.app.FragmentActivity
|
||||
import androidx.media3.common.util.UnstableApi
|
||||
@@ -29,6 +30,7 @@ import com.video.core.utils.PictureInPictureUtils.canEnterPictureInPicture
|
||||
import com.video.core.utils.PictureInPictureUtils.createPictureInPictureParams
|
||||
import com.video.core.utils.Threading.runOnMainThread
|
||||
import com.video.core.extensions.toAspectRatioFrameLayout
|
||||
import com.video.core.utils.PictureInPictureUtils
|
||||
import com.video.core.utils.PictureInPictureUtils.createDisabledPictureInPictureParams
|
||||
|
||||
@UnstableApi
|
||||
@@ -65,11 +67,12 @@ class VideoView @JvmOverloads constructor(
|
||||
var autoEnterPictureInPicture: Boolean = false
|
||||
set(value) {
|
||||
field = value
|
||||
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
||||
try {
|
||||
val currentActivity = applicationContent.currentActivity
|
||||
currentActivity?.setPictureInPictureParams(createPictureInPictureParams(this))
|
||||
} catch (_: Exception) {}
|
||||
PictureInPictureUtils.safeSetPictureInPictureParams(
|
||||
if (value) createPictureInPictureParams(this)
|
||||
else createDisabledPictureInPictureParams(this)
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -347,9 +350,9 @@ class VideoView @JvmOverloads constructor(
|
||||
VideoManager.unregisterView(this)
|
||||
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
||||
// We don't want activity to go to PiP Mode when video view is not presented
|
||||
val currentActivity = applicationContent.currentActivity
|
||||
currentActivity?.setPictureInPictureParams(createDisabledPictureInPictureParams(this))
|
||||
PictureInPictureUtils.safeSetPictureInPictureParams(
|
||||
createDisabledPictureInPictureParams(this)
|
||||
)
|
||||
}
|
||||
|
||||
super.onDetachedFromWindow()
|
||||
|
||||
Reference in New Issue
Block a user