Cast çerçevesi, listelerin oluşturulmasını destekleyen sıraya alma sınıfları sağlar
/ MediaQueueItem
video veya ses gibi MediaInfo
örneklerinden oluşturulabilen örnekler
alıcıda sıralı olarak oynatılır. Bu içerik öğeleri sırası
düzenlenebilir, yeniden sıralanabilir, güncellenebilir ve benzer işlemler yapılabilir.
Alıcı SDK, sırayı korur ve sırada en az bir öğe etkin olduğu sürece sırada durmaya devam eder (oynatma veya duraklatıldı). 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 olduğunda medya oturumu sona erer ve sıra kaybolur.
Medya sırası öğeleri oluşturma ve yükleme
Bir medya sırası öğesi, Cast çerçevesinde şu şekilde temsil edilir:
MediaQueueItem
örneğidir.
Medya Oynatıcı'yı kullanıyorsanız bir medya sırası öğesi oluşturduğunuzda
Kitaplık'ı kullanıyorsanız, bu ayarı değiştirebilirsiniz.
oynatıcının medya sırası öğesini önceden arabelleğe almaya başlayabilmesi için
ve sırada önündeki öğenin oynatılması sona erer. Öğenin otomatik oynatmasını ayarlama
özelliğinin true olarak ayarlanması, 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:
val queueItem: MediaQueueItem = MediaQueueItem.Builder(mediaInfo) .setAutoplay(true) .setPreloadTime(20.0) .build()
MediaQueueItem queueItem = new MediaQueueItem.Builder(mediaInfo) .setAutoplay(true) .setPreloadTime(20) .build();
Uygun
queueLoad
yöntemi olarak RemoteMediaClient
kullanılabilir.
Medya sırası durum güncellemelerini al
Alıcı bir medya sırası öğesi yüklediğinde öğeye benzersiz bir kimlik atar
oturum boyunca (ve sıranın ömrü boyunca) devam eder. Sizin
sıranın hangi öğenin yüklendiğine bakarak sıranın durumunu öğrenebilir
(oynamıyor olabilir), yükleniyor veya önceden yüklenmiş olabilir. İlgili içeriği oluşturmak için kullanılan
MediaStatus
sınıfı şu durum bilgilerini sağlar:
getPreloadedItemId()
yöntem - Sonraki öğe önceden yüklenmişse önceden yüklenmiş öğe kimliğini döndürür.getLoadingItemId()
method - Şu anda yüklenmekte olan (ancak yüklenmeyen) öğenin öğe kimliğini döndürür sırada etkin) bulunur.getCurrentItemId()
yöntem - Sırada etkin olan öğenin öğe kimliğini döndürür ( oynatılamıyordur).getQueueItems()
(Kullanımdan kaldırıldı, bunun yerineMediaQueue
yöntemini kullanın) yöntem - Şunun listesini döndürür: Değiştirilemez liste olarakMediaQueueItem
örnek.
Uygulamanız, MediaQueue
sınıfını kullanarak da öğelerin listesini alabilir. Sınıf, medya sırasının 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 isteğe bağlı olarak getirir ve LruCache
olarak
son erişilen öğeler için ara. Medya sırasına erişmek için şu yöntemleri kullanabilirsiniz:
getItemIds()
yöntem - Tüm öğe kimliklerinin listesini sırayla döndürür.getItemAtIndex()
yöntem - Belirli bir dizindeki önbelleğe alınmış öğeyi döndürür. Öğe önbelleğe alınmadıysaMediaQueue
,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
fetchMoteItemsRelativeToIndex()
kullanılır. ve uygulamanız buluttan daha fazla öğe getirmek istiyor.
Bu yöntemleri diğer medya durumu yöntemleriyle birlikte kullanarak
sıranın durumu ve sıradaki öğeler hakkında Ek olarak
alıcıdan medya durumu güncellemeleri alırsanız, uygulamanız
satır içi metin
RemoteMediaClient.Callback
ve
MediaQueue.Callback
.
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
müşteri verilerinin yedeklenmesi içinRecyclerView
MediaQueueListAdapter
müşteri verilerinin yedeklenmesi içinListAdapter
.
Ö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ırada yer alan öğeleri düzenleme
Sıradaki öğeler üzerinde çalışmak için
RemoteMediaClient
sınıfını kullanır. Bunlar, bir dizi öğeyi yeni bir sıraya yüklemenizi, yeni bir sıraya öğe eklemenizi,
mevcut bir sırayı, sıradaki öğelerin özelliklerini güncellemek, bir öğe oluşturmak
ileri veya geri atlama, sıranın kendisinin özelliklerini ayarlama
(örneğin, sonraki öğeyi seçen repeatMode
algoritmasını değiştirin),
öğeleri sıradan kaldırabilir ve sıradaki öğeleri yeniden sıralayabilirsiniz.