Android Auto 17.3: como publicar controles de mídia com Media3

Android Auto 17.3: como publicar controles de mídia com Media3

O Android Auto 17.3 pode reduzir uma fricção antiga: um app consegue tocar áudio pelo carro, mas nem sempre oferece controles úteis na tela da central multimídia. Segundo o Eurisko.com.br, o Google está ampliando o acesso aos controles de mídia para aplicativos que não foram desenvolvidos especificamente para o Android Auto. Isso não significa que qualquer tela de celular será espelhada no painel; significa que o sistema pode aproveitar informações e comandos padronizados da reprodução.

Para quem desenvolve apps, a diferença importa. Um player bem integrado ao Android pode expor título, artista, capa, estado de reprodução e ações por meio de uma sessão de mídia. O Android Auto pode então apresentar uma interface própria, adequada ao carro, sem precisar executar a interface completa do aplicativo. O resultado depende da forma como o app publica essa sessão e da disponibilidade da versão no dispositivo.

O que muda no Android Auto 17.3 para os controles de mídia

Antes, um aplicativo sem integração específica ainda podia enviar áudio aos alto-falantes do veículo. A limitação aparecia quando o motorista precisava pausar, avançar ou consultar o conteúdo: esses controles nem sempre ficavam disponíveis na central multimídia. A mudança descrita pelo Eurisko.com.br amplia a possibilidade de o Android Auto oferecer controles para mais apps de mídia instalados no telefone.

O Google cita serviços como YouTube Premium, áudio reproduzido pelo navegador e aplicativos menores ou especializados. Na prática, o painel pode exibir controles padronizados mesmo quando o desenvolvedor não criou uma tela dedicada para o Android Auto. Isso é diferente de abrir o app no carro ou transmitir sua interface para a tela.

Essa distinção é importante por segurança e arquitetura. O Android Auto é um host que apresenta experiências compatíveis com o uso no veículo; ele não deve simplesmente copiar qualquer interface móvel para o motorista. Controles de mídia reduzem distrações porque limitam a interação a ações previsíveis, como reproduzir, pausar e pular faixa.

Por que a sessão de mídia do Android é importante

O mecanismo relevante para desenvolvedores é a sessão de mídia. Em termos simples, ela informa ao Android que existe uma reprodução ativa e descreve o que está tocando, em que estado está e quais ações o player aceita. Componentes do sistema podem usar esses dados para apresentar controles na tela de bloqueio, na área de notificações, em dispositivos Bluetooth e em experiências como o Android Auto.

Uma sessão inconsistente prejudica todas essas integrações. Se o player continua tocando, mas publica o estado como pausado, o usuário vê um controle errado. Se o app não atualiza os metadados ao mudar de faixa, a central pode mostrar título ou capa antigos. Se o processo é encerrado sem liberar corretamente os recursos, a sessão pode ficar obsoleta.

Para um app de áudio, eu trataria a sessão como parte central da arquitetura de reprodução, e não como um detalhe visual. Ela deve acompanhar o ciclo de vida do player, refletir o estado real e expor apenas ações que funcionam. O Android Auto ganha uma interface mais confiável; o app também melhora sua integração com fones, relógios, carros e controles do sistema.

Controles genéricos não substituem uma integração nativa

Uma sessão padrão pode resolver o básico, mas não substitui todas as capacidades de uma integração dedicada. Um app nativo para Android Auto pode organizar catálogo, listas, navegação por categorias e fluxos aprovados para uso no carro. Já os controles genéricos tendem a se concentrar na mídia que está tocando.

Também não se deve presumir que todo aplicativo passará a aparecer com os mesmos recursos. A experiência pode depender da versão do Android Auto, do telefone, do fabricante do veículo, do estado da reprodução e da maneira como o app publica sua sessão. “Qualquer app” é uma forma resumida de descrever a ampliação, não uma garantia de compatibilidade perfeita.

Na Prática: como um app Android publica controles de reprodução

Se estou construindo um player, uso Media3 para manter o player e a sessão alinhados. O exemplo abaixo mostra o esqueleto de um serviço de reprodução. Ele não cria sozinho um catálogo nem escolhe o conteúdo: o aplicativo ainda precisa fornecer uma fonte de áudio e iniciar a reprodução. Mas estabelece a base para expor o player ao sistema.

class PlaybackService : MediaSessionService() {

    private var mediaSession: MediaSession? = null

    override fun onCreate() {
        super.onCreate()

        val player = ExoPlayer.Builder(this).build()

        mediaSession = MediaSession.Builder(this, player)
            .build()
    }

    override fun onGetSession(
        controllerInfo: MediaSession.ControllerInfo
    ): MediaSession? = mediaSession

    override fun onDestroy() {
        mediaSession?.run {
            player.release()
            release()
        }
        mediaSession = null
        super.onDestroy()
    }
}

Esse serviço precisa ser declarado no manifesto e o projeto precisa incluir as dependências compatíveis do AndroidX Media3, como media3-exoplayer e media3-session. Em versões recentes do Android, também é necessário declarar as permissões de serviço em primeiro plano adequadas à reprodução de mídia e configurar o tipo do serviço conforme a documentação da versão-alvo.

