Exibir um card do "Tocando agora"

Apps de TV que reproduzem áudio podem continuar a fazer isso depois que o usuário retornar à tela inicial ou mudar 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 seu app para controlar a reprodução de mídia.

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

Card "Tocando agora"

Depois de implementar uma sessão de mídia, defini-la como ativa e solicitar a seleção de áudio, o card Tocando agora será exibido.

Observação:o card Tocando agora é exibido 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, essa flag ainda pode ser necessária em dispositivos mais antigos para garantir a compatibilidade com versões anteriores.

O card é removido da tela de início quando uma chamada setActive(false) desativa a sessão de mídia ou quando outro app inicia a reprodução. 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 estiver pausada, desative a sessão de mídia após um atraso, geralmente de 5 a 30 minutos.

Atualize o cartão

Sempre que o app atualizar o estado de 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 diversos í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 proprietário 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 abaixo. Caso contrário, a intent padrão do sistema será aberta. 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
    )
}
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 nos 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 precisa sempre pausar, a menos que seu app esteja integrado e compatível com o picture-in-picture.