Sıra oluşturuluyor

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

Alıcı SDK'sı, sırada en az bir öğe etkin olduğu (oynatıldığı veya duraklatıldığı) sürece sırayı korur ve sıradaki işlemlere yanıt verir. Gönderenler oturuma katılabilir ve sıraya öğe ekleyebilir. Alıcı, son öğe oynatmayı tamamlayana veya gönderen oynatmayı durdurup oturumu sonlandırana ya da gönderen alıcıya yeni bir sıra yükleyene kadar sıra öğeleri için oturum sürdürür. Alıcı, varsayılan olarak sonlandırılan sıralarla ilgili herhangi bir bilgi saklamaz. Sıradaki son öğe tamamlandığında medya oturumu sona erer 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 ön yükleme süresini, oynatıcının sıradaki kendisinden önceki öğe oynatmayı bitirmeden önce medya sırası öğesini arabelleğe almaya başlayacağı şekilde ayarlayabilirsiniz. Öğenin otomatik oynatma özelliğini true olarak ayarlamak, alıcının öğeyi otomatik olarak oynatmasına olanak tanır. Ö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'ın uygun queueLoad yöntemini kullanarak bir medya sırası öğesi dizisi sıraya yükleyin.

Medya kuyruğu durumuyla ilgili güncellemeler alma

Alıcı, bir medya sırası öğesini yüklediğinde öğeye oturum süresi boyunca (ve sıranın ömrü boyunca) geçerli olan benzersiz bir kimlik atar. Uygulamanız, şu anda hangi öğenin yüklü (çalmıyor olabilir) veya önceden yüklenmiş olduğu açısından sıranın durumunu öğrenebilir. MediaStatus sınıfı şu durum bilgilerini sağlar:

  • getPreloadedItemId() method: Sonraki öğe önceden yüklenmişse önceden yüklenmiş öğe kimliğini döndürür.
  • getLoadingItemId() yöntemi: Alıcının şu anda yüklemekte olduğu (ancak sırada etkin olmayan) öğenin öğe kimliğini döndürür.
  • getCurrentItemId() yöntemi: Medya durumu değişikliğinin gerçekleştiği sırada sırada etkin olan öğenin (oynatma sırasında olmayabilir) öğe kimliğini döndürür.
  • getQueueItems() (Kullanımdan kaldırıldı, bunun yerine MediaQueue kullanın) yöntemi: MediaQueueItem örneklerinin listesini değiştirilemeyen bir liste olarak döndürür.

Uygulamanız, MediaQueue sınıfını kullanarak da öğelerin listesini alabilir. Sınıf, medya kuyruğunun seyrek veri modelidir. Sırayla oynatılacak öğe kimliklerinin listesini tutar ve bu liste alıcıyla otomatik olarak senkronize edilir. MediaQueue, sıra çok uzun olduğunda çok fazla bellek kullanacağı için tüm MediaQueueItem öğelerini saklamaz. Bunun yerine, öğeleri gerektiğinde getirir ve yakın zamanda erişilen öğelerin LruCache'unu tutar. Medya sırasına erişmek için aşağıdaki yöntemleri kullanabilirsiniz:

  • getItemIds() yöntemi: Tüm öğe kimliklerinin sıralı listesini döndürür.
  • getItemAtIndex() method: Belirli bir dizindeki önbelleğe alınan öğeyi döndürür. Öğe önbelleğe alınmadıysa 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.
  • fetchMoteItemsRelativeToIndex(), kullanıcı sıra kullanıcı arayüzünü yukarı veya aşağı kaydırdığında ve uygulamanız buluttan daha fazla öğe almak istediğinde 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. Uygulamanız, alıcıdan gelen medya durumu güncellemelerine ek olarak RemoteMediaClient.Callback ve MediaQueue.Callback uygulayarak sıradaki değişiklikleri dinleyebilir.

Ayrıca Cast SDK'sı, sıraya ekleme için kullanıcı arayüzü oluşturmak üzere iki yardımcı program 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ırada yer alan öğeleri düzenleme

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