सूची बनाना

कास्ट फ़्रेमवर्क से, सूची बनाने वाली क्लास की सुविधा मिलती है. इन क्लास की मदद से सूचियां बनाई जा सकती हैं MediaQueueItem में से इंस्टेंस, जिन्हें वीडियो या ऑडियो जैसे MediaInfo इंस्टेंस से बनाया जा सकता है स्ट्रीम, रिसीवर पर क्रम से चलाने के लिए. कॉन्टेंट आइटम की यह सूची बदलाव किया जा सकता है, उनका क्रम बदला जा सकता है, और उन्हें अपडेट किया जा सकता है.

पैसे पाने वाले का SDK टूल, सूची बनाए रखता है और सूची में कम से कम एक आइटम तब तक चालू रहेगा, जब तक सूची में कम से कम एक आइटम चालू है (चलाया जा रहा है या रोका गया). पैसे भेजने वाले लोग, सेशन में शामिल हो सकते हैं और सूची में आइटम जोड़ सकते हैं. पाने वाला सूची में मौजूद आइटम के लिए तब तक सेशन बनाए रखता है, जब तक आखिरी आइटम प्लेबैक पूरा नहीं कर लेता या जब भेजने वाला व्यक्ति वीडियो चलाना बंद कर देता है और सेशन को खत्म कर देता है, तब तक रिसीवर पर एक नई सूची लोड करता है. पाने वाले किसी भी समय, डिफ़ॉल्ट रूप से, खत्म हो चुकी सूचियों के बारे में जानकारी. सूची में आखिरी आइटम के बाद मीडिया सेशन खत्म होने के बाद, सूची भी अपने-आप खत्म हो जाती है.

मीडिया सूची आइटम बनाएं और लोड करें

मीडिया क्यू आइटम को Cast फ़्रेमवर्क में इस तरह दिखाया जाता है: MediaQueueItem इंस्टेंस. अगर मीडिया प्लेयर (मीडिया प्लेयर) का इस्तेमाल किया जा रहा है) पर, मीडिया सूची में आइटम बनाते समय लाइब्रेरी के लिए: पहले से लोड होने में लगने वाला समय ताकि प्लेयर मीडिया सूची में मौजूद आइटम को पहले बफ़र कर सके सूची में उससे आगे मौजूद आइटम ने उसे पूरा चलाया. आइटम के अपने-आप चलने की सुविधा सेट करना सही एट्रिब्यूट का इस्तेमाल करके, रिसीवर इसे अपने-आप चला सकता है. उदाहरण के लिए, बिल्डर पैटर्न का इस्तेमाल करके, अपना मीडिया क्यू आइटम इस तरह बनाया जा सकता है:

Kotlin
val queueItem: MediaQueueItem = MediaQueueItem.Builder(mediaInfo)
    .setAutoplay(true)
    .setPreloadTime(20.0)
    .build()
जावा
MediaQueueItem queueItem = new MediaQueueItem.Builder(mediaInfo)
  .setAutoplay(true)
  .setPreloadTime(20)
  .build();

सूची में मौजूद मीडिया की सूची में मौजूद अलग-अलग आइटम के कलेक्शन को लोड करने के लिए, सही विकल्प का इस्तेमाल करें queueLoad RemoteMediaClient का तरीका.

मीडिया सूची से जुड़े अपडेट पाएं

