Cómo mostrar una tarjeta de Está sonando

Las apps para TV deben mostrar una tarjeta de Está sonando cuando reproducen contenido multimedia detrás del selector o en segundo plano. Esta tarjeta permite a los usuarios volver a la app que está reproduciendo contenido multimedia.

El framework de Android muestra una tarjeta de Está sonando en la pantalla principal cuando hay un MediaSession activo. En la tarjeta, se incluyen metadatos de contenido multimedia, como la portada del álbum, el título y el ícono de la app. Cuando el usuario selecciona la tarjeta, el sistema abre la app.

Puedes usar la clase MediaSession para implementar la tarjeta Está sonando.

Figura 1: Muestra una tarjeta de Está sonando cuando se reproduce contenido multimedia en segundo plano.

Carta de Está sonando

Después de implementar una sesión multimedia, establecerla como activa y solicitar el foco de audio, aparecerá la tarjeta Está sonando.

Nota: La tarjeta Está sonando solo se muestra para una sesión multimedia con la marca FLAG_HANDLES_TRANSPORT_CONTROLS. Esta marca dejó de estar disponible en el nivel de API 26. Sin embargo, esta marca podría ser necesaria en dispositivos más antiguos para brindar retrocompatibilidad.

La tarjeta se quita de la pantalla del selector cuando una llamada a setActive(false) desactiva la sesión multimedia o cuando otra app inicia la reproducción de contenido multimedia. Si la reproducción se detiene por completo y no hay contenido multimedia activo, desactiva la sesión multimedia de inmediato. Si se pausa la reproducción, desactiva la sesión multimedia después de una demora, por lo general, de 5 a 30 minutos.

Actualizar la tarjeta

Cada vez que tu app actualiza el estado de reproducción en MediaSession, la tarjeta de Está sonando se actualiza para mostrar el estado del contenido multimedia actual. Para aprender a hacerlo, consulta Cómo actualizar el estado de reproducción.

De manera similar, tu app puede actualizar la MediaMetadata para proporcionar información a la tarjeta de Está sonando sobre el contenido multimedia actual, como el título, el subtítulo y varios íconos. Si quieres obtener información para hacerlo, consulta Cómo actualizar los metadatos de contenido multimedia.

Cómo responder a la acción del usuario

Cuando el usuario selecciona la tarjeta de Está sonando, el sistema abre la app a la que corresponde la sesión. Si tu app proporciona un PendingIntent a setSessionActivity(), el sistema inicia la actividad que especifiques, como se muestra en el siguiente fragmento de código. De lo contrario, se abre el intent predeterminado del sistema. La actividad que especifiques debe proporcionar controles de reproducción que permitan a los usuarios pausar o detener la reproducción.

Kotlin

val pi: PendingIntent = Intent(context, MyActivity::class.java).let { intent ->
    PendingIntent.getActivity(
            context, 99 /*request code*/,
            intent,
            PendingIntent.FLAG_UPDATE_CURRENT
    )
}
session.setSessionActivity(pi)

Java

Intent intent = new Intent(context, MyActivity.class);
PendingIntent pi = PendingIntent.getActivity(context, 99 /*request code*/,
        intent, PendingIntent.FLAG_UPDATE_CURRENT);
session.setSessionActivity(pi);