Visão geral do Android Automotive OS

Interface de usuário do Android Automotive OS
Figura 1: Android Automotive OS

O Android Automotive OS é uma versão do Android otimizada para uso em carros que se estende além da plataforma Android principal. Carros com o Google integrado usam o Android Automotive OS e vêm com apps e serviços do Google, incluindo Google Play, Gemini, Google Assistente e Google Maps.

Saiba mais sobre o hardware do Android Automotive OS

Para saber mais sobre as especificações mínimas de hardware para dispositivos Android Automotive OS, consulte a seção Requisitos automotivos do Documento de definição de compatibilidade do Android (CDD) para as versões do Android compatíveis com seu app.

Corte da tela

Assim como em outros formatos do Android, os entalhes de tela são compatíveis com dispositivos Android Automotive OS com telas não retangulares. No entanto, o tamanho e o formato dos cortes encontrados em carros podem ser bem diferentes daqueles encontrados em outros formatos. Consulte Trabalhar com encartes de janela e cortes da tela para orientações detalhadas.

Áudio

Os dispositivos Android Automotive OS geralmente são de volume fixo. Para saber mais sobre como isso pode afetar seu app, consulte Trabalhar com dispositivos de volume fixo.

Entender o software do Android Automotive OS

Embora o Android Automotive OS seja baseado no mesmo sistema operacional principal usado por outros formatos, há alguns recursos adicionais exclusivos que podem afetar a maneira como os apps são desenvolvidos e usados.

IU do sistema

Há algumas diferenças no funcionamento desses elementos da interface do sistema em carros que você precisa conhecer.

Ao contrário de outros formatos, não há requisito para que os dispositivos Android Automotive OS tenham uma affordance de retorno de hardware ou software. Quando não são executadas no modo de compatibilidade, as atividades implementadas pelo app precisam incluir affordances de interface para permitir a navegação no app e atender à diretriz de qualidade AN-1.

Layout da barra de sistema

Assim como em outros formatos, o Android Automotive OS inclui barras de sistema, como barras de status e de navegação. Em carros, essas barras podem ser dimensionadas e posicionadas de maneira diferente de outros formatos. Por exemplo, as barras de navegação podem ser posicionadas à esquerda, à direita ou na parte de baixo da tela. Mesmo que haja uma barra de status na parte de cima e uma barra de navegação na parte de baixo, como é o caso da maioria dos smartphones e tablets, o tamanho desses elementos provavelmente será muito maior em carros.

Além disso, embora os cortes da tela em dispositivos móveis geralmente estejam contidos nos limites das barras de sistema, esse não é o caso em carros.

Consulte Trabalhar com encartes de janela e cortes da tela para orientações detalhadas.

Modo imersivo

O Android Automotive OS permite que os OEMs controlem se os apps podem ou não mostrar ou ocultar as barras de sistema para entrar e sair do modo imersivo. Ao impedir que apps ocultem as barras de sistema, os OEMs podem garantir que os controles do veículo, como os de temperatura, fiquem sempre acessíveis na tela.

Restrições de experiência do usuário

As restrições de experiência do usuário (UX) são a capacidade integrada ao Android Automotive OS para lidar com considerações sobre distração do motorista. As restrições de UX são responsáveis por impedir automaticamente o uso de apps que não foram otimizados para uso ao dirigir.

A atividade de bloqueio sendo exibida sobre um app não marcado como
    otimizado para distração.
Figura 2: um app sendo bloqueado por restrições de UX

O conjunto exato de regras que determinam como e quando as restrições de UX são ativas é determinado pelos fabricantes de veículos. Essas regras podem variar de acordo com a região. Por exemplo, o mesmo veículo vendido na Europa pode ter regras diferentes das vendidas nos Estados Unidos.

As regras de restrição de UX também podem variar de acordo com a tela dentro de um veículo. Por exemplo, é possível que uma tela central na linha de visão do motorista seja restrita enquanto o veículo está em movimento, mas uma tela do passageiro não seja.

Se o app precisar se adaptar às restrições de UX, faça referência a elas diretamente. Não tente fazer engenharia reversa da implementação. Por exemplo, se você presumir que as restrições de UX estão ativas quando a marcha não está em "Estacionar", poderá restringir desnecessariamente um app em execução em uma tela de passageiro.

Otimização de distração

Por padrão, as atividades não podem ser executadas enquanto as restrições de UX estão ativas para limitar as distrações do motorista. Para indicar ao sistema que uma atividade deve continuar em execução enquanto o veículo está em movimento, o seguinte elemento <meta-data> pode ser adicionado ao elemento <activity> correspondente.

