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:
val queueItem: MediaQueueItem = MediaQueueItem.Builder(mediaInfo) .setAutoplay(true) .setPreloadTime(20.0) .build()
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 yerineMediaQueue
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ğindeMediaQueue.Callback#itemsUpdatedAtIndexes()
çağrılır ve aynı kimliklegetItemAtIndex()
'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.
MediaQueueRecyclerViewAdapter
,RecyclerView
verilerini yedeklemek içinMediaQueueListAdapter
,ListAdapter
verilerini yedeklemek için.
Örneğin, MediaQueueRecyclerViewAdapter
kullanarak RecyclerView
oluşturmak için:
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 }
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.