আপনি যদি আপনার PiP উইন্ডোতে নিয়ন্ত্রণ (খেলা, বিরতি, ইত্যাদি) যোগ করতে চান, আপনি যোগ করতে চান এমন প্রতিটি নিয়ন্ত্রণের জন্য একটি RemoteAction
তৈরি করুন।
- আপনার সম্প্রচার নিয়ন্ত্রণের জন্য ধ্রুবক যোগ করুন:
// Constant for broadcast receiver const val ACTION_BROADCAST_CONTROL = "broadcast_control" // Intent extras for broadcast controls from Picture-in-Picture mode. const val EXTRA_CONTROL_TYPE = "control_type" const val EXTRA_CONTROL_PLAY = 1 const val EXTRA_CONTROL_PAUSE = 2
- আপনার PiP উইন্ডোতে নিয়ন্ত্রণের জন্য
RemoteActions
এর একটি তালিকা তৈরি করুন। - এরপরে, একটি
BroadcastReceiver
যোগ করুন এবং প্রতিটি বোতামের ক্রিয়া সেট করতেonReceive()
ওভাররাইড করুন। রিসিভার এবং রিমোট অ্যাকশন নিবন্ধন করতে একটিDisposableEffect
ব্যবহার করুন। প্লেয়ারটি নিষ্পত্তি হয়ে গেলে, রিসিভারটিকে নিবন্ধনমুক্ত করুন।@RequiresApi(Build.VERSION_CODES.O) @Composable fun PlayerBroadcastReceiver(player: Player?) { val isInPipMode = rememberIsInPipMode() if (!isInPipMode || player == null) { // Broadcast receiver is only used if app is in PiP mode and player is non null return } val context = LocalContext.current DisposableEffect(player) { val broadcastReceiver: BroadcastReceiver = object : BroadcastReceiver() { override fun onReceive(context: Context?, intent: Intent?) { if ((intent == null) || (intent.action != ACTION_BROADCAST_CONTROL)) { return } when (intent.getIntExtra(EXTRA_CONTROL_TYPE, 0)) { EXTRA_CONTROL_PAUSE -> player.pause() EXTRA_CONTROL_PLAY -> player.play() } } } ContextCompat.registerReceiver( context, broadcastReceiver, IntentFilter(ACTION_BROADCAST_CONTROL), ContextCompat.RECEIVER_NOT_EXPORTED ) onDispose { context.unregisterReceiver(broadcastReceiver) } } }
- আপনার দূরবর্তী ক্রিয়াগুলির একটি তালিকা
PictureInPictureParams.Builder
এ পাঠান:val context = LocalContext.current val pipModifier = modifier.onGloballyPositioned { layoutCoordinates -> val builder = PictureInPictureParams.Builder() builder.setActions( listOfRemoteActions() ) if (shouldEnterPipMode && player != null && player.videoSize != VideoSize.UNKNOWN) { val sourceRect = layoutCoordinates.boundsInWindow().toAndroidRectF().toRect() builder.setSourceRectHint(sourceRect) builder.setAspectRatio( Rational(player.videoSize.width, player.videoSize.height) ) } if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) { builder.setAutoEnterEnabled(shouldEnterPipMode) } context.findActivity().setPictureInPictureParams(builder.build()) } VideoPlayer(modifier = pipModifier)
পরবর্তী পদক্ষেপ
- কম্পোজ PiP-এর সর্বোত্তম অনুশীলনগুলি কার্যকরভাবে দেখতে Socialite অ্যাপটি দেখুন৷
- আরও তথ্যের জন্য PiP ডিজাইন নির্দেশিকা দেখুন।
আপনি যদি আপনার PiP উইন্ডোতে নিয়ন্ত্রণ (খেলা, বিরতি, ইত্যাদি) যোগ করতে চান, আপনি যোগ করতে চান এমন প্রতিটি নিয়ন্ত্রণের জন্য একটি RemoteAction
তৈরি করুন।
- আপনার সম্প্রচার নিয়ন্ত্রণের জন্য ধ্রুবক যোগ করুন:
// Constant for broadcast receiver const val ACTION_BROADCAST_CONTROL = "broadcast_control" // Intent extras for broadcast controls from Picture-in-Picture mode. const val EXTRA_CONTROL_TYPE = "control_type" const val EXTRA_CONTROL_PLAY = 1 const val EXTRA_CONTROL_PAUSE = 2
- আপনার PiP উইন্ডোতে নিয়ন্ত্রণের জন্য
RemoteActions
এর একটি তালিকা তৈরি করুন। - এরপরে, একটি
BroadcastReceiver
যোগ করুন এবং প্রতিটি বোতামের ক্রিয়া সেট করতেonReceive()
ওভাররাইড করুন। রিসিভার এবং রিমোট অ্যাকশন নিবন্ধন করতে একটিDisposableEffect
ব্যবহার করুন। প্লেয়ারটি নিষ্পত্তি হয়ে গেলে, রিসিভারটিকে নিবন্ধনমুক্ত করুন।@RequiresApi(Build.VERSION_CODES.O) @Composable fun PlayerBroadcastReceiver(player: Player?) { val isInPipMode = rememberIsInPipMode() if (!isInPipMode || player == null) { // Broadcast receiver is only used if app is in PiP mode and player is non null return } val context = LocalContext.current DisposableEffect(player) { val broadcastReceiver: BroadcastReceiver = object : BroadcastReceiver() { override fun onReceive(context: Context?, intent: Intent?) { if ((intent == null) || (intent.action != ACTION_BROADCAST_CONTROL)) { return } when (intent.getIntExtra(EXTRA_CONTROL_TYPE, 0)) { EXTRA_CONTROL_PAUSE -> player.pause() EXTRA_CONTROL_PLAY -> player.play() } } } ContextCompat.registerReceiver( context, broadcastReceiver, IntentFilter(ACTION_BROADCAST_CONTROL), ContextCompat.RECEIVER_NOT_EXPORTED ) onDispose { context.unregisterReceiver(broadcastReceiver) } } }
- আপনার দূরবর্তী ক্রিয়াগুলির একটি তালিকা
PictureInPictureParams.Builder
এ পাঠান:val context = LocalContext.current val pipModifier = modifier.onGloballyPositioned { layoutCoordinates -> val builder = PictureInPictureParams.Builder() builder.setActions( listOfRemoteActions() ) if (shouldEnterPipMode && player != null && player.videoSize != VideoSize.UNKNOWN) { val sourceRect = layoutCoordinates.boundsInWindow().toAndroidRectF().toRect() builder.setSourceRectHint(sourceRect) builder.setAspectRatio( Rational(player.videoSize.width, player.videoSize.height) ) } if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) { builder.setAutoEnterEnabled(shouldEnterPipMode) } context.findActivity().setPictureInPictureParams(builder.build()) } VideoPlayer(modifier = pipModifier)
পরবর্তী পদক্ষেপ
- কম্পোজ PiP-এর সর্বোত্তম অনুশীলনগুলি কার্যকরভাবে দেখতে Socialite অ্যাপটি দেখুন৷
- আরও তথ্যের জন্য PiP ডিজাইন নির্দেশিকা দেখুন।
আপনি যদি আপনার PiP উইন্ডোতে নিয়ন্ত্রণ (খেলা, বিরতি, ইত্যাদি) যোগ করতে চান, আপনি যোগ করতে চান এমন প্রতিটি নিয়ন্ত্রণের জন্য একটি RemoteAction
তৈরি করুন।
- আপনার সম্প্রচার নিয়ন্ত্রণের জন্য ধ্রুবক যোগ করুন:
// Constant for broadcast receiver const val ACTION_BROADCAST_CONTROL = "broadcast_control" // Intent extras for broadcast controls from Picture-in-Picture mode. const val EXTRA_CONTROL_TYPE = "control_type" const val EXTRA_CONTROL_PLAY = 1 const val EXTRA_CONTROL_PAUSE = 2
- আপনার PiP উইন্ডোতে নিয়ন্ত্রণের জন্য
RemoteActions
এর একটি তালিকা তৈরি করুন। - এরপরে, একটি
BroadcastReceiver
যোগ করুন এবং প্রতিটি বোতামের ক্রিয়া সেট করতেonReceive()
ওভাররাইড করুন। রিসিভার এবং রিমোট অ্যাকশন নিবন্ধন করতে একটিDisposableEffect
ব্যবহার করুন। প্লেয়ারটি নিষ্পত্তি হয়ে গেলে, রিসিভারটিকে নিবন্ধনমুক্ত করুন।@RequiresApi(Build.VERSION_CODES.O) @Composable fun PlayerBroadcastReceiver(player: Player?) { val isInPipMode = rememberIsInPipMode() if (!isInPipMode || player == null) { // Broadcast receiver is only used if app is in PiP mode and player is non null return } val context = LocalContext.current DisposableEffect(player) { val broadcastReceiver: BroadcastReceiver = object : BroadcastReceiver() { override fun onReceive(context: Context?, intent: Intent?) { if ((intent == null) || (intent.action != ACTION_BROADCAST_CONTROL)) { return } when (intent.getIntExtra(EXTRA_CONTROL_TYPE, 0)) { EXTRA_CONTROL_PAUSE -> player.pause() EXTRA_CONTROL_PLAY -> player.play() } } } ContextCompat.registerReceiver( context, broadcastReceiver, IntentFilter(ACTION_BROADCAST_CONTROL), ContextCompat.RECEIVER_NOT_EXPORTED ) onDispose { context.unregisterReceiver(broadcastReceiver) } } }
- আপনার দূরবর্তী ক্রিয়াগুলির একটি তালিকা
PictureInPictureParams.Builder
এ পাঠান:val context = LocalContext.current val pipModifier = modifier.onGloballyPositioned { layoutCoordinates -> val builder = PictureInPictureParams.Builder() builder.setActions( listOfRemoteActions() ) if (shouldEnterPipMode && player != null && player.videoSize != VideoSize.UNKNOWN) { val sourceRect = layoutCoordinates.boundsInWindow().toAndroidRectF().toRect() builder.setSourceRectHint(sourceRect) builder.setAspectRatio( Rational(player.videoSize.width, player.videoSize.height) ) } if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) { builder.setAutoEnterEnabled(shouldEnterPipMode) } context.findActivity().setPictureInPictureParams(builder.build()) } VideoPlayer(modifier = pipModifier)
পরবর্তী পদক্ষেপ
- কম্পোজ PiP-এর সর্বোত্তম অনুশীলনগুলি কার্যকরভাবে দেখতে Socialite অ্যাপটি দেখুন৷
- আরও তথ্যের জন্য PiP ডিজাইন নির্দেশিকা দেখুন।
আপনি যদি আপনার PiP উইন্ডোতে নিয়ন্ত্রণ (খেলা, বিরতি, ইত্যাদি) যোগ করতে চান, আপনি যোগ করতে চান এমন প্রতিটি নিয়ন্ত্রণের জন্য একটি RemoteAction
তৈরি করুন।
- আপনার সম্প্রচার নিয়ন্ত্রণের জন্য ধ্রুবক যোগ করুন:
// Constant for broadcast receiver const val ACTION_BROADCAST_CONTROL = "broadcast_control" // Intent extras for broadcast controls from Picture-in-Picture mode. const val EXTRA_CONTROL_TYPE = "control_type" const val EXTRA_CONTROL_PLAY = 1 const val EXTRA_CONTROL_PAUSE = 2
- আপনার PiP উইন্ডোতে নিয়ন্ত্রণের জন্য
RemoteActions
এর একটি তালিকা তৈরি করুন। - এরপরে, একটি
BroadcastReceiver
যোগ করুন এবং প্রতিটি বোতামের ক্রিয়া সেট করতেonReceive()
ওভাররাইড করুন। রিসিভার এবং রিমোট অ্যাকশন নিবন্ধন করতে একটিDisposableEffect
ব্যবহার করুন। প্লেয়ারটি নিষ্পত্তি হয়ে গেলে, রিসিভারটিকে নিবন্ধনমুক্ত করুন।@RequiresApi(Build.VERSION_CODES.O) @Composable fun PlayerBroadcastReceiver(player: Player?) { val isInPipMode = rememberIsInPipMode() if (!isInPipMode || player == null) { // Broadcast receiver is only used if app is in PiP mode and player is non null return } val context = LocalContext.current DisposableEffect(player) { val broadcastReceiver: BroadcastReceiver = object : BroadcastReceiver() { override fun onReceive(context: Context?, intent: Intent?) { if ((intent == null) || (intent.action != ACTION_BROADCAST_CONTROL)) { return } when (intent.getIntExtra(EXTRA_CONTROL_TYPE, 0)) { EXTRA_CONTROL_PAUSE -> player.pause() EXTRA_CONTROL_PLAY -> player.play() } } } ContextCompat.registerReceiver( context, broadcastReceiver, IntentFilter(ACTION_BROADCAST_CONTROL), ContextCompat.RECEIVER_NOT_EXPORTED ) onDispose { context.unregisterReceiver(broadcastReceiver) } } }
- আপনার দূরবর্তী ক্রিয়াগুলির একটি তালিকা
PictureInPictureParams.Builder
এ পাঠান:val context = LocalContext.current val pipModifier = modifier.onGloballyPositioned { layoutCoordinates -> val builder = PictureInPictureParams.Builder() builder.setActions( listOfRemoteActions() ) if (shouldEnterPipMode && player != null && player.videoSize != VideoSize.UNKNOWN) { val sourceRect = layoutCoordinates.boundsInWindow().toAndroidRectF().toRect() builder.setSourceRectHint(sourceRect) builder.setAspectRatio( Rational(player.videoSize.width, player.videoSize.height) ) } if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) { builder.setAutoEnterEnabled(shouldEnterPipMode) } context.findActivity().setPictureInPictureParams(builder.build()) } VideoPlayer(modifier = pipModifier)
পরবর্তী পদক্ষেপ
- কম্পোজ PiP-এর সর্বোত্তম অনুশীলনগুলি কার্যকরভাবে দেখতে Socialite অ্যাপটি দেখুন৷
- আরও তথ্যের জন্য PiP ডিজাইন নির্দেশিকা দেখুন।