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:
val queueItem: MediaQueueItem = MediaQueueItem.Builder(mediaInfo) .setAutoplay(true) .setPreloadTime(20.0) .build()
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 yerineMediaQueue
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ınmazsaMediaQueue
,null
değerini döndürür ve öğeyi getirmeyi planlar. Öğe getirildiğindeMediaQueue.Callback#itemsUpdatedAtIndexes()
çağrılır vegetItemAtIndex()
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.
MediaQueueRecyclerViewAdapter
,RecyclerView
verilerinin yedeklenmesi içinListAdapter
verilerini yedeklemek içinMediaQueueListAdapter
.
Örneğin, MediaQueueRecyclerViewAdapter
ile bir 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ü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.