Framework Cast menyediakan class antrean yang mendukung pembuatan daftar
instance MediaQueueItem
, yang dapat dibuat dari instance MediaInfo
seperti streaming
video atau audio, untuk diputar secara berurutan di penerima. Antrean item konten ini
dapat diedit, diurutkan ulang, diperbarui, dan sebagainya.
Receiver SDK mempertahankan antrean dan merespons operasi pada antrean selama antrean memiliki setidaknya satu item yang saat ini aktif (diputar atau dijeda). Pengirim dapat bergabung ke sesi dan menambahkan item ke antrean. Penerima mempertahankan sesi untuk item antrean hingga item terakhir menyelesaikan pemutaran atau pengirim menghentikan pemutaran dan menghentikan sesi, atau hingga pengirim memuat antrean baru di penerima. Penerima tidak mempertahankan informasi apa pun tentang antrean yang dihentikan secara default. Setelah item terakhir dalam antrean selesai, sesi media akan berakhir dan antrean akan hilang.
Membuat dan memuat item antrean media
Item antrean media direpresentasikan dalam framework Cast sebagai
instance
MediaQueueItem
.
Saat membuat item antrean media, jika menggunakan Library Media Player dengan konten adaptif, Anda dapat menetapkan waktu pramuat sehingga pemutar dapat mulai melakukan buffering item antrean media sebelum item di depannya dalam antrean selesai diputar. Menetapkan atribut pemutaran otomatis
item ke benar memungkinkan penerima memutarnya secara otomatis. Misalnya,
Anda dapat menggunakan pola builder untuk membuat item antrean media sebagai berikut:
val queueItem: MediaQueueItem = MediaQueueItem.Builder(mediaInfo) .setAutoplay(true) .setPreloadTime(20.0) .build()
MediaQueueItem queueItem = new MediaQueueItem.Builder(mediaInfo) .setAutoplay(true) .setPreloadTime(20) .build();
Muat array item antrean media dalam antrean menggunakan metode
queueLoad
RemoteMediaClient
yang sesuai.
Menerima pembaruan status antrean media
Saat penerima memuat item antrean media, penerima akan menetapkan ID unik ke item
yang tetap ada selama durasi sesi (dan masa aktif antrean). Aplikasi
Anda dapat mempelajari status antrean dalam hal item yang saat ini dimuat
(mungkin tidak diputar), dimuat, atau dimuat sebelumnya. Class
MediaStatus
memberikan informasi status ini:
- Metode
getPreloadedItemId()
- Jika item berikutnya telah dipramuat, menampilkan ID item yang dipramuat. - Metode
getLoadingItemId()
- Menampilkan ID item dari item yang saat ini sedang dimuat (tetapi tidak aktif dalam antrean) di penerima. - Metode
getCurrentItemId()
- Menampilkan ID item yang aktif dalam antrean (item mungkin tidak diputar) pada saat perubahan status media terjadi. - Metode
getQueueItems()
(Tidak digunakan lagi, gunakanMediaQueue
) - Menampilkan daftar instanceMediaQueueItem
sebagai daftar yang tidak dapat diubah.
Aplikasi Anda juga dapat mendapatkan daftar item menggunakan class
MediaQueue
. Class ini adalah model data jarang dari antrean media. Fungsi ini menyimpan daftar
ID item dalam antrean, yang otomatis disinkronkan dengan penerima.
MediaQueue
tidak menyimpan semua
MediaQueueItem
karena akan menghabiskan terlalu banyak memori saat antrean sangat panjang. Sebagai gantinya, item diambil sesuai permintaan dan menyimpan LruCache
item yang baru diakses. Anda dapat menggunakan metode ini untuk mengakses antrean media:
- Metode
getItemIds()
- Menampilkan daftar semua ID item secara berurutan. - Metode
getItemAtIndex()
- Menampilkan item yang di-cache pada indeks tertentu. Jika item tidak di-cache,MediaQueue
akan menampilkannull
dan menjadwalkan pengambilan item. Saat item diambil,MediaQueue.Callback#itemsUpdatedAtIndexes()
akan dipanggil, dan memanggilgetItemAtIndex()
dengan ID yang sama lagi akan menampilkan item. fetchMoteItemsRelativeToIndex()
digunakan saat pengguna men-scroll UI antrean ke atas atau bawah, dan aplikasi Anda ingin mengambil lebih banyak item dari cloud.
Gunakan metode ini bersama dengan metode status media lainnya untuk memberi tahu
aplikasi tentang status antrean dan item dalam antrean. Selain
update status media dari penerima, aplikasi Anda dapat memproses perubahan pada
antrean dengan menerapkan
RemoteMediaClient.Callback
dan
MediaQueue.Callback
.
Selain itu, SDK Cast menyediakan dua class utilitas untuk membuat UI antrean.
MediaQueueRecyclerViewAdapter
, untuk mencadangkan dataRecyclerView
MediaQueueListAdapter
, untuk mencadangkan dataListAdapter
.
Misalnya, untuk membuat RecyclerView
menggunakan MediaQueueRecyclerViewAdapter
:
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); }
Mengedit antrean
Untuk mengoperasikan item dalam antrean, gunakan metode antrean dari
class
RemoteMediaClient
. Dengan ini, Anda dapat memuat array item ke dalam antrean baru, menyisipkan item ke dalam
antrean yang ada, memperbarui properti item dalam antrean, membuat item
maju atau mundur dalam antrean, menetapkan properti antrean itu sendiri
(misalnya, mengubah algoritma repeatMode
yang memilih item berikutnya),
menghapus item dari antrean, dan mengurutkan ulang item dalam antrean.