जब कॉन्टेंट पाने वाला व्यक्ति मीडिया सूची में मौजूद किसी आइटम को लोड करता है, तब वह आइटम को एक यूनीक आईडी असाइन करता है जो सेशन के कुल समय (और सूची की समयसीमा) तक बनी रहती है. आपका ऐप्लिकेशन फ़िलहाल लोड हो रहे आइटम के हिसाब से, सूची की स्थिति जान सकता है (ऐसा हो सकता है कि वह चल न रहा हो), लोड हो रहा हो या पहले से लोड हो चुका हो. कॉन्टेंट बनाने MediaStatus क्लास में इस स्थिति की जानकारी मिलती है:

  • getPreloadedItemId() तरीका - अगर अगला आइटम पहले से लोड किया गया है, तो पहले से लोड किया गया आइटम आईडी दिखाता है.
  • getLoadingItemId() विधि - उस आइटम का आइटम आईडी देता है जो वर्तमान में लोड हो रहा है (लेकिन सूची में है).
  • getCurrentItemId() विधि - उस आइटम की आइटम आईडी देता है जो सूची में सक्रिय था (यह ऑडियो या वीडियो चल नहीं रहा होगा.
  • getQueueItems() (अब काम नहीं करता, इसके बजाय MediaQueue का इस्तेमाल करें) तरीका - इसकी सूची दिखाता है MediaQueueItem इंस्टेंस, बदलाव न की जा सकने वाली सूची के रूप में.

आपका ऐप्लिकेशन इसका इस्तेमाल करके भी आइटम की सूची पा सकता है: MediaQueue क्लास. क्लास, मीडिया सूची का खास डेटा मॉडल है. यह आपकी सूची सूची में मौजूद आइटम आईडी, जो पाने वाले के साथ अपने-आप सिंक हो जाते हैं. MediaQueue में MediaQueueItem क्योंकि क़तार बहुत लंबी होने पर इसमें बहुत ज़्यादा मेमोरी लग जाएगी. इसके बजाय, मांग पर आइटम फ़ेच करता है और करीब LruCache रहता है हाल ही में ऐक्सेस किए गए आइटम. मीडिया सूची को ऐक्सेस करने के लिए, इन तरीकों का इस्तेमाल किया जा सकता है:

  • getItemIds() तरीका - क्रम में मौजूद सभी आइटम आईडी की सूची दिखाता है.
  • getItemAtIndex() तरीका - किसी दिए गए इंडेक्स में, कैश मेमोरी में सेव किए गए आइटम को दिखाता है. अगर आइटम को कैश मेमोरी में सेव नहीं किया जाता है, MediaQueue, null लौटाएगा और आइटम को फ़ेच करने के लिए शेड्यूल करेगा. जब आइटम फ़ेच किया गया, MediaQueue.Callback#itemsUpdatedAtIndexes() कॉल किया जाएगा और उसी आईडी से getItemAtIndex() को फिर से कॉल किया जाएगा आइटम लौटाना.
  • fetchMoteItemsRelativeToIndex() का इस्तेमाल तब किया जाता है, जब उपयोगकर्ता सूची के यूज़र इंटरफ़ेस (यूआई) को सबसे ऊपर या सबसे नीचे तक स्क्रोल करता है, और आपका ऐप्लिकेशन क्लाउड से और आइटम फ़ेच करना चाहता है.

अपने सूची में मौजूद आइटम और सूची की स्थिति के बारे में जानकारी देने वाला ऐप्लिकेशन. इसके अलावा रिसीवर से मीडिया की स्थिति अपडेट होती है, आपका ऐप्लिकेशन लागू करने की सूची RemoteMediaClient.Callback और MediaQueue.Callback.

साथ ही, Cast SDK में सूची में रखने के लिए यूआई बनाने के लिए दो यूटिलिटी क्लास दी जाती हैं.

उदाहरण के लिए, MediaQueueRecyclerViewAdapter का इस्तेमाल करके RecyclerView बनाने के लिए:

Kotlin
class MyRecyclerViewAdapter(mediaQueue: MediaQueue?) :
    MediaQueueRecyclerViewAdapter<MyViewHolder?>(mediaQueue) {
    override fun onBindViewHolder(holder: MyViewHolder, position: Int) {
        val item = getItem(position)

        // Update the view using `item`.
        ...
    }
}

class MyViewHolder : RecyclerView.ViewHolder {
    // Implement your own ViewHolder.
    ...
}

fun someMethod() {
    val adapter = MyRecyclerViewAdapter(
        mCastSession.remoteMediaClient.getMediaQueue())
    val recyclerView =
        activity.findViewById(R.id.my_recycler_view_id) as RecyclerView
    recyclerView.adapter = adapter
}
जावा
public class MyRecyclerViewAdapter extends MediaQueueRecyclerViewAdapter<MyViewHolder> {
    public MyRecyclerViewAdapter(MediaQueue mediaQueue) {
        super(mediaQueue);
    }

    @Override
    public void onBindViewHolder(MyViewHolder holder, int position) {
      MediaQueueItem item = getItem(position);

      // Update the view using `item`.
      ...
    }
}

public class MyViewHolder implements RecyclerView.ViewHolder {
  // Implement your own ViewHolder.
  ...
}

public void someMethod() {
    RecyclerView.Adapter adapter = new MyRecyclerViewAdapter(
        mCastSession.getRemoteMediaClient().getMediaQueue());
    RecyclerView recyclerView =
        (RecyclerView) getActivity().findViewById(R.id.my_recycler_view_id);
    recyclerView.setAdapter(adapter);
}

सूची में बदलाव करें

सूची में मौजूद आइटम पर काम करने के लिए, RemoteMediaClient क्लास. इनसे आपको आइटम के कलेक्शन को नई सूची में लोड करने और आइटम को सूची में मौजूदा सूची, सूची में मौजूद आइटम की प्रॉपर्टी अपडेट करें, आइटम बनाएं सूची में आगे या पीछे जाएं, पंक्ति की सभी प्रॉपर्टी को सेट करें (उदाहरण के लिए, अगला आइटम चुनने वाले repeatMode एल्गोरिदम को बदलें), सूची से आइटम हटाएं और सूची के आइटम का क्रम बदलें.