Eu evitaria copiar um manifesto antigo sem conferir a versão do SDK e as regras atuais de execução em segundo plano. O comportamento de serviços em primeiro plano mudou ao longo das versões do Android. Uma implementação que funciona em um aparelho de desenvolvimento pode falhar ao iniciar reprodução em segundo plano ou ao publicar a notificação em outro nível de API.

  1. Use uma sessão ligada ao player real. Não mantenha um estado paralelo que possa divergir do ExoPlayer.
  2. Publique metadados atualizados. Título, artista e imagem devem mudar junto com o item reproduzido.
  3. Implemente os comandos anunciados. Se o app expõe avançar faixa, o comando precisa funcionar mesmo com a tela desligada.
  4. Teste com diferentes controladores. Verifique tela de bloqueio, Bluetooth e Android Auto, além da interface interna do app.
  5. Valide o ciclo de vida. Pause, retome, encerre a reprodução e reconecte o carro para detectar sessões presas.

Para quem só usa o telefone, a mudança pode beneficiar serviços que antes funcionavam apenas como fonte de áudio. Um conteúdo reproduzido pelo navegador, por exemplo, pode ganhar controles mais convenientes no carro se o navegador ou o serviço publicar uma sessão reconhecida pelo sistema. Isso não garante capa, navegação por episódios ou todos os comandos avançados.

Comparação: controles genéricos, integração Android Auto e Bluetooth

Opção O que oferece Limitação principal
Controles genéricos de mídia Ações básicas e metadados da reprodução ativa Dependem da sessão publicada pelo app e não oferecem necessariamente catálogo
Integração dedicada com Android Auto Navegação por conteúdo e experiência própria aprovada para o carro Exige trabalho de desenvolvimento e conformidade com as regras da plataforma
Bluetooth/AVRCP Comandos básicos enviados entre telefone e veículo A interface e os metadados variam conforme aparelhos e central multimídia

Eu vejo os controles genéricos como uma camada de compatibilidade, não como substituto universal para APIs específicas. Para um podcast pequeno ou um player de nicho, essa camada pode entregar valor sem obrigar o time a manter uma experiência automotiva completa. Para um serviço com catálogo extenso, busca e recomendações, a integração dedicada continua fazendo diferença.

Erros comuns ao implementar reprodução para Android Auto

  • Confundir áudio audível com integração funcional. O fato de o som sair pelos alto-falantes não prova que existe uma sessão utilizável pelo sistema.
  • Publicar metadados incompletos ou desatualizados. A capa não é o único dado importante; título, artista e estado também precisam acompanhar a reprodução.
  • Expor ações que não correspondem ao player. Um botão de próxima faixa sem comportamento definido cria uma experiência quebrada em qualquer controlador.
  • Presumir que o Android Auto vai mostrar a interface do app. O sistema pode apresentar controles próprios, e não a tela móvel original.
  • Testar apenas no emulador ou no telefone. A central do carro, o cabo ou conexão sem fio e a versão instalada do Android Auto podem alterar o resultado.
  • Tratar a versão 17.3 como disponibilidade universal. Recursos podem ser liberados gradualmente e depender de combinações de versões e dispositivos.

Também não recomendo usar esse recurso como justificativa para ignorar acessibilidade ou controles no próprio app. Uma sessão bem publicada melhora a interoperabilidade, mas a experiência continua dependendo de como o player responde a interrupções, perda de rede, troca de saída de áudio e retomada da reprodução.

O impacto para quem desenvolve apps de áudio

A mudança reduz a distância entre “o app toca no carro” e “o app é controlável no carro”. Para equipes pequenas, isso pode evitar a implementação imediata de uma interface automotiva completa. Para equipes maiores, reforça a importância de tratar a sessão de mídia como API pública do produto: outros componentes do Android dependem dela para representar a reprodução.

Minha recomendação é testar primeiro a qualidade da sessão e só depois decidir se controles básicos bastam. Se o usuário precisa navegar por um catálogo enquanto dirige, uma experiência dedicada pode ser necessária. Se a tarefa é pausar um áudio ou avançar para o próximo conteúdo, os controles padronizados podem resolver com menos código e menos manutenção.

Perguntas frequentes sobre Android Auto e apps de mídia

O Android Auto 17.3 espelha qualquer aplicativo do celular?

Não. A mudança descrita é sobre controles de mídia, não sobre espelhamento irrestrito da interface do telefone. O painel pode apresentar comandos e informações da reprodução sem abrir a tela original do app.

Um aplicativo precisa ser reescrito para aparecer nos controles?

Não necessariamente. A proposta é ampliar o suporte a apps que já publicam uma sessão de mídia reconhecida pelo Android. Ainda assim, a compatibilidade e os controles disponíveis dependem da implementação do app e do ambiente.

Como um desenvolvedor melhora a compatibilidade do player?

Use uma sessão de mídia ligada ao player, mantenha metadados e estado atualizados e implemente corretamente os comandos expostos. Com Media3, um serviço de sessão ajuda a centralizar essa integração.

Os controles genéricos substituem uma integração dedicada com Android Auto?

Não em todos os casos. Eles são adequados para ações básicas da reprodução. Catálogos, navegação por categorias e experiências específicas podem exigir uma integração própria para Android Auto.

O recurso já funciona em todos os carros e telefones?

Não dá para assumir isso apenas pelo número da versão. A liberação pode variar por dispositivo, atualização do Android Auto, app de mídia e sistema da central multimídia. Vale testar na combinação que o público realmente usa.

Gostou? Me segue no GitHub e deixa um comentário se tiver dúvida ou quiser aprofundar algum ponto.

Y

Yuri Sousa

Front-End Developer / Designer

Desenvolvedor apaixonado por criar experiências digitais acessíveis e visualmente perfeitas. Escrevo sobre desenvolvimento web, design e tecnologia.