পিকচার-ইন-পিকচার (PiP) সম্পর্কে

পিকচার-ইন-পিকচার (PiP) হল এক বিশেষ ধরনের মাল্টি-উইন্ডো মোড যা বেশিরভাগ ক্ষেত্রে ভিডিও প্লেব্যাকের জন্য ব্যবহার করা হয়। এটি ব্যবহারকারীকে স্ক্রিনের কোনও কোণে পিন করা একটি ছোট উইন্ডোতে ভিডিও দেখতে দেয়, এর পাশাপাশি ব্যবহারকারী প্রধান স্ক্রিনে অ্যাপের মধ্যে নেভিগেট করতে বা কন্টেন্ট ব্রাউজ করতে পারেন।

Android 7.0-এ উপলভ্য একাধিক উইন্ডো API-কে কাজে লাগিয়ে PiP পিন করা ভিডিও ওভারলে উইন্ডো প্রদান করে। আপনার অ্যাপে PiP যোগ করতে, আপনাকে নিজের অ্যাক্টিভিটি রেজিস্টার করতে হবে, প্রয়োজন মতো আপনার অ্যাক্টিভিটি PiP মোডে পরিবর্তন করতে হবে এবং নিশ্চিত করতে হবে যে UI এলিমেন্ট লুকানো আছে এবং অ্যাক্টিভিটি PiP মোডে থাকাকালীন ভিডিও প্লেব্যাক চলছে।

জেটপ্যাকের মাধ্যমে পিআইপি বাস্তবায়ন করুন

জেটপ্যাক পিকচার-ইন-পিকচার লাইব্রেরি ব্যবহার করে পিকচার-ইন-পিকচার অভিজ্ঞতা বাস্তবায়ন করুন কারণ এটি ইন্টিগ্রেশনকে সহজ করে তোলে এবং অ্যাপ-মধ্যস্থ সাধারণ সমস্যাগুলি হ্রাস করে। এর ব্যবহারের উদাহরণ দেখতে আমাদের প্ল্যাটফর্ম নমুনা অ্যাপটি দেখুন। তবে, আপনি যদি প্ল্যাটফর্ম API ব্যবহার করে PiP বাস্তবায়ন করতে চান, তাহলে নিম্নলিখিত ডকুমেন্টেশনগুলি দেখুন।

,

জেটপ্যাকের মাধ্যমে পিআইপি বাস্তবায়ন করুন

জেটপ্যাক পিকচার-ইন-পিকচার লাইব্রেরি ব্যবহার করে পিকচার-ইন-পিকচার অভিজ্ঞতা বাস্তবায়ন করুন কারণ এটি ইন্টিগ্রেশনকে সহজ করে তোলে এবং অ্যাপ-মধ্যস্থ সাধারণ সমস্যাগুলি হ্রাস করে। এর ব্যবহারের উদাহরণ দেখতে আমাদের প্ল্যাটফর্ম নমুনা অ্যাপটি দেখুন। তবে, আপনি যদি প্ল্যাটফর্ম API ব্যবহার করে PiP বাস্তবায়ন করতে চান, তাহলে নিম্নলিখিত ডকুমেন্টেশনগুলি দেখুন।

PiP মোডে UI ম্যানেজ করা

আপনি PiP মোডে প্রবেশ করলে, আপনার অ্যাপের সম্পূর্ণ UI, PiP উইন্ডোতে প্রবেশ করে, যদি না আপনি PiP মোডে এবং এর বাইরে আপনার UI কেমন হওয়া উচিত তা নির্দিষ্ট করেন।

প্রথমে, আপনার অ্যাপ কখন 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
    }
}

অ্যাপ PiP মোডে গেলে কোন UI এলিমেন্ট দেখাবেন তা টগল করতে আপনি এখন 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()
}