Exibir um card do "Tocando agora"

Apps de TV que tocam áudio podem continuar fazendo isso depois que o usuário retornar à tela inicial ou muda para outro app. Para isso, o app precisa fornecer um card Tocando agora na página inicial. tela. Com esse card, os usuários podem entender a origem do áudio e retornar ao app para controlar a reprodução de mídia.

Sempre que um usuário MediaSession é presente, o framework do Android exibe um card Tocando agora na tela inicial. O cartão 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 aplicativo.

Card "Tocando agora"

Depois de implementar uma sessão de mídia, defina a para ativar e solicitar a seleção de áudio, o card Tocando agora vai aparecer.

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

O card é removido da tela de início quando um setActive(false) desativa a sessão de mídia ou quando outro app inicia a reprodução. Se a reprodução for Parado completamente e não há 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.

Atualizar o cartão

Sempre que o app atualizar o estado da reprodução no MediaSession, o O card Tocando agora é atualizado para mostrar o estado da mídia atual. Para aprender a fazer isso, consulte Atualizar o estado da reprodução.

Da mesma forma, seu app pode atualizar MediaMetadata a fornecer informações sobre a mídia atual no card Tocando agora, como título, subtítulo e vários ícones. Para aprender a 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 do sessão. Se o seu app oferece PendingIntent a setSessionActivity(), o sistema iniciará a atividade especificada, conforme mostrado no snippet de código a seguir. Caso contrário, a intent padrão do sistema será aberta. A atividade especificada deve fornecer controles de mídia que permitem que os usuários pausem ou interrompam 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 quando o usuário espera que o áudio continue em segundo plano ao sair do app. A reprodução de vídeo ou o som de um jogo deve sempre pausar, a menos que o app esteja se integrando e em conformidade com o modo picture-in-picture.