पिक्चर में पिक्चर (पीआईपी) मोड, मल्टी-विंडो मोड का एक खास टाइप है. इसका इस्तेमाल ज़्यादातर वीडियो चलाने के लिए किया जाता है. इस सुविधा की मदद से, उपयोगकर्ता ऐप्लिकेशन के बीच स्विच करते समय या मुख्य स्क्रीन पर कॉन्टेंट ब्राउज़ करते समय, स्क्रीन के कोने पर पिन की गई एक छोटी विंडो में वीडियो देख सकता है.
पीआईपी, Android 7.0 में उपलब्ध मल्टी-विंडो एपीआई का इस्तेमाल करता है, ताकि पिन की गई वीडियो ओवरले विंडो उपलब्ध कराई जा सके. अपने ऐप्लिकेशन में पीआईपी मोड जोड़ने के लिए, आपको अपनी गतिविधि रजिस्टर करनी होगी. साथ ही, ज़रूरत के मुताबिक अपनी गतिविधि को पीआईपी मोड पर स्विच करना होगा. इसके अलावा, आपको यह पक्का करना होगा कि गतिविधि पीआईपी मोड में होने पर, यूज़र इंटरफ़ेस (यूआई) एलिमेंट छिपे हों और वीडियो चलता रहे.
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 मोड में है या नहीं. इसके लिए, 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() का इस्तेमाल करके, यह टॉगल किया जा सकता है कि ऐप्लिकेशन के पीआईपी मोड में आने पर, कौनसे यूज़र इंटरफ़ेस (यूआई) एलिमेंट दिखाए जाएं:
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() }