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
bearbeitet, neu angeordnet, aktualisiert usw.
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 Elemente zur Warteschlange 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.
Beim Erstellen eines Warteschlangenelements bei Verwendung des Mediaplayers
Bibliothek mit adaptiven Inhalten suchen, können Sie den
sodass der Player das Element der Medienwarteschlange
vor dem Zwischenspeichern starten kann,
das vorherige Element in der Warteschlange beendet. 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 ein 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 mit Medienwarteschlangenelementen in die Warteschlange. Verwenden Sie dazu das entsprechende Element,
queueLoad
RemoteMediaClient
-Methode.
Aktuelle Informationen zum Status der Medienwarteschlange erhalten
Wenn der Empfänger ein Element der Medienwarteschlange lädt, weist er dem Element eine eindeutige ID zu.
die für die Dauer der Sitzung (und die Lebensdauer der Warteschlange) bestehen bleibt. Ihr
Die App kann den Status der Warteschlange lernen und so ermitteln, welches Element gerade geladen wird.
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 dünnbesetztes 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. Wenn das Element abgerufen wird,MediaQueue.Callback#itemsUpdatedAtIndexes()
wird aufgerufen undgetItemAtIndex()
noch einmal mit derselben ID aufgerufen, um den Artikel zurückzusenden.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
Um die Elemente in der Warteschlange zu bearbeiten, verwenden Sie die Warteschlangenmethoden der
RemoteMediaClient
. 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.