Implementar o rádio com mídia

A interface do rádio é implementada como um app independente. As instruções sobre como integrar uma interface de rádio ao hardware de rádio podem ser encontradas em Implementar rádio.

A seção a seguir descreve como integrar a interface do rádio à mídia para oferecer aos usuários uma experiência perfeita que permite interagir com fontes de mídia e rádio como se fossem um único app.

Fluxo de usuários de troca de origem de mídia

O diagrama a seguir ilustra como a implementação de referência de rádio e mídia implementa o fluxo de troca de apps do usuário.

Fluxo de usuários de troca de origem de mídia

Figura 1. Fluxo de usuários de troca de origem de mídia

Para oferecer uma transição perfeita entre o app Rádio e outros apps de mídia, a biblioteca car-media-common define intents do Android que podem ser usadas para iniciar um seletor de fontes de mídia. No AOSP, esse seletor é implementado no App Launcher, apresentando a mesma interface para iniciar apps, mas filtrado para mostrar apenas fontes de mídia.

Os OEMs podem usar a implementação atual do App Launcher como está ou implementar um seletor de fontes de mídia personalizado.

O seletor pode atuar em dois modos:

  • Fluxo normal. Depois de usar o seletor, a fonte selecionada é exibida em "Mídia" para que o usuário possa navegar pelo conteúdo.
  • Como um switch. Um seletor é usado para alternar origens, mas a mídia não é exibida para o usuário. Isso é verdade para o ícone do seletor na página inicial. Depois de selecionar uma fonte, a tela anterior mais recente é exibida para o usuário (neste caso, a página inicial).

A intent usada para alternar entre fontes de mídia pode ser obtida no método MediaSource#getSourceSelectorIntent(), que aceita um booleano popup que retorna uma intent para iniciar cada um dos fluxos descritos acima.

As intents reais são definidas em packages/apps/Car/libs/car-media-common/res/values/config.xml. Para personalizar essa configuração, use sobreposições no momento da criação.

Substituir o app Rádio

Como o app Radio implementa o recurso de navegação de mídia e sessão de mídia, o botão de rádio é exibido no Acesso rápido aos apps. Para impedir a inicialização do app de mídia quando um usuário clica no ícone, dois elementos são necessários. O rádio precisa:

  • ter uma atividade de tela de início;
  • ser declarada como origem personalizada. Para fazer isso, adicione o nome do componente à chave custom_media_packages em car-media-common/res/values/config.xml.

Restrições de direção de UX

A mídia precisa observar todas as restrições de distração da UX. Para isso, a mídia precisa ouvir o CarUXRestrictionManager e implementar todas as políticas.

  • A mídia precisa se conectar à biblioteca Car e receber uma instância de CarUXRestrictionManager.
  • A mídia precisa se inscrever nas atualizações na lista de CarUxRestrictions e implementá-las conforme documentado.
  • Os seguintes pontos são particularmente importantes para mídia: