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

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

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

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

জেটপ্যাক পিকচার-ইন-পিকচার লাইব্রেরি ব্যবহার করে পিকচার-ইন-পিকচার অভিজ্ঞতা বাস্তবায়ন করুন কারণ এটি ইন্টিগ্রেশনকে সহজ করে তোলে এবং অ্যাপ-মধ্যস্থ সাধারণ সমস্যাগুলি হ্রাস করে। এর ব্যবহারের উদাহরণ দেখতে আমাদের প্ল্যাটফর্ম নমুনা অ্যাপটি দেখুন। তবে, আপনি যদি প্ল্যাটফর্ম 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()
}