A mídia pertence a um conjunto de aplicativos do sistema (por exemplo, Dialer e App Launcher). Esses aplicativos compartilham estilos e recursos comuns definidos em diferentes níveis na estrutura AOSP.
-
framework/base
. Todos os estilos básicos do Android são definidos aqui. -
packages/services/Car/car_product/overlay
. Contém sobreposições de tempo de compilação que modificam recursos de estrutura/base padrão para produzir a aparência AOSP do Android Automotive OS. Os OEMs podem optar por excluir esta sobreposição e usar a sua própria. -
packages/apps/Car/libs/car-ui-lib
. Esta biblioteca define componentes e recursos AAOS comuns a aplicativos de sistema e aplicativos desagregados projetados para personalização. Para obter detalhes, consulte o Guia de integração da biblioteca Car UI . -
packages/apps/Car/libs/car_app_common
. Cores e estilos comuns compartilhados entre aplicativos do sistema automotivo. Os OEMs podem usar sobreposições para personalizar esses elementos (semelhante acar_product/overlay
descrito acima). -
packages/apps/Car/libs/car_media_common
. Contém elementos compartilhados entre Media e outras UIs de mídia. Por exemplo, o widget Mídia da tela inicial. packages/apps/Car/Media.
Todos os aplicativos do sistema usam seu próprio tema, que se estende deTheme.CarUi
, conforme definido emcar-ui-lib
.
O Android Automotive AOSP oferece duas apresentações de mídia.
- IU de mídia. Permite que os usuários façam login, naveguem pelo conteúdo e usem controles de reprodução detalhados.
- Widget de mídia da tela inicial. Permite o uso dos principais recursos de controle de reprodução de mídia na tela inicial.
Interface de usuário de mídia
Esta figura descreve a estrutura da UI de mídia:
Figura 1. Interface do usuário de mídia.
Para obter detalhes sobre as diretrizes de UX e UI, bem como a estrutura espacial dos diferentes componentes da mídia, consulte Modelo espacial .
AppBarView: barra de ferramentas
A barra de ferramentas Media UI é um componente compartilhado com outros aplicativos do sistema, como Dialer e Radio. Para saber como personalizar a barra de ferramentas, consulte o Car UI Library Integration Guide .
Tamanho máximo da arte da mídia
Para notificar os aplicativos de mídia sobre o tamanho máximo da arte a ser buscada, você pode sobrepormedia_items_bitmap_max_size_px
em seu sistema. Para fazer isso, envie EXTRA_MEDIA_ART_SIZE_HINT_PIXELS
como dica de root. Como resultado, você economizará largura de banda ao baixar imagens. Para saber mais, consulte MediaConstants em developer.android.com.Navegar pelo fragmento
A navegação consiste principalmente em um Car UI RecyclerView , que lida com a posição da barra de rolagem, setas e margens e pode navegar por itens de diferentes tipos, como cabeçalhos, itens de grade, itens de grade de ícones, itens de lista e itens de lista de ícones.
Controles de reprodução minimizados
Quando o fragmento de navegação está sendo exibido e quando um item de mídia é selecionado, uma visualização minimizada dos controles de reprodução é exibida. A figura a seguir ilustra a estrutura desta visualização:
Figura 2. Controles de reprodução minimizados.
Lista de navegação
Os desenvolvedores podem usar um conjunto de dicas de estilo (consulte Aplicar estilos de conteúdo ) para personalizar a apresentação do conteúdo da navegação de mídia. Os OEMs devem aderir a esses estilos, ajustando a apresentação ao seu sistema de design.
Os tipos de itens suportados e os respectivos layouts estão localizados da seguinte forma:
-
LIST_ITEM
(media_browse_list_item.xml
). Normalmente usado para episódios de um podcast, como itens de lista de reprodução e favoritos. -
ICON_LIST_ITEM
(media_browse_list_icons_item.xml
). Usado para categorias ou opções de menu, nas quais a imagem incluída no item de mídia não é a capa do álbum, mas um ícone. -
GRID_ITEM
(media_browse_grid_item.xml
). Geralmente usado para itens reproduzíveis, como músicas ou playlists. -
ICON_GRID_ITEM
(media_browse_grid_icons_item.xml
). Usado para categorias semelhantes aICON_LIST_ITEM
. -
HEADER
(media_browse_header_item.xml
). Usado para organizar itens de mídia em seções.
Tela de reprodução
Para exibir esta tela, expanda os controles de reprodução minimizados:
- Atualmente reproduzindo medados de itens de mídia (incluindo título e subtítulo).
- Controles de reprodução completos.
- Fila de reprodução (usada para exibir os itens reproduzidos recentemente ou os próximos itens a serem reproduzidos).
Os componentes da tela Reprodução são identificados nas figuras abaixo.
Figura 3. Tela de reprodução.
A tela de reprodução não compartilha a barra de ferramentas com o restante do aplicativo. Em vez disso, esta tela gerencia individualmente os elementos na parte superior da tela.
Atribuição de formatação de áudio
Quando os aplicativos definem KEY_CONTENT_FORMAT_TINTABLE_LARGE_ICON_URI
ou KEY_CONTENT_FORMAT_TINTABLE_SMALL_ICON_URI
nos extras do item de mídia atualmente em reprodução. Os OEMs devem renderizar o drawable vetorial apropriado conforme indicado pelo URI.
A versão grande do ícone Content Format deve ser usada na visualização principal de reprodução. Em visualizações secundárias, como uma barra de reprodução menor, os OEMs podem usar a versão menor do ícone Formato de Conteúdo . O ContentFormatView
renderiza o ícone ideal com base em seu atributo logoSize
.
Links de reprodução
Quando os aplicativos definemKEY_SUBTITLE_LINK_MEDIA_ID
ou KEY_DESCRIPTION_LINK_MEDIA_ID
, os OEMs devem renderizar a legenda ou a descrição de uma forma que sugira que eles podem ser tocados e, em seguida, abrir a visualização Navegar para mostrar o item de mídia vinculado ao toque do usuário.Controles de reprodução
A tela Reprodução inclui um conjunto estendido de controles de reprodução, organizados em linhas de controle . A linha secundária (exibida abaixo como a linha na parte superior) só será exibida se o espaço na primeira linha não for suficiente para exibir todas as ações retornadas pelo aplicativo de mídia de PlaybackStateCompat#getActions()
.
Figura 4. Controles de reprodução.
Os OEMs podem personalizar os ícones de ações padrão, mas devem apresentar ícones de ação personalizados conforme são fornecidos pelos aplicativos de mídia.
Widget de mídia da tela inicial
Este widget é implementado como um fragmento em car-media-common
. Este fragmento inclui uma versão minimizada da tela Playback descrita acima. Aplicam-se todas as mesmas regras e capacidades de personalização.
Figura 5. Widget de mídia da tela inicial.
O botão Seletor de aplicativos exibido acima usa a funcionalidade de troca descrita em Fluxo de usuário de troca de fonte de mídia .
Para usar o ícone de fonte de mídia atual para o botão Seletor de aplicativos, sobreponha o sinalizador use_media_source_logo_for_app_selector
definido em platform/packages/apps/Car/libs/car-media-common/res/values/bools.xml
e defina-o como true
. Com esta alteração, o ícone da fonte de mídia no lado oposto da barra de ferramentas do aplicativo ficará oculto. A personalização também se aplica ao aplicativo Media Center e ao aplicativo Rádio de referência.
Figura 6. Botão de seleção de aplicativo de mídia.
Layout dos botões Reproduzir, Pausar e Parar
O layout do botão Reproduzir/Pausar/Parar pode ser personalizado para "Reproduzindo agora" e para a visualização dos controles de reprodução minimizados. Ambos os layouts são definidos em packages/apps/Car/libs/car-media-common/res/layout/
.
Para personalizar layouts de botões, aplique sobreposições de tempo de construção a play_pause_stop_button_layout.xml
e minimized_play_pause_stop_button_layout.xml
.
Destaque o item atual na fila de reprodução
O estado do item da fila de reprodução atual é definido como selected
, para que possa ser personalizado usando recursos de estado, como listas de estados de cores (consulte Recurso de lista de estados de cores ) e drawables de lista de estados (consulte Recursos desenháveis ). Para aplicar as alterações de estilo necessárias, você pode substituir o layout do item da fila packages/apps/Car/Media/res/layout/queue_list_item.xml ou um separado
Você também pode mostrar um ícone próximo ao item atual da fila de reprodução:
- Sobreponha o sinalizador booleano
show_icon_for_now_playing_queue_list_item
definido em packages/apps/Car/Media/res/layout/queue_list_item.xml ou em um separadoPara ocultar o cronômetro de reprodução, defina
show_time_for_now_playing_queue_list_item
comofalse
. - Use um drawable de estado, por exemplo, primeiro plano ou plano de fundo da visualização raiz do item (consulte packages/apps/Car/Media/res/layout/queue_list_item.xml ou uma visualização separada na hierarquia de visualização do item.
Figura 7. Item atual destacado na fila de reprodução.