Implementar rádio com mídia

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.

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

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_packages em car-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: