A interface do usuário do rádio é implementada como um app independente. Para instruções sobre como integrar uma interface do usuário do rádio ao hardware de rádio, consulte Implementar rádio.
A seção a seguir descreve como integrar a interface do rádio com a mídia para oferecer aos usuários uma experiência integrada que permite interagir com fontes de mídia e rádio como se fossem um único app.
Fluxo de usuários para 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 usuários de troca de apps.

Figura 1. Fluxo de usuários para troca de origem de mídia
Para oferecer uma transição perfeita entre o rádio e outros apps na mídia, a
biblioteca car-media-common define intents do Android que podem ser usados para iniciar um seletor de
fonte de mídia. No AOSP, esse seletor é implementado no iniciador de apps, apresentando a mesma interface
para iniciar apps, mas filtrada para mostrar apenas fontes de mídia.
Os OEMs podem usar a implementação atual do iniciador de apps como está ou implementar um seletor de fonte de mídia personalizado.
O seletor pode funcionar de duas maneiras:
- Fluxo normal. Depois de usar o seletor, a fonte selecionada é exibida na mídia para que o usuário possa navegar pelo conteúdo dela.
- Como um switch. Um seletor é usado para alternar fontes, mas a mídia não é mostrada ao usuário. Isso vale para o ícone do seletor na página inicial. Depois de selecionar uma fonte, a tela anterior mais recente é mostrada ao usuário (neste caso, a página inicial).
A intent usada para alternar entre fontes de mídia pode ser obtida com o 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 de tempo de build.
Substituir o app Rádio
Como o app Rádio implementa a navegação e a sessão de mídia, ele é exibido no iniciador de apps. Para evitar que a mídia seja iniciada quando um usuário clica no ícone, são necessários dois elementos. A rádio precisa:
- Ter uma atividade de início.
- Ser declarada como uma fonte personalizada. Para fazer isso, adicione o nome do componente à chave
custom_media_packagesemcar-media-common/res/values/config.xml.
Restrições de UX para direção
A mídia precisa obedecer a todas as restrições de distração ao dirigir. Para isso, a mídia precisa detectar o CarUXRestrictionManager e implementar todas as políticas dele.
- A mídia precisa se conectar à biblioteca Car e receber uma instância de CarUXRestrictionManager.
- A mídia precisa se inscrever para receber atualizações na lista de CarUxRestrictions e implementá-las conforme documentado.
- Os seguintes são particularmente importantes para mídia:
UX_RESTRICTIONS_NO_SETUP. Nesse caso, o fluxo de login precisa ser desativado.UX_RESTRICTIONS_LIMIT_STRING_LENGTH. As mensagens de erro e outros textos fornecidos pelos apps de mídia precisam ser limitados ao comprimento especificado.