Visão geral da IHM

Android Automotive é uma solução de plataforma de infoentretenimento para automóveis fornecida com o Android Open Source Project (AOSP). Os artigos neste tópico apresentam os principais conceitos e componentes fornecidos pela IU do Android Automotive System e pelos aplicativos principais necessários para criar um sistema de interface homem-máquina (HMI) eficaz para OEMs, desenvolvedores terceirizados e usuários finais.

  • Guia de integração de host AOSP . O App Host permite que aplicativos automotivos 3P renderizem componentes de interface de usuário (IU) no estilo OEM em seu nome.
  • Estrutura de configurações do carro . Car Settings fornece uma interface de usuário visual centrada no carro, otimizações básicas de distração do motorista e pontos de entrada de personalização adicionais para OEMs.
  • Guia de integração da biblioteca Car UI . A Car UI Library fornece uma estrutura de desenvolvimento de UI para permitir que todos os aplicativos presentes no carro obtenham consistência e personalização.
  • Personalize os ícones do sistema da barra de status . A barra de status é um componente da IU do sistema Android usado para exibir informações importantes de forma persistente aos usuários. Aprenda como personalizar os ícones do sistema da barra de status.
  • Notificações de alerta . Aprenda como personalizar notificações de alerta.
  • Discador . Use este aplicativo do sistema Android para implementar uma experiência otimizada para distração (DO) para chamadas Bluetooth, navegação de contatos e gerenciamento de chamadas.
  • Meios de comunicação . Com apenas algumas configurações e um serviço, os desenvolvedores podem ampliar os aplicativos de mídia existentes. Embora os aplicativos devam aderir ao modelo Automotive Media, os desenvolvedores podem personalizar cores, fontes, ícones do modelo e muito mais para criar uma experiência de marca.
  • Notificações . Saiba como alterar a aparência e as configurações das notificações.

Terminologia

Estes termos são usados ​​em HMI e artigos relacionados:

Prazo Definição
Aplicativos principais O principal conjunto de aplicativos essenciais para a funcionalidade do sistema, incluindo Configurações, Rádio, HVAC, Mídia, Discador e Teclado.
Documento de definição de compatibilidade (CDD) Enumera os requisitos que devem ser atendidos para que os dispositivos sejam compatíveis com a versão mais recente do Android.
Conjunto de testes de compatibilidade (CTS) Conjunto de testes gratuito de nível comercial, disponível para download em Downloads do conjunto de testes de compatibilidade .
Costumização O exercício de modificar uma implementação AOSP para atender aos requisitos de um OEM. Normalmente, isso envolve o uso de sobreposições de recursos para aplicar alterações cosméticas e, ao mesmo tempo, garantir a conformidade com o CDD, CTS e todas as diretrizes relevantes de experiência do usuário.
Aplicativos heróis Um conjunto de aplicativos essenciais para todos os aspectos do Android, incluindo funcionalidade, capacidade de atualização, ecossistema de desenvolvedores terceirizados e usuários finais. Os aplicativos Hero incluem notificações, configurações, mídia e centro de comunicação/discador. As implementações AOSP correspondentes devem ser de qualidade de produção.
Sobreposições de recursos Para afetar a renderização da interface do usuário, use este mecanismo para substituir cores, alterar dimensões, ativar o desenho e aplicar recursos de layout em tempo de compilação (mais comum) ou em tempo de execução (Runtime Resource Overlays (RRO)).
IU do sistema A interface do usuário fora de um aplicativo que pertence ao sistema, como barra de navegação, barra de status, tela de bloqueio e caixa de diálogo de volume.
Tema Uma coleção de cores e estilos usados ​​para determinar a aparência dos componentes e aplicativos que herdam o tema.
Experiência do usuário (UX) O campo do design da interface do usuário (UI) e sua usabilidade.

Costumização

A implementação AOSP da UI do sistema e de outros aplicativos principais do sistema serve como uma base sólida para iniciar o processo de desenvolvimento de IHM. O exercício de modificar a implementação do AOSP (principalmente por meio do uso de sobreposições de recursos) para atender à marca, aos negócios e aos requisitos legais de um OEM é chamado de personalização .

Embora o sistema geral seja projetado e construído para ser flexível, espera-se que diferentes componentes sejam personalizados em diferentes graus:

  • IU do sistema. O OEM pode personalizar ou substituir a implementação do AOSP dentro dos limites permitidos pelo CDD e CTS e quaisquer outras diretrizes de UX aplicáveis.

  • Aplicativos de sistema não-heróis (também conhecidos como referência ) . Os OEMs podem personalizar ou substituir a implementação do AOSP.

  • Aplicativos heróis . Cada aplicativo vem com um conjunto de diretrizes detalhadas de personalização. Os OEMs são fortemente encorajados a usar a implementação do AOSP e depois personalizá-la dentro dos limites permitidos por essas diretrizes.