<activity ...>
  <meta-data android:name="distractionOptimized" android:value="true">
</activity>

Ao desenvolver apps para Android Automotive OS, esses metadados só podem estar presentes no manifesto ao declarar o elemento de manifesto <activity> para o CarAppActivity de um app criado com a biblioteca Car App. Nenhuma outra atividade deve ser marcada como otimizada para evitar distrações. Caso contrário, seu app será rejeitado quando enviado à Google Play Store.

Acessibilidade

O suporte à acessibilidade no Android Automotive OS não é tão amplo quanto em outros formatos. O TalkBack, o Acesso com interruptor e o Voice Access não estão disponíveis em dispositivos com o Android Automotive OS.

As preferências de legendas descritivas são compatíveis com dispositivos Android Automotive OS. Consulte Adotar as configurações de legenda do sistema para detalhes da integração.

Seleção de rede

O Android Automotive OS oferece suporte à seleção de rede por aplicativo (PANS, na sigla em inglês), que permite que os OEMs encaminhem o tráfego de rede móvel para diferentes redes em uma base de aplicativo por aplicativo.

A maioria dos apps usa apenas a rede padrão atribuída a eles e só se beneficia desse recurso. Por exemplo, o OEM pode pagar pelo tráfego de rede do seu app mesmo que o usuário não tenha um plano de dados próprio. Se o app (ou uma das dependências dele) depender de redes diferentes da padrão, talvez ele não se beneficie das preferências definidas pelo OEM. Consulte Ler o estado da rede para mais orientações sobre como usar redes diferentes da padrão.

Recursos do sistema

É possível detectar se um determinado recurso está disponível usando PackageManager::hasSystemFeature e ajustar o comportamento do app de acordo com isso.

Recursos de hardware

Assim como em outros formatos não móveis, os recursos de hardware disponíveis em carros podem ser diferentes dos encontrados em dispositivos móveis.

Orientação da tela

Assim como as TVs, os carros são dispositivos de orientação fixa. Ao contrário das TVs, eles vêm nas orientações retrato e paisagem. Para garantir que os apps criados para o Android Automotive OS possam ser distribuídos para todos os veículos, eles não podem ter requisitos de recursos explícitos ou implícitos para os recursos android.hardware.screen.landscape ou android.hardware.screen.portrait.

Local da rede

Muitos dispositivos Android Automotive OS não implementam a pilha de telefonia usada para fornecer localização de rede e, portanto, não informam o recurso de sistema android.hardware.location.network. Embora a localização de rede possa não estar disponível, o acesso à localização aproximada ainda é compatível. Consulte Localização aproximada no Android Automotive OS.

Recursos de software

Alguns recursos de software comuns em outros formatos podem não ser compatíveis com dispositivos Android Automotive OS. Por exemplo, os seguintes recursos não estão disponíveis em muitos veículos com Android Automotive OS:

Atender aos requisitos de recursos do Google Play

Para serem distribuídos a carros pelo Google Play, os apps criados para o Android Automotive OS precisam incluir um elemento <uses-feature> no arquivo AndroidManifest.xml para o recurso android.hardware.type.automotive:

<manifest ...>
  ...
  <!--
    See Choose a track for Android Automotive OS
    for details on how to choose which value to use for the android:required attribute.
  -->
  <uses-feature
      android:name="android.hardware.type.automotive"
      android:required="[true|false]">
  ...
</manifest>

Além disso, se o app tiver uma declaração explícita de recursos com android:required="true" ou um requisito implícito de recursos para qualquer um dos recursos a seguir, atualize ou remova esses requisitos para que a distribuição do app não seja impedida em veículos compatíveis:

Para recursos declarados explicitamente com android:required="true", você pode fazer uma das seguintes ações:

  • Exclua o elemento <uses-feature> se o recurso não for implicitamente necessário.
  • Declare explicitamente o recurso com android:required="false".

Para recursos implicitamente obrigatórios, faça uma destas ações:

  • Declare explicitamente o recurso com android:required="false".
  • Remova ou atualize os valores do manifesto que introduzem o requisito implícito no recurso.

Mudar as declarações de recursos no manifesto não afeta o funcionamento real do app. Portanto, verifique se ele ainda funciona corretamente sem esses recursos.

Perguntas frequentes

Quais veículos vêm com o Google integrado?

Confira no site Carros com o Google integrado uma lista de OEMs que têm modelos com o Google integrado. As especificações de hardware e outros detalhes do dispositivo podem ser obtidos usando o catálogo de dispositivos do Play Console.