Visão geral da IHM

O Android Automotive é uma solução de plataforma de infoentretenimento veicular 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 os principais aplicativos necessários para criar um sistema de interface homem-máquina (IHM) eficaz para OEMs, desenvolvedores terceirizados e usuários finais.

  • Guia de Integração de Host AOSP . O App Host permite que aplicativos de carro 3P renderizem componentes de interface de usuário (UI) de estilo OEM em seu nome.
  • Estrutura de configurações do carro . As configurações do carro fornecem 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 de interface do usuário do carro . A Car UI Library fornece uma estrutura de desenvolvimento de interface do usuário para permitir que todos os aplicativos presentes no carro obtenham consistência e personalização.
  • Personalizar os ícones do sistema da barra de status . A barra de status é um componente da interface do usuário do sistema Android usada para exibir informações importantes para os usuários de forma persistente. Saiba como personalizar os ícones do sistema da barra de status.
  • Notificações de Alerta . Saiba como personalizar as 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.
  • Mídia . Com apenas algumas configurações e um serviço, os desenvolvedores podem estender os aplicativos de mídia existentes. Embora os aplicativos devam aderir ao modelo de mídia automotiva, os desenvolvedores podem personalizar cores, fontes, ícones 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 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 de nível comercial gratuito, disponível para download em Downloads do Compatibility Test Suite .
Costumização O exercício de modificar uma implementação de 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 de terceiros e usuários finais. Os aplicativos Hero incluem Notificações, Configurações, Mídia e o Centro de Comunicação/Discador. As implementações de AOSP correspondentes devem ser de qualidade de produção.
Sobreposições de recursos Para afetar a renderização da interface do usuário, use esse mecanismo para substituir cores, alterar dimensões, habilitar 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 a 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 de interface do usuário (UI) e sua usabilidade.

Costumização

A implementação AOSP da interface do usuário do sistema e outros aplicativos principais do sistema servem como uma base sólida para iniciar o processo de desenvolvimento da HMI. O exercício de modificar a implementação do AOSP (principalmente por meio do uso de sobreposições de recursos) para atender aos requisitos legais, comerciais e de marca 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 de personalização detalhadas. Os OEMs são fortemente encorajados a usar a implementação AOSP e personalizá-la dentro dos limites permitidos por essas diretrizes.

Configuração de densidade

Para garantir que os elementos da interface do usuário sejam renderizados corretamente de acordo com a configuração de exibição física, a propriedade de densidade deve ser definida para o bucket ( Display Metrics ) que corresponde mais à 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 os aplicativos ouvirem as alterações relacionadas ao estado de condução para modificar a experiência do usuário adequadamente. 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 de 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 interface do usuário do sistema e todos os aplicativos do sistema no AOSP herdam desse tema. Os aplicativos de sistema desenvolvidos por OEM também são incentivados a herdar DeviceDefault. Aplicativos desenvolvidos por terceiros não devem herdar DeviceDefault, mas usar Theme.Car fornecido na biblioteca androidx.car . Os arquivos estão localizados da seguinte forma:

  • Núcleo . /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 estende ainda mais a sobreposição car_product .

Aplicativo temático do 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, comparando como determinados estilos são renderizados neste aplicativo em comparação com outros aplicativos do sistema, os desenvolvedores podem depurar rapidamente os problemas do tema. Este aplicativo está disponível em:

  /packages/services/Car/tests/ThemePlayground

IU do sistema

A interface do usuário do sistema inclui toda a interface do usuário 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 amplamente os componentes da interface do usuário 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 principais 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
  • HVAC
  • IME (teclado)
  • Iniciador (tela inicial)
  • Leitor 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 de destino da experiência HMI. A implementação AOSP serve apenas como referência e espera-se que os OEMs substituam a implementação pela sua própria, que geralmente combina navegação, reprodução de mídia, comunicação e outros estados do sistema, conforme necessário. Muitas vezes, 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 do iniciador), 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/central de notificações, APIs de notificação, classificação e ações em linha) 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, as seguintes modificações foram feitas (em comparação com a pilha de notificação portátil):

  • Redução no conteúdo geral da notificação visível para os usuários. Remoção de reprodução de mídia em andamento, navegação em andamento e notificações de serviço em primeiro plano "sem importância" (importância de LOW e abaixo) de aplicativos do sistema da lista/centro de notificações, com o entendimento de que essas notificações são 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 furto).

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

    • A visualização do conteúdo da notificação de mensagens pode estar oculta 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 agrupados executados como android.uid.system .

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

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

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

Costumização

O tema padrão DeviceDefault 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 ( Configurações do carro ) é um dos aplicativos heróis 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 no sistema operacional, que são fortemente acoplados a cada versão principal do Android. Para habilitar a capacidade de atualização e evitar a fragmentação, os OEMs são fortemente incentivados a adotar a implementação do AOSP e 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.

  • Tematização. Permite a personalização visual de como cada tipo de objeto Preference deve ser renderizado, incluindo:

    • Preference.DeviceDefault.CheckBoxPreference

    • Preference.DeviceDefault.DialogPreference.EditTextPreference

  • Personalização da hierarquia. Para habilitar o:

    • Inicie em um fragmento de 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 as 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 herói 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 Como fornecer reprodução de áudio para Auto . As APIs de mídia evoluem com cada versão principal do Android e com as versões 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 ao Media. 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.

Outros aplicativos de mídia

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). Consulte o aplicativo LocalMediaPlayer no AOSP. Este aplicativo exibe arquivos de mídia local e é exibido como uma fonte em Mídia.