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

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

পিন করা ভিডিও ওভারলে উইন্ডো প্রদান করার জন্য PiP, Android 7.0-এ উপলভ্য মাল্টি-উইন্ডো API-এর সুবিধা নেয়। আপনার অ্যাপে 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()
}