अगर आपको अपनी पिन किए गए वीडियो की विंडो में कंट्रोल (चलाएं, रोकें वगैरह) जोड़ने हैं, तो हर उस कंट्रोल के लिए एक 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
- अपनी पिन किए गए वीडियो की विंडो में मौजूद कंट्रोल के लिए,
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)
अगले चरण
- Compose PiP को इस्तेमाल करने के सबसे सही तरीके जानने के लिए, Socialite ऐप्लिकेशन देखें.
- ज़्यादा जानकारी के लिए, पीआईपी डिज़ाइन से जुड़े दिशा-निर्देश देखें.