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