override fun onPictureInPictureModeChanged(isInPictureInPictureMode: Boolean) {
override fun onPictureInPictureModeChanged(isInPictureInPictureMode: Boolean, newConfig: Configuration) {
super.onPictureInPictureModeChanged(isInPictureInPictureMode)
if (isFinishing) {
return
}
if (lifecycle.currentState == Lifecycle.State.CREATED) {
// when user clicks on Close button of PIP
finishAndRemoveTask()
} else {
StreamVideoReactNative.onPictureInPictureModeChanged(isInPictureInPictureMode)
StreamVideoReactNative.onPictureInPictureModeChanged(isInPictureInPictureMode, newConfig)
}
}1.9.0
Picture-in-picture (PiP) mode for Android has been revamped!
🔨 What changed?
Android 12+ now uses the setAutoEnterEnabled API instead of relying on onUserHint, providing smoother transitions on newer Android versions.
💡 How to migrate?
Review our PiP setup documentation for Android.
🚨 Breaking Changes
- The
onPictureInPictureModeChangedmethod now requires a screen configuration parameter:
- The
onUserLeaveHintmethod implementation is now simpler:
public override fun onUserLeaveHint() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O && StreamVideoReactNative.canAutoEnterPictureInPictureMode) {
val builder = PictureInPictureParams.Builder()
builder.setAspectRatio(Rational(480, 640))
enterPictureInPictureMode(builder.build())
override fun onUserLeaveHint() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O && Build.VERSION.SDK_INT < Build.VERSION_CODES.S && StreamVideoReactNative.canAutoEnterPictureInPictureMode) {
val config = resources.configuration
onPictureInPictureModeChanged(true, config)
}
}- The Expo config plugin for Android PiP has changed:
androidPictureInPicture: {
enableAutomaticEnter: true,
},
androidPictureInPicture: true,