El framework de Cast proporciona clases en fila que admiten la creación de listas.
de MediaQueueItem
que se pueden compilar a partir de instancias MediaInfo
, como audio o video
de secuencias de comandos para que se reproduzcan
de forma secuencial en la app receptora. Esta fila de elementos de contenido
se puede editar, reordenar, actualizar, etc.
El SDK de la app receptora mantiene la cola y responde a las operaciones en la en espera, siempre que esta tenga al menos un elemento activo (en reproducción o se pausó). Los remitentes pueden unirse a la sesión y agregar elementos a la cola. El receptor mantiene una sesión para los elementos en cola hasta que el último elemento complete la reproducción o el emisor detiene la reproducción y finaliza la sesión, o hasta que carga una nueva cola en el receptor. El receptor no mantiene información sobre colas finalizadas de forma predeterminada. Cuando el último elemento en la fila finaliza la sesión multimedia y desaparece la cola.
Cómo crear y cargar elementos de la fila de medios
Un elemento de la cola de contenido multimedia se representa en el framework de Cast como
MediaQueueItem
instancia.
Cuando creas un elemento de la fila de contenido multimedia, si estás utilizando el Reproductor multimedia
Biblioteca con contenido adaptable, puedes configurar
tiempo de precarga para que el reproductor pueda comenzar a almacenar en búfer el elemento de la cola de medios antes de
el elemento que se encuentra delante de él en la fila termina de reproducirse. Configuración de la reproducción automática del elemento
como verdadero permite que el receptor lo reproduzca automáticamente. Por ejemplo:
puedes usar un patrón de compilador para crear tu elemento de cola de contenido multimedia de la siguiente manera:
val queueItem: MediaQueueItem = MediaQueueItem.Builder(mediaInfo) .setAutoplay(true) .setPreloadTime(20.0) .build()
MediaQueueItem queueItem = new MediaQueueItem.Builder(mediaInfo) .setAutoplay(true) .setPreloadTime(20) .build();
Para cargar un array de elementos de la cola de contenido multimedia en la cola, usa el archivo
queueLoad
método de RemoteMediaClient
.
Cómo recibir actualizaciones de estado de la fila de medios
Cuando el receptor carga un elemento de la fila de contenido multimedia, le asigna un ID único al elemento.
que persiste durante toda la sesión (y la vida de la cola). Tu
La app puede conocer el estado de la cola en cuanto al elemento cargado en ese momento
(es posible que no se esté reproduciendo), cargando o precargado. El
MediaStatus
proporciona la siguiente información de estado:
getPreloadedItemId()
método: Si el siguiente elemento se cargó previamente, muestra el ID del elemento precargado.getLoadingItemId()
método: Devuelve el ID del elemento que se está cargando actualmente (pero no se está cargando). activo en la cola) en el receptor.getCurrentItemId()
método: Devuelve el ID del elemento que estaba activo en la cola (es no se esté reproduciendo) cuando se produjo el cambio de estado del contenido multimedia.getQueueItems()
(Obsoleto, usaMediaQueue
en su lugar): muestra la lista deMediaQueueItem
instancias como una lista no modificable.
Tu app también puede obtener la lista de elementos con el
MediaQueue
. La clase es un modelo de datos dispersos de la cola de contenido multimedia. Lleva la lista de
IDs de artículos en la cola, que se sincroniza automáticamente con el receptor.
MediaQueue
no conserva todos los
MediaQueueItem
porque consumirá demasiada memoria
cuando la cola sea muy larga. Por el contrario,
recupera los elementos a pedido y conserva un LruCache
de
a los que accediste recientemente. Puedes usar estos métodos para acceder a la fila de contenido multimedia:
getItemIds()
método: Muestra la lista de todos los ID de artículos en orden.getItemAtIndex()
método: Muestra el elemento almacenado en caché en un índice determinado. Si el elemento no está almacenado en caché,MediaQueue
mostraránull
y un programa para recuperar el elemento. Si el elemento se recuperaMediaQueue.Callback#itemsUpdatedAtIndexes()
y volver a llamar agetItemAtIndex()
con el mismo ID devolver el artículo.fetchMoteItemsRelativeToIndex()
se usa cuando el usuario se desplaza por la IU de la cola hacia la parte superior o inferior. y tu app quiere recuperar más elementos de la nube.
Usa estos métodos junto con otros métodos de estado de contenido multimedia para informar a tu
app sobre el estado y los elementos en esta. Además de
actualizaciones de estado del contenido multimedia del receptor, la app puede detectar cambios en la
implementando
RemoteMediaClient.Callback
y
MediaQueue.Callback
Además, el SDK de Cast proporciona dos clases de utilidad para crear una IU para la cola.
MediaQueueRecyclerViewAdapter
: para respaldar los datos deRecyclerView
MediaQueueListAdapter
: para respaldar los datos deListAdapter
Por ejemplo, para crear un RecyclerView
con MediaQueueRecyclerViewAdapter
, haz lo siguiente:
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); }
Editar la cola
Para realizar operaciones en los elementos de la cola, usa los métodos de cola del
RemoteMediaClient
. Te permiten cargar un array de elementos en una cola nueva, insertar elementos
actualizar las propiedades de los elementos
en una cola, crear un elemento
avanzar o retroceder en la cola, definir las propiedades de la cola
(por ejemplo, cambia el algoritmo repeatMode
que selecciona el siguiente elemento)
eliminar elementos de la fila y reordenarlos en la fila.