Sıra oluşturuluyor

Cast çerçevesi, alıcıda sıralı olarak oynatılmak için video veya ses akışı gibi MediaInfo örneklerinden derlenebilen MediaQueueItem örneklerinden oluşan listeleri destekleyen sıra oluşturma sınıfları sağlar. İçerik öğeleri sırası düzenlenebilir, yeniden sıralanabilir, güncellenebilir ve bu şekilde devam edebilir.

Alıcı SDK'sı sırayı korur ve sırada en az bir öğe etkin (oynatılıyor veya duraklatılmış) olduğu sürece sıradaki işlemlere yanıt verir. Gönderenler oturuma katılabilir ve sıraya öğe ekleyebilir. Alıcı, son öğe oynatma tamamlanana veya gönderen kişi oynatmayı durdurana ve oturumu sonlandırana ya da gönderen alıcıya yeni bir sıra yükleyene kadar sıra öğeleri için bir oturum gerçekleştirir. Alıcı, sonlandırılan sıralar hakkında varsayılan olarak herhangi bir bilgi saklamaz. Sıradaki son öğe bittikten sonra medya oturumu sona erer ve sıra kaybolur.

Medya sırası öğeleri oluştur ve yükle

Bir medya sırası öğesi, Cast çerçevesinde bir MediaQueueItem örneği olarak temsil edilir. Bir medya sırası öğesi oluşturduğunuzda, uyarlanabilir içerikle Medya Oynatıcı Kitaplığı kullanıyorsanız ön yükleme süresini, oynatıcının medya sırası öğesinin önündeki öğenin oynatılması tamamlanmadan önce medya kuyruğu öğesini arabelleğe almaya başlamasını ayarlayabilirsiniz. Öğenin autoplay özelliğini true olarak ayarlamak, 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();

RemoteMediaClient özelliğinin uygun queueLoad yöntemini kullanarak sıradaki bir medya sırası öğeleri dizisi yükleyin.

Medya sırası durum güncellemelerini al

Alıcı bir medya sırası öğesini yüklediğinde, öğeye benzersiz bir kimlik atar. Bu kimlik oturum süresince (ve sıranın ömrü boyunca) kalır. Uygulamanız, hangi öğenin o anda yüklü (oynatılmıyor olabilir), yükleniyor veya önceden yüklenmiş olarak sıra durumunu öğrenebilir. MediaStatus sınıfı şu durum bilgilerini sağlar:

  • getPreloadedItemId() yöntemi: Sonraki öğe önceden yüklenmişse önceden yüklenmiş öğe kimliğini döndürür.
  • getLoadingItemId() yöntemi - Alıcıya yüklenmekte olan (ancak sırada etkin olmayan) öğenin öğe kimliğini döndürür.
  • getCurrentItemId() method - Medya durumu değişikliği yapıldığı sırada sırada etkin olan öğenin (oynatmıyor olabilir) öğe kimliğini döndürür.
  • getQueueItems() (Kullanımdan kaldırıldı, bunun yerine MediaQueue kullan) yöntem - MediaQueueItem örnek listesini değiştirilemez bir liste olarak döndürür.

Uygulamanız, MediaQueue sınıfını kullanarak öğe listesini de alabilir. Sınıf, medya sırasının seyrek veri modelidir. Alıcı ile otomatik olarak senkronize edilen öğe kimliklerinin listesini sırada tutar. MediaQueue, sıra çok uzun olduğunda çok fazla bellek alacağı için MediaQueueItem öğelerinin tamamını saklamaz. Bunun yerine, öğeleri istek üzerine getirir ve son erişilen öğelerin LruCache kadarını tutar. Medya sırasına erişmek için şu yöntemleri kullanabilirsiniz:

  • getItemIds() method - Tüm öğe kimliklerinin listesini sırayla döndürür.
  • getItemAtIndex() yöntemi: Belirli bir dizinde önbelleğe alınan öğeyi döndürür. Öğe önbelleğe alınmamışsa MediaQueue, null değerini döndürür ve öğeyi getirmeyi planlar. Öğe getirildiğinde MediaQueue.Callback#itemsUpdatedAtIndexes() çağrılır ve getItemAtIndex() öğesine aynı kimlikle tekrar çağrıldığında öğe döndürülür.
  • Kullanıcı sıra kullanıcı arayüzünü en üste veya en alta 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 uygulamalarını uygulayarak sıradaki değişiklikleri dinleyebilir.

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

Örneğin, MediaQueueRecyclerViewAdapter kullanarak 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 işlem yapmak için RemoteMediaClient sınıfının sıra yöntemlerini kullanın. Böylece, bir dizi öğeyi yeni bir sıraya yükleyebilir, mevcut bir sıraya öğe ekleyebilir, sıradaki öğelerin özelliklerini güncelleyebilir, bir öğeyi sırada ileri veya geri atlayabilir, sıranın özelliklerini ayarlayabilir (örneğin, sonraki öğeyi seçen repeatMode algoritmasını değiştirebilir), sıradan öğeleri kaldırabilir ve sıradaki öğeleri yeniden sıralayabilirsiniz.