Exibir um card do "Tocando agora"

Os apps de TV que reproduzem áudio podem continuar fazendo isso depois que o usuário retornar à tela inicial ou alternar para outro app. Para isso, o app precisa fornecer um card Tocando agora na tela inicial. Esse card permite que os usuários entendam de onde o áudio está vindo e retornem ao app para controlar a reprodução de mídia.

Sempre que uma MediaSession estiver presente, o framework do Android vai mostrar um card Tocando agora na tela inicial. O card inclui metadados de mídia, como a capa do álbum, o título e um ícone do app. Quando o usuário seleciona esse card, o sistema abre o app.

Card Tocando agora

Depois de implementar uma sessão de mídia, defina a sessão como ativa e solicite o foco de áudio. O card Tocando agora vai aparecer.

Observação:o card Tocando agora é mostrado apenas para uma sessão de mídia com a flag FLAG_HANDLES_TRANSPORT_CONTROLS definida. Essa flag foi descontinuada no nível 26 da API. No entanto, ela ainda pode ser necessária em dispositivos mais antigos para compatibilidade com versões anteriores.

O card é removido da tela de início quando uma setActive(false) chamada desativa a sessão de mídia ou quando outro app inicia a reprodução de mídia. Se a reprodução for completamente interrompida e não houver mídia ativa, desative a sessão de mídia imediatamente. Se a reprodução for pausada, desative a sessão de mídia após um atraso, geralmente de 5 a 30 minutos.

Atualizar o card

Sempre que o app atualizar o estado da reprodução na MediaSession, o card Tocando agora será atualizado para mostrar o estado da mídia atual. Para saber como fazer isso, consulte Atualizar o estado da reprodução.

Da mesma forma, o app pode atualizar o MediaMetadata para fornecer informações ao card Tocando agora sobre a mídia atual, como título, subtítulo, e vários ícones. Para saber como fazer isso, consulte Atualizar os metadados de mídia.

Responder à ação do usuário

Quando o usuário seleciona o card Tocando agora, o sistema abre o app dono da sessão. Se o app fornecer um PendingIntent para setSessionActivity(), o sistema vai iniciar a atividade especificada, conforme mostrado no snippet de código a seguir. Caso contrário, o intent padrão do sistema será aberto. A atividade especificada precisa oferecer controles de reprodução que permitam aos usuários pausar ou interromper a reprodução.

Kotlin

val pi: PendingIntent = Intent(context, MyActivity::class.java).let { intent ->
    PendingIntent.getActivity(
        context, 99 /*request code*/,
        intent,
        PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE
    )
}
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);

Casos de uso aceitos

O card Tocando agora só deve ser usado em casos em que o usuário espera que o áudio continue sendo reproduzido em segundo plano ao sair do app. A reprodução de vídeo ou o som de um jogo sempre devem ser pausados, a menos que o app esteja integrado e em conformidade com o picture-in-picture.