Sıra oluşturuluyor

Cast çerçevesi, alıcıda sırayla oynatılmak üzere video veya ses akışları gibi MediaInfo örneklerinden oluşturulabilen MediaQueueItem örneklerinin listelerinin oluşturulmasını destekleyen sıralama sınıfları sağlar. Bu içerik öğeleri sırası düzenlenebilir, yeniden sıralanabilir, güncellenebilir vb.

Receiver SDK, kuyrukta şu anda etkin (oynatılan veya duraklatılan) en az bir öğe olduğu sürece kuyruğu korur ve kuyruktaki işlemlere yanıt verir. Gönderenler oturuma katılabilir ve sıraya öğe ekleyebilir. Alıcı, son öğe oynatmayı tamamlayana, gönderen oynatmayı durdurup oturumu sonlandırana veya gönderen alıcıya yeni bir sıra yükleyene kadar sıra öğeleri için bir oturum sürdürür. Alıcı, varsayılan olarak sonlandırılan kuyruklarla ilgili herhangi bir bilgi tutmaz. Sıradaki son öğe tamamlandığında medya oturumu sona erer ve sıra kaybolur.

Medya kuyruğu öğeleri oluşturma ve yükleme

Medya kuyruğu öğesi, Cast çerçevesinde MediaQueueItem örneği olarak gösterilir. Uyarlanabilir içerikle birlikte Media Player Kitaplığı'nı kullanıyorsanız medya sırası öğesi oluşturduğunuzda oynatıcının, sıradaki öğe oynatmayı bitirmeden önce medya sırası öğesini arabelleğe almaya başlaması için önceden yükleme süresini ayarlayabilirsiniz. Öğenin otomatik oynatma özelliğini doğru olarak ayarlarsanız alıcı, öğeyi otomatik olarak oynatabilir. Örneğin, medya sırası öğenizi oluşturmak için aşağıdaki gibi 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();

RemoteMediaClient yönteminin uygun queueLoad yöntemini kullanarak kuyruğa bir dizi medya kuyruğu öğesi yükleyin.

Medya sırası durum güncellemelerini alma

Alıcı bir medya sırası öğesini yüklediğinde, öğeye oturum süresince (ve sıranın ömrü boyunca) geçerli olan benzersiz bir kimlik atar. Uygulamanız, sıranın durumunu (hangi öğenin şu anda yüklendiği, yüklendiği veya önceden yüklendiği) öğrenebilir. Yüklenen öğe çalınmıyor olabilir. MediaStatus sınıfı şu durum bilgilerini sağlar:

  • getPreloadedItemId() method - Sonraki öğe önceden yüklenmişse önceden yüklenen öğe kimliğini döndürür.
  • getLoadingItemId() method: Alıcıda şu anda yüklenen (ancak kuyrukta etkin olmayan) öğenin öğe kimliğini döndürür.
  • getCurrentItemId() method: Medya durumu değişikliği gerçekleştiğinde kuyrukta etkin olan öğenin öğe kimliğini döndürür (çalınmıyor olabilir).
  • getQueueItems() (Kullanımdan kaldırıldı, bunun yerine MediaQueue kullanın) yöntemi: MediaQueueItem örneklerinin listesini değiştirilemez bir liste olarak döndürür.

Uygulamanız, öğe listesini MediaQueue sınıfını kullanarak da alabilir. Sınıf, medya sırasının seyrek veri modelidir. Kuyruktaki öğe kimliklerinin listesini tutar. Bu liste, alıcıyla otomatik olarak senkronize edilir. MediaQueue, kuyruk çok uzun olduğunda çok fazla bellek kullanacağı için tüm MediaQueueItem öğelerini saklamaz. Bunun yerine, öğeleri isteğe bağlı olarak getirir ve son erişilen öğelerin LruCache tutar. Medya sırasına erişmek için aşağıdaki yöntemleri kullanabilirsiniz:

  • getItemIds() yöntemi: Siparişteki tüm öğe kimliklerinin listesini döndürür.
  • getItemAtIndex() method - Returns the cached item at a given index. Öğe önbelleğe alınmamışsa, MediaQueue null değerini döndürür ve öğeyi getirmek için planlama yapar. Öğe getirildiğinde MediaQueue.Callback#itemsUpdatedAtIndexes() çağrılır ve aynı kimlikle getItemAtIndex()'nin tekrar çağrılması öğeyi döndürür.
  • Kullanıcı, kuyruk kullanıcı arayüzünü yukarı veya aşağı kaydırdığında ve uygulamanız buluttan daha fazla öğe getirmek istediğinde fetchMoteItemsRelativeToIndex() kullanılır.

Uygulamanızı sıranın durumu ve sıradaki öğeler hakkında bilgilendirmek için bu yöntemleri diğer medya durumu yöntemleriyle birlikte kullanın. Alıcıdan gelen medya durumu güncellemelerine ek olarak, uygulamanız RemoteMediaClient.Callback ve MediaQueue.Callback'ı uygulayarak kuyrukta yapılan değişiklikleri dinleyebilir.

Ayrıca Cast SDK, sıralama için kullanıcı arayüzü oluşturmak üzere iki yardımcı sınıf sağlar.

Örneğin, MediaQueueRecyclerViewAdapter kullanarak 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üzenleme

Kuyruktaki öğeler üzerinde işlem yapmak için RemoteMediaClient sınıfının kuyruk yöntemlerini kullanın. Bu işlevler, bir öğe dizisini yeni bir sıraya yüklemenize, öğeleri mevcut bir sıraya eklemenize, sıradaki öğelerin özelliklerini güncellemenize, bir öğenin sırada ileri veya geri gitmesini sağlamanıza, sıranın özelliklerini ayarlamanıza (örneğin, sonraki öğeyi seçen repeatMode algoritmasını değiştirme), öğeleri sıradan kaldırmanıza ve sıradaki öğeleri yeniden sıralamanıza olanak tanır.