Sıra oluşturuluyor

Cast çerçevesi, alıcıda sıralı olarak oynatılmak üzere video veya ses akışları gibi MediaInfo örneklerinden oluşturulabilen, MediaQueueItem örneği listelerinin oluşturulmasını destekleyen sıraya alma sınıfları sağlar. İçerik öğelerinden oluşan bu sıra düzenlenebilir, yeniden sıralanabilir, güncellenebilir ve bu şekilde diğer işlemleri yapabilir.

Alıcı SDK'sı, sırayı korur ve sırada en az bir öğe etkin (oynatılmış 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 çalmayı tamamlayana veya gönderen çalmayı durdurup oturumu sonlandırana ya da gönderen alıcıya yeni bir sıra yükleyene kadar sıradaki öğeler için bir oturum sürdürür. Alıcı, varsayılan olarak sonlandırılan sıralarla ilgili herhangi bir bilgiyi saklamaz. Sıradaki son öğe bittiğinde, medya oturumu sonlandırılır ve sıra kaybolur.

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

Medya sırası öğesi, Cast çerçevesinde bir MediaQueueItem örneği olarak temsil edilir. Bir medya sırası öğesi oluşturduğunuzda, Medya Oynatıcı Kitaplığı'nı uyarlanabilir içerikle kullanıyorsanız önceden yükleme süresini ayarlayabilirsiniz. Böylece, oynatıcı, sırada önündeki öğenin oynatılması tamamlanmadan önce medya sırası öğesini arabelleğe almaya başlayabilir. Öğenin otomatik oynatma özelliğinin "true" (doğru) değerine ayarlanması, alıcının öğeyi 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 öğesinin uygun queueLoad yöntemini kullanarak sıraya bir medya sırası öğesi dizisi yükleyin.

Medya sırası durum güncellemelerini al

Alıcı bir medya sırası öğesi yüklediğinde öğeye benzersiz bir kimlik atar. Bu kimlik, oturum boyunca (ve sıranın ömrü boyunca) devam eder. Uygulamanız, sıranın durumunu hangi öğenin şu anda yüklü (oynatmıyor olabilir), yüklendiği veya önceden yüklendiği açısından öğ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() method - 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 sırasında sırada etkin olan (oynatılmıyor olabilir) öğenin öğe kimliğini döndürür.
  • getQueueItems() (Kullanımdan kaldırıldı, bunun yerine MediaQueue yöntemini kullanın) yöntem - MediaQueueItem örneğinin 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. Öğe kimliklerinin listesini sırada tutar ve alıcı ile otomatik olarak senkronize edilir. Sıra çok uzun olduğunda çok fazla bellek harcanacağı için MediaQueue, MediaQueueItem öğesinin tamamını saklamaz. Bunun yerine, öğeleri isteğe bağlı olarak getirir ve yakın zamanda 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 dizindeki önbelleğe alınmış öğeyi döndürür. Öğe önbelleğe alınmazsa MediaQueue, null değerini döndürür ve öğeyi getirmeyi planlar. Öğe getirildiğinde MediaQueue.Callback#itemsUpdatedAtIndexes() çağrılır ve getItemAtIndex() 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 özelliklerini uygulayarak sıradaki değişiklikleri dinleyebilir.

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ın sıra yöntemlerini kullanın. Bu seçenekler, bir öğe dizisini yeni bir sıraya yüklemenize, mevcut bir sıraya öğe eklemenize, kuyruktaki öğelerin özelliklerini güncellemenize, bir öğenin sırada ileri veya geri gitmesini sağlamanıza, sıranın kendisinin özelliklerini ayarlamanıza (örneğin, sonraki öğeyi seçen repeatMode algoritmasını değiştirmenize, öğeleri sıradan kaldırmanıza ve sıradaki öğeleri yeniden düzenlemenize) olanak tanır.