Das Cast-Framework bietet Warteschlangenklassen, die das Erstellen von Listen unterstützen
von MediaQueueItem
-Instanzen, die aus MediaInfo
-Instanzen wie Video oder Audio erstellt werden können
Streams, um sie der Reihe nach auf dem Receiver abzuspielen. Diese Warteschlange mit Inhaltselementen kann bearbeitet, neu angeordnet, aktualisiert usw. werden.
Das Receiver SDK verwaltet die Warteschlange und reagiert auf Vorgänge auf der solange diese aktuell mindestens ein aktives Element (Wiedergabe oder pausiert). Absender können der Sitzung beitreten und der Warteschlange Elemente hinzufügen. Der Empfänger unterhält eine Sitzung für Elemente der Wiedergabeliste, bis das letzte Element die Wiedergabe abgeschlossen hat, oder der Sender die Wiedergabe anhält und die Sitzung beendet, oder bis ein Sender lädt eine neue Warteschlange in den Empfänger. Der Empfänger behält Informationen zu beendeten Warteschlangen standardmäßig. Sobald das letzte Element in der Warteschlange beendet wird, endet die Mediensitzung und die Warteschlange verschwindet.
Elemente der Medienwarteschlange erstellen und laden
Elemente der Medienwarteschlange werden im Cast-Framework als
MediaQueueItem
Instanz.
Wenn du ein Medienelement in der Wiedergabeliste erstellst und die Media Player Library mit adaptiven Inhalten verwendest, kannst du die Vorab-Ladezeit so festlegen, dass der Player mit dem Puffern des Medienelements in der Wiedergabeliste beginnt, bevor das Element davor in der Wiedergabeliste fertig wiedergegeben ist. Automatische Wiedergabe des Elements einstellen
auf "true" setzen, kann der Empfänger die Wiedergabe automatisch starten. Beispiel:
können Sie ein Builder-Muster verwenden, um das Element in der Medienwarteschlange zu erstellen:
val queueItem: MediaQueueItem = MediaQueueItem.Builder(mediaInfo) .setAutoplay(true) .setPreloadTime(20.0) .build()
MediaQueueItem queueItem = new MediaQueueItem.Builder(mediaInfo) .setAutoplay(true) .setPreloadTime(20) .build();
Laden Sie ein Array von Elementen der Medienwarteschlange in der Warteschlange mithilfe des entsprechenden
queueLoad
RemoteMediaClient
-Methode.
Statusaktualisierungen für die Medienwarteschlange erhalten
Wenn der Empfänger ein Element aus der Medienwarteschlange lädt, weist er ihm eine eindeutige ID zu, die für die Dauer der Sitzung (und die Lebensdauer der Warteschlange) gültig ist. Ihr
Die App kann den Status der Warteschlange in Bezug auf das aktuell geladene Element lernen
wird möglicherweise nicht wiedergegeben, wird geladen oder vorab geladen. Die
MediaStatus
gibt die folgenden Statusinformationen an:
getPreloadedItemId()
method: Wenn das nächste Element vorab geladen wurde, wird die vorab geladene Element-ID zurückgegeben.getLoadingItemId()
method: gibt die Element-ID des Artikels zurück, der gerade geladen wird. in der Warteschlange aktiv sind) auf dem Empfänger.getCurrentItemId()
method: gibt die Element-ID des Elements zurück, das in der Warteschlange aktiv war (sie möglicherweise nicht abgespielt wurde) zum Zeitpunkt der Änderung des Medienstatus.getQueueItems()
(Eingestellt, stattdessenMediaQueue
verwenden): Gibt die Liste derMediaQueueItem
Instanzen als nicht änderbare Liste.
Ihre App kann die Liste der Artikel auch mithilfe der
MediaQueue
. Die Klasse ist ein spärliches Datenmodell der Medienwarteschlange. Damit wird die Liste der
Element-IDs in der Warteschlange, die automatisch mit dem Empfänger synchronisiert wird.
MediaQueue
behält nicht alle
MediaQueueItem
da es zu viel Arbeitsspeicher benötigt,
wenn die Warteschlange sehr lang ist. Stattdessen werden sie
ruft die Artikel nach Bedarf ab und behält ein LruCache
von
zuletzt aufgerufene Elemente. Mit den folgenden Methoden können Sie auf die Medienwarteschlange zugreifen:
getItemIds()
method: gibt die Liste aller Element-IDs der Reihe nach zurück.getItemAtIndex()
method: gibt das im Cache gespeicherte Element an einem bestimmten Index zurück. Wenn das Element nicht im Cache gespeichert ist,MediaQueue
gibtnull
zurück und plant den Abruf des Elements. Beim Abrufen des Artikels wirdMediaQueue.Callback#itemsUpdatedAtIndexes()
aufgerufen. WenngetItemAtIndex()
noch einmal mit derselben ID aufgerufen wird, wird der Artikel zurückgegeben.fetchMoteItemsRelativeToIndex()
wird verwendet, wenn der Nutzer in der Benutzeroberfläche der Warteschlangen nach oben oder unten scrollt. und Ihre App möchte mehr Elemente aus der Cloud abrufen.
Verwenden Sie diese Methoden zusammen mit den anderen Medienstatusmethoden, um Ihre
-App über den Status der Warteschlange und die Elemente in der Warteschlange. Zusätzlich zu
vom Empfänger erhalten, kann Ihre App Änderungen am
in die Warteschlange stellen, indem Sie
RemoteMediaClient.Callback
und
MediaQueue.Callback
Darüber hinaus bietet das Cast SDK zwei Dienstprogrammklassen zum Erstellen einer Benutzeroberfläche für Wiedergabelisten.
MediaQueueRecyclerViewAdapter
, zur Sicherung der DatenRecyclerView
MediaQueueListAdapter
, zur Sicherung der DatenListAdapter
So erstellen Sie beispielsweise einen RecyclerView
mit 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); }
Warteschlange bearbeiten
Verwenden Sie die Warteschlangenmethoden der Klasse RemoteMediaClient
, um die Elemente in der Warteschlange zu bearbeiten. Damit können Sie ein Array von Elementen in eine neue Warteschlange laden,
in einer vorhandenen Warteschlange, aktualisieren die Eigenschaften von Elementen in der Warteschlange, erstellen ein Element
In der Warteschlange vor- oder zurückspringen, Eigenschaften der Warteschlange selbst festlegen
(Ändern Sie z. B. den repeatMode
-Algorithmus, mit dem das nächste Element ausgewählt wird)
um Elemente aus der Warteschlange zu entfernen und sie neu anzuordnen.