Warteschlange

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 das Element in der Medienwarteschlange zu erstellen:

<ph type="x-smartling-placeholder">
</ph>
Kotlin
val queueItem: MediaQueueItem = MediaQueueItem.Builder(mediaInfo)
    .setAutoplay(true)
    .setPreloadTime(20.0)
    .build()
Java
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.

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 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, stattdessen MediaQueue verwenden): Gibt die Liste der MediaQueueItem 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 gibt null zurück und plant den Abruf des Elements. Wenn das Element abgerufen wird, MediaQueue.Callback#itemsUpdatedAtIndexes() wird aufgerufen und getItemAtIndex() 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.

So erstellen Sie beispielsweise einen RecyclerView mit MediaQueueRecyclerViewAdapter:

<ph type="x-smartling-placeholder">
</ph>
Kotlin
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
}
Java
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.