Le framework Cast fournit des classes de mise en file d'attente compatibles avec la création de listes.
sur MediaQueueItem
qui peuvent être créées à partir d'instances MediaInfo
, telles que des instances vidéo ou audio
diffusés de manière séquentielle sur le récepteur. Cette file d'attente d'éléments de contenu peut être modifiée, réorganisée, mise à jour, etc.
Le SDK Récepteur gère la file d'attente et répond aux opérations effectuées sur le de la file d'attente tant qu'elle contient au moins un élément actif (en cours de lecture ou en pause). Les expéditeurs peuvent rejoindre la session et ajouter des éléments à la file d'attente. Le destinataire maintient une session pour les éléments de la file d'attente jusqu'à la fin de la lecture du dernier élément ou l'émetteur arrête la lecture et met fin à la session, ou jusqu'à ce qu'un expéditeur charge une nouvelle file d'attente sur le récepteur. Par défaut, le récepteur ne conserve aucune information sur les files d'attente arrêtées. Une fois que le dernier élément de la file d'attente se termine, la session multimédia se termine et la file d'attente disparaît.
Créer et charger des éléments de file d'attente multimédia
Un élément de file d'attente multimédia est représenté dans le framework Cast sous la forme d'un
MediaQueueItem
Compute Engine.
Lorsque vous créez un élément de file d'attente multimédia, si vous utilisez la bibliothèque du lecteur multimédia avec du contenu adaptatif, vous pouvez définir le temps de préchargement afin que le lecteur puisse commencer à mettre en mémoire tampon l'élément de la file d'attente multimédia avant que l'élément précédent de la file d'attente ne soit terminé. Définir la lecture automatique de l'élément
sur "true" permet au récepteur de la lire automatiquement. Par exemple,
Vous pouvez utiliser un format de compilateur pour créer un élément de file d'attente multimédia comme suit:
val queueItem: MediaQueueItem = MediaQueueItem.Builder(mediaInfo) .setAutoplay(true) .setPreloadTime(20.0) .build()
MediaQueueItem queueItem = new MediaQueueItem.Builder(mediaInfo) .setAutoplay(true) .setPreloadTime(20) .build();
Chargez un tableau d'éléments de file d'attente de médias dans la file d'attente à l'aide de la
queueLoad
de RemoteMediaClient
.
Recevoir des informations sur l'état de la file d'attente multimédia
Lorsque le destinataire charge un élément de file d'attente multimédia, il attribue un ID unique à l'élément.
qui persiste pendant toute la durée de la session (et la durée de vie de la file d'attente). Votre
L'application peut connaître l'état de la file d'attente en fonction de l'élément actuellement chargé
(il se peut qu'elle ne soit pas en cours de lecture), en cours de chargement ou préchargée. La
MediaStatus
fournit les informations d'état suivantes:
- Méthode
getPreloadedItemId()
: si l'élément suivant a été préchargé, renvoie l'ID de l'élément préchargé. getLoadingItemId()
: renvoie l'identifiant de l'élément en cours de chargement (mais n'est pas actif dans la file d'attente) sur le récepteur.getCurrentItemId()
méthode : renvoie l'identifiant de l'élément qui était actif dans la file d'attente (il peut ne pas être en cours de lecture) au moment où le changement d'état du contenu multimédia s'est produit.getQueueItems()
(obsolète, utilisez plutôtMediaQueue
) : renvoie la liste desMediaQueueItem
instances en tant que liste non modifiable.
Votre application peut également obtenir la liste des éléments à l'aide de la classe MediaQueue
. La classe est un modèle de données creux de la file d'attente multimédia. Il conserve la liste des
d'articles de la file d'attente, qui est automatiquement synchronisée avec le destinataire.
MediaQueue
ne conserve pas
MediaQueueItem
car cela prendrait trop de mémoire
lorsque la file d'attente est très longue. Au lieu de cela, il
récupère les articles à la demande et conserve une valeur LruCache
éléments récemment consultés. Vous pouvez utiliser les méthodes suivantes pour accéder à la file d'attente des fichiers multimédias:
getItemIds()
method : renvoie la liste de tous les ID d'articles dans l'ordre.getItemAtIndex()
Méthode : renvoie l'élément mis en cache à un index donné. Si l'élément n'est pas mis en cache,MediaQueue
renvoienull
et planifie la récupération de l'élément. Lorsque l'élément est récupérée,MediaQueue.Callback#itemsUpdatedAtIndexes()
est appelé et le fait d'appelergetItemAtIndex()
à nouveau avec le même ID renvoyer l'article.fetchMoteItemsRelativeToIndex()
est utilisé lorsque l'utilisateur fait défiler l'interface utilisateur de la file d'attente jusqu'en haut ou en bas. et que votre application souhaite extraire davantage d'éléments du cloud.
Utilisez ces méthodes avec les autres méthodes d'état des contenus multimédias pour informer votre application de l'état de la file d'attente et des éléments de la file d'attente. En plus de
des mises à jour de l'état du contenu multimédia à partir du récepteur, votre application peut écouter les modifications
en implémentant la file d'attente
RemoteMediaClient.Callback
et
MediaQueue.Callback
En outre, le SDK Cast fournit deux classes utilitaires pour créer une interface utilisateur pour la mise en file d'attente.
MediaQueueRecyclerViewAdapter
pour sauvegarder les données deRecyclerView
MediaQueueListAdapter
pour sauvegarder les données deListAdapter
Par exemple, pour créer un RecyclerView
à l'aide de 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); }
Modifier la file d'attente
Pour effectuer des opérations sur les éléments de la file d'attente, utilisez les méthodes de file d'attente de la
RemoteMediaClient
. Ils vous permettent de charger un tableau d'éléments dans une nouvelle file d'attente, d'insérer des éléments dans une file d'attente existante, de mettre à jour les propriétés des éléments de la file d'attente, de faire sauter un élément vers l'avant ou vers l'arrière dans la file d'attente, de définir les propriétés de la file d'attente elle-même (par exemple, modifier l'algorithme repeatMode
qui sélectionne l'élément suivant), de supprimer des éléments de la file d'attente et de réorganiser les éléments de la file d'attente.