الوضع في قائمة الانتظار

يوفّر إطار عمل Google Cast فئات قائمة المحتوى التالي التي تتيح إنشاء القوائم. من MediaQueueItem التي يمكن إنشاؤها من مثيلات MediaInfo، مثل الفيديو أو الصوت عمليات البث، لتشغيلها بالتتابع على جهاز الاستقبال. قائمة المحتوى هذه التي تضم عناصر المحتوى وتعديلها وإعادة ترتيبها وتحديثها وما إلى ذلك.

تحتفظ حزمة تطوير البرامج (SDK) للمستلم بقائمة الانتظار وتستجيب للعمليات في قائمة الانتظار طالما أن قائمة الانتظار تتضمن عنصرًا واحدًا على الأقل نشطًا حاليًا (يتم تشغيل مؤقتًا). يمكن للمرسلين الانضمام إلى الجلسة وإضافة عناصر إلى "قائمة المحتوى التالي". المستلِم الاحتفاظ بجلسة عناصر قائمة الانتظار إلى أن يكتمل تشغيل العنصر الأخير أو يوقف المرسل التشغيل وينهي الجلسة، أو إلى أن يوقف المرسل تحمّل قائمة انتظار جديدة على جهاز المُستلِم. لا يحافظ المستلِم على معلومات حول قوائم الانتظار التي تم إنهاؤها بشكل تلقائي. عندما يصبح العنصر الأخير في قائمة الانتظار وتنتهي جلسة الوسائط وتختفي قائمة الانتظار.

إنشاء عناصر قائمة انتظار الوسائط وتحميلها

يتم تمثيل عنصر قائمة الوسائط في "إطار عمل البث" على شكل MediaQueueItem مثال. عند إنشاء عنصر قائمة انتظار وسائط، إذا كنت تستخدم مشغل الوسائط "مكتبة" ذات المحتوى التكيُّفي، يمكنك ضبط وقت التحميل المسبق بحيث يمكن للمشغل بدء التخزين المؤقت لعنصر قائمة انتظار الوسائط قبل ينتهي تشغيل العنصر الذي ينتظره في قائمة الانتظار. ضبط التشغيل التلقائي للعنصر على "صحيح" تسمح للمستلم بتشغيلها تلقائيًا. على سبيل المثال: يمكنك استخدام نمط أداة إنشاء لإنشاء عنصر قائمة انتظار الوسائط على النحو التالي:

Kotlin
val queueItem: MediaQueueItem = MediaQueueItem.Builder(mediaInfo)
    .setAutoplay(true)
    .setPreloadTime(20.0)
    .build()
Java
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

كما توفّر حزمة تطوير البرامج (SDK) لتكنولوجيا Cast فئتين من الأدوات المساعدة لإنشاء واجهة مستخدم من أجل وضعها في قائمة الانتظار.

على سبيل المثال، لإنشاء RecyclerView باستخدام MediaQueueRecyclerViewAdapter:

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
}
Java
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 التي تختار العنصر التالي)، وإزالة العناصر من قائمة الانتظار، وإعادة ترتيب العناصر في قائمة الانتظار.