Configuração de densidade

Para garantir que os elementos da UI sejam renderizados corretamente de acordo com a configuração de exibição física, a propriedade de densidade deve ser definida como o bucket ( Display Metrics ) que corresponda mais de perto à densidade física, como esta entrada no arquivo de compilação:

PRODUCT_PROPERTY_OVERRIDES := \
        ro.sf.lcd_density=160

Mecanismo de restrições de UX

CarUxRestrictionsManager fornece um gancho para que os aplicativos ouçam mudanças relacionadas ao estado de condução para modificar a experiência do usuário de forma adequada. Os OEMs podem sobrepor o arquivo de configuração em packages/services/Car/service/res/xml/car_ux_restrictions_map.xml para afetar o comportamento do sistema.

Tema do sistema

O tema que prescreve o conjunto padrão de itens para todo o sistema, como cores e estilos de texto, é DeviceDefault . Os OEMs são incentivados a iniciar o processo geral de personalização modificando o tema DeviceDefault. Por padrão, a IU do sistema e todos os aplicativos do sistema no AOSP herdam deste tema. Os aplicativos de sistema desenvolvidos por OEM também são incentivados a herdar o DeviceDefault. Não se espera que aplicativos desenvolvidos por terceiros herdem DeviceDefault, mas usem Theme.Car fornecido na biblioteca androidx.car . Os arquivos estão localizados da seguinte forma:

  • Essencial . /frameworks/base/core/res/res/values/themes_device_defaults.xml
  • Cores . /frameworks/base/core/res/res/values/colors_car.xml
  • Estilos . /frameworks/base/core/res/res/values/styles_car.xml
  • Sobreposição de carro.
    /packages/services/Car/car_product/overlay/.../values/themes_device_defaults.xml

Espera-se que os OEMs tenham uma estrutura de sobreposição paralela ao diretório car_product em seu diretório de fornecedores que estenda ainda mais a sobreposição car_product .

Aplicativo Tema Playground

Este aplicativo agiliza o processo de personalização do tema DeviceDefault , visualizando todos os atributos do tema em um só lugar. Além disso, ao comparar como certos estilos são renderizados neste aplicativo em comparação com outros aplicativos do sistema, os desenvolvedores podem depurar rapidamente problemas de tema. Este aplicativo está disponível em:

  /packages/services/Car/tests/ThemePlayground

IU do sistema

A UI do sistema inclui toda a UI em /frameworks/base , principalmente em /frameworks/base/packages/CarSystemUI . Isso inclui a barra de navegação, barra de status, tela de bloqueio, caixa de diálogo de volume, brindes, seletor de usuário e caixas de diálogo de permissão. Os OEMs podem personalizar extensivamente os componentes da UI do sistema por meio de sobreposições de recursos e temas, desde que cada um esteja dentro dos requisitos do CDD, CTS e outras diretrizes de UX aplicáveis.

Aplicativos do sistema

O Android Automotive inclui um conjunto de aplicativos essenciais do sistema, essenciais para a funcionalidade geral do sistema. Destes, Centro de Comunicação, Mídia, Notificações e Configurações são considerados aplicativos heróis .

  • Centro de Comunicação
  • AVAC
  • IME (teclado)
  • Iniciador (tela inicial)
  • Reprodutor de mídia local
  • meios de comunicação
  • Mensageiro
  • Notificações
  • Rádio
  • Configurações

Tela inicial

A tela inicial, conhecida como Car Launcher , é a página inicial da experiência HMI. A implementação do AOSP serve apenas como referência e espera-se que os OEMs substituam a implementação pela sua própria, que muitas vezes combina navegação, reprodução de mídia, comunicação e outros estados do sistema, conforme necessário. Freqüentemente, o aplicativo Car Launcher exibe os aplicativos disponíveis no sistema. Para saber como lidar com eventos como recentes, alterações de pacote e aplicativos headless (sem atividade de inicialização), consulte a implementação de referência.

Notificações

