Sıra oluşturuluyor

Cast çerçevesi, listelerin oluşturulmasını destekleyen sıraya alma sınıfları sağlar / MediaQueueItem video veya ses gibi MediaInfo örneklerinden oluşturulabilen örnekler alıcıda sıralı olarak oynatılır. Bu içerik öğeleri sırası düzenlenebilir, yeniden sıralanabilir, güncellenebilir ve benzer işlemler yapılabilir.

Alıcı SDK, sırayı korur ve sırada en az bir öğe etkin olduğu sürece sırada durmaya devam eder (oynatma veya duraklatıldı). Gönderenler oturuma katılabilir ve sıraya öğe ekleyebilir. Alıcı son öğe oynatılıncaya veya çalmayı tamamlayana kadar sıradaki öğeler için bir oturum tutar Gönderen, oynatmayı durdurup oturumu sonlandırana kadar veya gönderenden biri Alıcıya yeni bir sıra yükler. Alıcıda, varsayılan olarak sonlandırılmış sıralarla ilgili bilgilere erişebilirsiniz. Sıradaki son öğe olduğunda medya oturumu sona erer ve sıra kaybolur.

Medya sırası öğeleri oluşturma ve yükleme

Bir medya sırası öğesi, Cast çerçevesinde şu şekilde temsil edilir: MediaQueueItem kullanır. Medya Oynatıcı'yı kullanıyorsanız bir medya sırası öğesi oluşturduğunuzda Kitaplık'ı kullanıyorsanız, bu ayarı değiştirebilirsiniz. oynatıcının medya sırası öğesini önceden arabelleğe almaya başlayabilmesi için ve sırada önündeki öğenin oynatılması sona erer. Öğenin otomatik oynatmasını ayarlama özelliğinin true olarak ayarlanması, alıcının içeriği otomatik olarak oynatmasına izin verir. Örneğin, medya sırası öğenizi aşağıdaki gibi oluşturmak için bir oluşturucu kalıbı kullanabilirsiniz:

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();

Uygun queueLoad yöntemi olarak RemoteMediaClient kullanılabilir.

Medya sırası durum güncellemelerini al

Alıcı bir medya sırası öğesi yüklediğinde öğeye benzersiz bir kimlik atar oturum boyunca (ve sıranın ömrü boyunca) devam eder. Sizin sıranın hangi öğenin yüklendiğine bakarak sıranın durumunu öğrenebilir (oynamıyor olabilir), yükleniyor veya önceden yüklenmiş olabilir. İlgili içeriği oluşturmak için kullanılan MediaStatus sınıfı şu durum bilgilerini sağlar:

  • getPreloadedItemId() yöntem - Sonraki öğe önceden yüklenmişse önceden yüklenmiş öğe kimliğini döndürür.
  • getLoadingItemId() method - Şu anda yüklenmekte olan (ancak yüklenmeyen) öğenin öğe kimliğini döndürür sırada etkin) bulunur.
  • getCurrentItemId() yöntem - Sırada etkin olan öğenin öğe kimliğini döndürür ( oynatılamıyordur).
  • getQueueItems() (Kullanımdan kaldırıldı, bunun yerine MediaQueue yöntemini kullanın) yöntem - Şunun listesini döndürür: Değiştirilemez liste olarak MediaQueueItem örnek.

Uygulamanız, öğelerin listesini şurayı kullanarak da alabilir: MediaQueue sınıfını kullanır. Sınıf, medya sırasının seyrek veri modelidir. İş Listesi’ndeki alıcıyla otomatik olarak senkronize edilen öğe kimlikleridir. MediaQueue, tüm MediaQueueItem çünkü sıra çok uzun olduğunda çok fazla bellek gerekecek. Bunun yerine öğeleri isteğe bağlı olarak getirir ve LruCache olarak son erişilen öğeler için ara. Medya sırasına erişmek için şu yöntemleri kullanabilirsiniz:

  • getItemIds() yöntem - Tüm öğe kimliklerinin listesini sırayla döndürür.
  • getItemAtIndex() yöntem - Belirli bir dizindeki önbelleğe alınmış öğeyi döndürür. Öğe önbelleğe alınmamışsa MediaQueue, null dosyasını iade edecek ve öğeyi getirmeyi planlayacak. Öğe getirildiğinde MediaQueue.Callback#itemsUpdatedAtIndexes() telefon edilecek ve getItemAtIndex() aynı kimlikle tekrar çağrılacaktır iade edebilirsiniz.
  • Kullanıcı, sıra kullanıcı arayüzünü en üste veya en alta kaydırdığında fetchMoteItemsRelativeToIndex() kullanılır. ve uygulamanız buluttan daha fazla öğe getirmek istiyor.

Bu yöntemleri diğer medya durumu yöntemleriyle birlikte kullanarak sıranın durumu ve sıradaki öğeler hakkında Ek olarak alıcıdan medya durumu güncellemeleri alırsanız, uygulamanız satır içi metin RemoteMediaClient.Callback ve MediaQueue.Callback.

Ayrıca Cast SDK'sı, sıraya ekleme için kullanıcı arayüzü oluşturmak amacıyla iki yardımcı program sınıfı sağlar.

Örneğin, MediaQueueRecyclerViewAdapter ile bir RecyclerView oluşturmak için:

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);
}

Sırayı düzenle

Sıradaki öğeler üzerinde çalışmak için RemoteMediaClient sınıfını kullanır. Bunlar, bir dizi öğeyi yeni bir sıraya yüklemenizi, yeni bir sıraya öğe eklemenizi, mevcut bir sırayı, sıradaki öğelerin özelliklerini güncellemek, bir öğe oluşturmak ileri veya geri atlama, sıranın kendisinin özelliklerini ayarlama (örneğin, sonraki öğeyi seçen repeatMode algoritmasını değiştirin), öğeleri sıradan kaldırabilir ve sıradaki öğeleri yeniden sıralayabilirsiniz.