O Android Automotive OS permite que os usuários executem apps de vídeo no sistema de infoentretenimento de um carro estacionado.
Testar o app em um emulador do Android Automotive OS
Para começar a criar apps para o Android Automotive OS, a primeira coisa a fazer é testar seu app para dispositivos móveis (smartphones e tablets) em um emulador do Android Automotive OS. Siga as etapas em Testar apps Android para carros e configure o emulador. Depois, execute o app seguindo estas instruções.
Ao executar o app, tenha cuidado com problemas de compatibilidade, como estes:
- Telas de infoentretenimento têm orientações fixas. De acordo com as diretrizes de qualidade de apps para carros, os apps precisam oferecer suporte às orientações de retrato e paisagem.
- As APIs disponíveis em outros dispositivos podem não estar presentes no Android Automotive OS. Esse é o caso de algumas APIs do Google Play Services, por exemplo. Consulte Desativar recursos para ver mais detalhes sobre como lidar com esses problemas.
Configurar os arquivos de manifesto do app
Há várias entradas de manifesto que o app precisa ter para ser direcionado ao Android Automotive OS. Essas entradas permitem que os apps destinados ao Android Automotive OS sejam enviados à Play Store usando um formato separado do Automotive e submetidos a um processo de análise manual para garantir que sejam seguros para uso no carro. Saiba mais em Distribuir apps Android para carros.
Exigir recursos do Android Automotive OS
Para aparecer na Play Store em um carro, os apps de vídeo criados para o Android Automotive OS
precisam incluir estes elementos <uses-feature>
e <uses-library>
no arquivo AndroidManifest.xml
.
<manifest ...>
...
<uses-feature
android:name="android.hardware.type.automotive"
android:required="true" />
...
<application ...>
...
<uses-library
android:name="android-automotive-video"
android:required="true"/>
...
</application>
</manifest>
Os apps enviados para faixas não automotivas não podem declarar o elemento <uses-feature>
acima, porque não dependem de hardware específico para carros. Por isso, para entregar o
mesmo app em dispositivos automotivos e não automotivos, ele precisa ter
pelo menos duas variações: uma para dispositivos automotivos e outra para dispositivos
móveis (como smartphones e tablets). Para mais informações sobre como criar essas
variações, consulte estas páginas:
As duas variações do app podem ter o mesmo nome de pacote, mas precisam ter códigos de versão diferentes, já que elas vão ser enviadas separadamente para as faixas da Play Store.
Como alternativa, em vez de usar variações separadas, os apps podem usar nomes de pacotes separados para os APKs de dispositivos móveis e automotivos ou pacotes de app. Se quiser entender as desvantagens de cada abordagem, consulte a seção Nomes de pacote no guia para desenvolvedores de apps de mídia.
Além do que já foi mencionado, os apps criados para o Android
Automotive OS precisam incluir estes elementos
<uses-feature>
no
<manifest>
raiz.
<uses-feature
android:name="android.hardware.wifi"
android:required="false"/>
<uses-feature
android:name="android.hardware.screen.portrait"
android:required="false"/>
<uses-feature
android:name="android.hardware.screen.landscape"
android:required="false"/>
Definir explicitamente esses recursos como não obrigatórios garante que o app não entre em conflito com os recursos de hardware disponíveis nos dispositivos Android Automotive OS.
Marcar como um app de vídeo
Para indicar que você tem um app automotivo com suporte para vídeos, adicione um arquivo XML
chamado automotive_app_desc.xml
ao diretório res/xml/
no projeto.
Esse arquivo precisa incluir o seguinte conteúdo:
<automotiveApp>
<uses name="video"/>
</automotiveApp>
No elemento <application>
do manifesto, adicione o seguinte elemento
<meta-data>
, que referencia o arquivo XML:
<meta-data
android:name="com.android.automotive"
android:resource="@xml/automotive_app_desc"/>
Verificar se não há atividades otimizadas para distração
Atualmente, os apps de vídeo só podem ser usados quando o carro está estacionado. Dessa forma, nenhum
elemento <activity>
precisa
incluir o elemento <meta-data>
:
<!-- NOT ALLOWED -->
<meta-data
android:name="distractionOptimized"
android:value="true"/>
Sem esses metadados, as atividades do app vão ser bloqueadas automaticamente
pelo SO quando o veículo estiver em movimento a fim de reduzir as distrações para o motorista.
No app, isso vai acontecer como um callback onPause
do ciclo de vida, em que você precisa garantir que a reprodução de vídeo e áudio
do app esteja pausada.
Otimizar o app para o Android Automotive OS
Para oferecer aos usuários a melhor experiência possível, pode ser necessário ativar ou desativar algumas funcionalidades, dependendo se o app está sendo executado em um carro ou não.
Desativar recursos
Se um app para dispositivos móveis estiver disponível no Android Automotive OS, alguns recursos e funcionalidades poderão não ser relevantes ou não estar disponíveis. Por exemplo, carros geralmente não fornecem acesso a câmeras. Além disso, apenas um subconjunto do Google Play Services está disponível no Android Automotive OS. Veja mais detalhes em Google Play Services para carros.
Você pode usar a API PackageManager.hasSystemFeature
para verificar o recurso
FEATURE_AUTOMOTIVE
a fim de detectar se o app está sendo executado no Android Automotive OS.
Kotlin
val packageManager: PackageManager = ... // Get a PackageManager from a Context val isCar = packageManager.hasSystemFeature(PackageManager.FEATURE_AUTOMOTIVE) if (isCar) { // Enable or disable a given feature }
Java
PackageManager packageManager = ... // Get a PackageManager from a Context boolean isCar = packageManager.hasSystemFeature(PackageManager.FEATURE_AUTOMOTIVE) if (isCar) { // Enable or disable a given feature }
Como alternativa, caso o app também tenha um componente do Android Auto, pode fazer sentido usar a API CarConnection da biblioteca Car App para detectar se o app está sendo executado no Android Automotive OS, no Android Auto ou se não está conectado a um carro.
No modo picture-in-picture, siga as práticas recomendadas definidas para conferir se o recurso está disponível ou não, e reagir de forma adequada.
Lidar com cenários off-line
Embora os carros estejam cada vez mais conectados à Internet, os apps precisam ser capazes de ser executados sem uma conexão de Internet, como nos casos abaixo:
- Os fabricantes de automóveis podem oferecer dados móveis como parte de um pacote de assinatura, que os usuários podem ou não comprar.
- Os usuários podem ativar os dados móveis, mas o acesso pode ser limitado em algumas áreas, assim como acontece com um smartphone.
- Os carros podem ou não ter rádio Wi-Fi. Nesse caso, um carro pode nunca entrar no alcance do Wi-Fi, ou um OEM pode ter desativado o Wi-Fi para dar preferência a redes celulares.
Os apps precisam estar preparados para lidar com esses cenários e fazer uma degradação suave, por exemplo, oferecendo conteúdo off-line. Se quiser mais informações, consulte as práticas recomendadas para otimizar redes.
Testar apps de vídeo no Android Automotive OS
Os desenvolvedores podem seguir as instruções disponíveis em Testar apps Android para carros. Atualmente, apenas os emuladores do SDK 30 e 32 disponíveis pelo Android Studio incluem a biblioteca android-automotive-video. Portanto, eles precisam ser usados para testar o build do Automotive OS do seu app. Os emuladores de SDK mais antigos não têm a biblioteca, o que faz com que as instalações de adb dos apps que exigem a biblioteca falhem. A biblioteca pode ser incluída em veículos de produção em níveis mais baixos do SO.
Perguntas frequentes
Há suporte para o DRM da Widevine?
Sim, o Android Automotive OS oferece suporte ao Widevine DRM L3.