As notificações são um componente integral do sistema operacional Android e as mesmas construções (incluindo notificação de alerta, lista/centro de notificação, APIs de notificação, classificação e ações inline) foram incluídas no Android Automotive. Para obter detalhes, consulte Visão geral das notificações do dispositivo portátil. Para otimizar os casos de uso automotivo, foram feitas as seguintes modificações (em comparação com a pilha de notificações portáteis):

  • Redução no conteúdo geral da notificação visível aos usuários. Remoção de reprodução de mídia contínua, navegação contínua e notificações de serviço em primeiro plano "sem importância" (importância BAIXA e abaixo) de aplicativos do sistema da lista/centro de notificação, com o entendimento de que essas notificações são tornadas redundantes (por exemplo, cluster mostrando o estado da mídia ) ou não são úteis.

  • Remoção de controles contextuais complexos (como toque longo e controles baseados no comprimento do deslize).

  • Respeitando a configuração do mecanismo de restrições de UX.

    • A visualização do conteúdo da notificação de mensagens pode ser ocultada com base no estado da unidade.
    • Todas as strings limitadas no comprimento máximo.
  • Adição de novas categorias de notificação especificamente para carros no Android 9, disponíveis apenas para aplicativos de sistema integrados executados como android.uid.system .

  • CATEGORY_CAR_EMERGENCY . Classificado no topo da lista de notificações. Ignora os controles de Não Perturbe (DND).

  • CATEGORY_CAR_WARNING . Classificado abaixo de emergência e acima de outros (ignora DND).
  • CATEGORY_CAR_INFORMATION . Classificada com o restante das notificações com base na "importância" e na atualidade.

A implementação ponta a ponta da pilha de notificação, das APIs de notificação à IU, é considerada um aplicativo heróico . Para garantir a interoperabilidade consistente da API em todas as HUs e maximizar a capacidade de atualização, os OEMs são fortemente incentivados a adotar a implementação do AOSP e depois personalizá-la levemente.

Costumização

O tema DeviceDefault padrão e as sobreposições de recursos se aplicam. Um número muito limitado de botões de personalização comportamental está disponível em:

packages/apps/Car/Notification/res/values/config.xml

Configurações

O aplicativo Configurações ( Car Settings ) é um dos aplicativos principais que expõe botões, que o usuário pode usar para configurar aspectos do sistema operacional Android e do resto do carro. O aplicativo Configurações expõe mais de 200 recursos do sistema operacional, que estão intimamente ligados a cada versão principal do Android. Para permitir a capacidade de atualização e evitar a fragmentação, os OEMs são fortemente incentivados a adotar a implementação do AOSP e depois personalizá-la (em vez de bifurcar a implementação).

Costumização

O aplicativo Configurações leva em consideração a personalização e expõe vários caminhos para personalização.

  • Tema. Permite a personalização visual de como cada tipo de objeto Preferência deve ser renderizado, incluindo:

    • Preference.DeviceDefault.CheckBoxPreference

    • Preference.DeviceDefault.DialogPreference.EditTextPreference

  • Personalização de hierarquia. Para ativar:

    • Inicie um fragmento raiz arbitrário, sobreponha o valor de config_settings_hierarchy_root_fragment no arquivo intitulado Settings/res/values/config.xml

    • Personalização de itens como ordem, agrupamento, texto e ícones, sobreposição Settings/res/xml/*.xml

  • Injeção estática. Ao configurar um projeto de sobreposição, os OEMs podem adicionar telas proprietárias definindo e adicionando classes Fragment e Controller adicionais à hierarquia.

  • Injeção dinâmica . Se um aplicativo separado ( apk ) hospedar uma tela Configurações que deve ser vinculada ao aplicativo Configurações principal, o aplicativo separado poderá ser injetado dinamicamente. Para obter mais informações, consulte Preferências dinâmicas .

meios de comunicação

Media é um aplicativo principal que fornece a experiência do usuário front-end em nome de aplicativos de mídia que implementam as APIs MediaSession e MediaBrowser . Os aplicativos de mídia podem ser aplicativos de terceiros (como Spotify e Pandora), bem como outras fontes de mídia, como streaming Bluetooth (BT) e mídia local.

Centenas de aplicativos de mídia estão disponíveis no Android Auto ( Projection ), e todos implementam essas APIs de mídia conforme descrito em Fornecimento de reprodução de áudio para Auto . As APIs de mídia evoluem com cada versão principal do Android e com os lançamentos da biblioteca Androidx . Para garantir a interoperabilidade da API em todos os aplicativos de mídia e versões futuras do Android, os OEMs são fortemente incentivados a adotar a implementação do AOSP e personalizá-la.

Costumização

O tema padrão por meio do tema DeviceDefault também se aplica à mídia. Além disso, é possível personalizar ainda mais a aparência com sobreposições de recursos, desde que a personalização esteja dentro dos limites das diretrizes de UX.

Mídia USB e fontes de mídia

Na medida do possível, é altamente recomendável que essas fontes de mídia sejam conectadas ao Media por meio de uma implementação das APIs MediaSession e MediaBrowser (isso vale para qualquer aplicativo de mídia de terceiros). Veja o aplicativo LocalMediaPlayer no AOSP. Este aplicativo exibe arquivos de mídia local e é exibido como uma fonte em Mídia.