درباره تصویر در تصویر (PiP)

تصویر در تصویر (PiP) نوع خاصی از حالت چند پنجره‌ای است که بیشتر برای پخش ویدیو استفاده می‌شود. این قابلیت به کاربر اجازه می‌دهد تا هنگام جابجایی بین برنامه‌ها یا مرور محتوا در صفحه اصلی، ویدیویی را در یک پنجره کوچک پین شده در گوشه صفحه تماشا کند.

PiP از APIهای چند پنجره‌ای موجود در اندروید ۷.۰ برای ارائه پنجره پین‌شده روی ویدیو استفاده می‌کند. برای افزودن PiP به برنامه خود، باید فعالیت خود را ثبت کنید، در صورت نیاز فعالیت خود را به حالت PiP تغییر دهید و مطمئن شوید که عناصر رابط کاربری پنهان هستند و پخش ویدیو در حالت PiP ادامه می‌یابد.

Implement PiP with Jetpack

Use the Jetpack Picture-in-Picture library to implement picture-in-picture experience as it streamlines integration and reduces common in-app issues. Refer to our platform sample app to see an example of its usage. However, if you prefer to implement PiP using the platform APIs, refer to the following documentation.

رابط کاربری خود را در حالت PiP مدیریت کنید

وقتی وارد حالت PiP می‌شوید، کل رابط کاربری برنامه شما وارد پنجره PiP می‌شود، مگر اینکه مشخص کنید رابط کاربری شما در حالت PiP چگونه به نظر برسد و خارج از آن چگونه باشد.

اول، باید بدانید که برنامه شما در حالت PiP است یا خیر. می‌توانید OnPictureInPictureModeChangedProvider برای دستیابی به این هدف استفاده کنید. کد زیر به شما می‌گوید که آیا برنامه شما در حالت PiP است یا خیر.

@Composable
fun rememberIsInPipMode(): Boolean {
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
        val activity = LocalContext.current.findActivity()
        var pipMode by remember { mutableStateOf(activity.isInPictureInPictureMode) }
        DisposableEffect(activity) {
            val observer = Consumer<PictureInPictureModeChangedInfo> { info ->
                pipMode = info.isInPictureInPictureMode
            }
            activity.addOnPictureInPictureModeChangedListener(
                observer
            )
            onDispose { activity.removeOnPictureInPictureModeChangedListener(observer) }
        }
        return pipMode
    } else {
        return false
    }
}

اکنون، می‌توانید از rememberIsInPipMode() برای تغییر عناصر رابط کاربری که هنگام ورود برنامه به حالت PiP نمایش داده شوند، استفاده کنید:

val inPipMode = rememberIsInPipMode()

Column(modifier = modifier) {
    // This text will only show up when the app is not in PiP mode
    if (!inPipMode) {
        Text(
            text = "Picture in Picture",
        )
    }
    VideoPlayer()
}

،

تصویر در تصویر (PiP) نوع خاصی از حالت چند پنجره‌ای است که بیشتر برای پخش ویدیو استفاده می‌شود. این قابلیت به کاربر اجازه می‌دهد تا هنگام جابجایی بین برنامه‌ها یا مرور محتوا در صفحه اصلی، ویدیویی را در یک پنجره کوچک پین شده در گوشه صفحه تماشا کند.

PiP از APIهای چند پنجره‌ای موجود در اندروید ۷.۰ برای ارائه پنجره پین‌شده روی ویدیو استفاده می‌کند. برای افزودن PiP به برنامه خود، باید فعالیت خود را ثبت کنید، در صورت نیاز فعالیت خود را به حالت PiP تغییر دهید و مطمئن شوید که عناصر رابط کاربری پنهان هستند و پخش ویدیو در حالت PiP ادامه می‌یابد.

Implement PiP with Jetpack

Use the Jetpack Picture-in-Picture library to implement picture-in-picture experience as it streamlines integration and reduces common in-app issues. Refer to our platform sample app to see an example of its usage. However, if you prefer to implement PiP using the platform APIs, refer to the following documentation.

رابط کاربری خود را در حالت PiP مدیریت کنید

وقتی وارد حالت PiP می‌شوید، کل رابط کاربری برنامه شما وارد پنجره PiP می‌شود، مگر اینکه مشخص کنید رابط کاربری شما در حالت PiP چگونه به نظر برسد و خارج از آن چگونه باشد.

اول، باید بدانید که برنامه شما در حالت PiP است یا خیر. می‌توانید OnPictureInPictureModeChangedProvider برای دستیابی به این هدف استفاده کنید. کد زیر به شما می‌گوید که آیا برنامه شما در حالت PiP است یا خیر.

@Composable
fun rememberIsInPipMode(): Boolean {
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
        val activity = LocalContext.current.findActivity()
        var pipMode by remember { mutableStateOf(activity.isInPictureInPictureMode) }
        DisposableEffect(activity) {
            val observer = Consumer<PictureInPictureModeChangedInfo> { info ->
                pipMode = info.isInPictureInPictureMode
            }
            activity.addOnPictureInPictureModeChangedListener(
                observer
            )
            onDispose { activity.removeOnPictureInPictureModeChangedListener(observer) }
        }
        return pipMode
    } else {
        return false
    }
}

اکنون، می‌توانید از rememberIsInPipMode() برای تغییر عناصر رابط کاربری که هنگام ورود برنامه به حالت PiP نمایش داده شوند، استفاده کنید:

val inPipMode = rememberIsInPipMode()

Column(modifier = modifier) {
    // This text will only show up when the app is not in PiP mode
    if (!inPipMode) {
        Text(
            text = "Picture in Picture",
        )
    }
    VideoPlayer()
}