Leve seu app para os veículos com o Android Auto ou o Android Automotive OS. Use uma arquitetura de app que funcione para os dois casos de maneira que todos os usuários possam aproveitar seu app.
O que é o Android para carros?
Um app de mídia para carros pode oferecer uma maneira para os usuários conectarem a vida digital aos carros de forma integrada. Ao estender os mesmos apps para smartphones e disponibilizá-los para automóveis, você cria uma experiência melhor para o usuário. Para fazer isso, integre o app ao Android Auto ou ao Android Automotive OS.
Apps Android para carros precisam evitar distrair o motorista acima de tudo. É possível minimizar as distrações seguindo as práticas recomendadas, como o uso de comandos de voz e um design visual muito prático. Dessa forma, o app de mídia pode mostrar informações corretas ao motorista somente quando elas forem relevantes e usar padrões previsíveis para tarefas comuns.
Android Auto
O Android Auto oferece uma experiência de app otimizada para motoristas que têm um smartphone Android com o app Android Auto e um carro ou sistema de som automotivo compatível. Eles podem usar seu app diretamente na tela do carro conectando o smartphone. Ative o Android Auto para se conectar ao seu app para smartphone criando serviços que o Android Auto usa para exibir uma interface otimizada para motoristas.
Android Automotive OS
O Android Automotive OS é um sistema de infoentretenimento do Android integrado aos veículos. O sistema do carro é um dispositivo Android autônomo otimizado para veículos. Com o Android Automotive OS, o usuário instala seu app diretamente no carro, e não no smartphone.
Categorias de apps compatíveis
Os apps de mídia permitem que os usuários procurem e toquem músicas, rádios, audiolivros e outros conteúdos de áudio no carro. Para mais informações, consulte Criar apps de reprodução de áudio para carros. Para mais informações, consulte Criar apps de mídia para carros.
Os apps de mídia são criados usando MediaLibraryService
e MediaSession
.
No Android
Automotive OS, você também pode criar telas de login e configurações (para uso enquanto o veículo está
estacionado) usando visualizações ou o Compose.
Apps de vídeo permitem que os usuários assistam streaming de vídeos enquanto o carro está estacionado. O objetivo principal desses apps é mostrar streaming de vídeo. Esses apps são criados usando Views ou Compose. Para mais informações, consulte Criar apps de reprodução de vídeo para o Android Automotive OS. Mais informações estão disponíveis em Criar apps de vídeo para o Android Automotive OS.
Criar apps de reprodução de áudio para carros
Este guia pressupõe que você já tenha um app básico de reprodução de mídia. Caso contrário, acesse Criar um app player de mídia básico para começar.
Este guia informa o que você precisa fazer, incluindo links para outros recursos com orientações específicas.
Componentes de reprodução
O Media3 oferece vários componentes principais para casos de uso de reprodução. As classes que compõem esses componentes são familiares se você já trabalhou com bibliotecas de mídia do Android anteriores.
O diagrama a seguir mostra como esses componentes se unem em um app típico.
Para mais informações, consulte Componentes de reprodução.
Implementar um MediaLibraryService
e um MediaLibrarySession
Um MediaLibraryService
fornece uma API padronizada para veicular e permitir o acesso à sua biblioteca de mídia.
Isso é necessário ao adicionar suporte para Android Auto ou Android Automotive
OS ao seu app de mídia, já que essas plataformas oferecem uma interface segura para o motorista
para sua biblioteca de mídia. Para mais informações sobre como implementar e usar um
MediaLibraryService
, consulte
Disponibilizar conteúdo com MediaLibraryService.
Para controles de reprodução, use uma sessão de mídia. A API MediaSession
oferece uma
maneira universal de interagir com um player de áudio ou vídeo. A biblioteca Jetpack Media3
inclui MediaLibrarySession
, que estende MediaSession
para adicionar
APIs de navegação de conteúdo.
Ao conectar uma sessão de mídia a um player, um app pode anunciar a reprodução de mídia externamente e receber comandos de reprodução de fontes externas, como Android Auto, Android Automotive OS ou Google Assistente. Para mais informações, consulte Controlar e anunciar a reprodução usando uma MediaSession e Usar uma MediaLibrarySession.
No mínimo, sua sessão de mídia precisa declarar suporte aos seguintes comandos do player:
O guia Ativar controles de mídia descreve as maneiras de personalizar os controles de mídia em carros.
Quando o Android Auto ou o Android Automotive OS se conectam ao seu app, eles solicitam uma
biblioteca de conteúdo para exibir, o que aciona o método de
callback onGetLibraryRoot()
. Você pode retornar rapidamente um item de mídia raiz para permitir o acesso à sua
biblioteca. O método de callback onGetChildren()
é chamado quando o Android Auto ou o
Android Automotive OS tentam navegar por níveis mais profundos da biblioteca de
conteúdo.
Essas plataformas impõem outros limites à estrutura da sua biblioteca de conteúdo. Para detalhes sobre como personalizar a exibição da biblioteca de conteúdo, consulte o guia Criar seu serviço de navegador de mídia.
Declarar suporte ao Android Auto
Use a seguinte entrada de manifesto para declarar que seu app de smartphone tem suporte ao Android Auto:
<application>
...
<meta-data android:name="com.google.android.gms.car.application"
android:resource="@xml/automotive_app_desc"/>
...
</application>
Essa entrada de manifesto se refere a um arquivo XML que declara com quais recursos
automotivos seu app é compatível. Para indicar que você tem um app de música, 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="media"/>
</automotiveApp>
Declarar compatibilidade com o Android Automotive OS
É necessário criar um módulo automotivo, já que nem toda a lógica do app pode ser compartilhada com um app automotivo. Alguns componentes do Android Automotive OS, como o manifesto, têm requisitos específicos da plataforma. Crie um módulo que possa manter o código desses componentes separado do restante do seu programa, como o código usado no app para dispositivos móveis.
Siga as etapas abaixo para adicionar um módulo automotivo ao seu projeto:
- No Android Studio, clique em File > New > New Module.
- Selecione Automotive Module e clique em Next.
- Preencha o campo Application/Library name. Esse é o nome do seu app que os usuários veem no Android Automotive OS.
- Preencha o campo Module name.
- Ajuste o Package name de acordo com o nome do seu app.
Selecione API 28: Android 9.0 (Pie) como Minimum SDK e clique em Next.
Todos os carros que oferecem suporte para o Android Automotive OS executam o Android 9 (nível 28 da API) ou uma versão mais recente. Portanto, a seleção desse valor abrange todos os carros compatíveis.
Selecione No Activity e clique em Finish.
Depois de criar seu módulo no Android Studio, abra o AndroidManifest.xml
no
seu novo módulo automotivo:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.media">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme" />
<uses-feature
android:name="android.hardware.type.automotive"
android:required="true" />
</manifest>
O elemento application
tem algumas informações padrão do app, bem como um elemento
uses-feature
que declara suporte para o Android Automotive OS. Observe que não
há atividades declaradas no manifesto.
Se você implementar configurações ou atividades de login, adicione-as aqui. Essas atividades são acionadas pelo sistema usando intents explícitas e são as únicas atividades declaradas no manifesto para seu app Android Automotive OS.
Depois de adicionar qualquer atividade de configurações ou login, conclua o arquivo de manifesto
definindo o atributo android:appCategory="audio"
no elemento application
e adicionando os seguintes elementos uses-feature
:
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.media"> <application android:allowBackup="true" android:appCategory="audio" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme" /> <uses-feature android:name="android.hardware.type.automotive" android:required="true" /> <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" /> </manifest>
Definir explicitamente esses recursos como required="false"
garante que
o app não entre em conflito com os recursos de hardware disponíveis nos dispositivos
Automotive OS.
Use a seguinte entrada de manifesto para declarar que o app é compatível com o Android Automotive OS:
<application>
...
<meta-data android:name="com.android.automotive"
android:resource="@xml/automotive_app_desc"/>
...
</application>
Essa entrada de manifesto se refere a um arquivo XML que declara a quais recursos automotivos seu app oferece suporte.
Para indicar que você tem um app de mídia, adicione um arquivo XML chamado
automotive_app_desc.xml
ao diretório res/xml/
no projeto. Inclua o seguinte conteúdo neste arquivo:
<automotiveApp>
<uses name="media"/>
</automotiveApp>
Filtros de intent
O Android Automotive OS usa intents explícitas para acionar atividades no seu app
de mídia. Não inclua atividades que tenham filtros de intent
CATEGORY_LAUNCHER
ou ACTION_MAIN
no arquivo de manifesto.
Atividades como a do exemplo a seguir geralmente são destinadas a um smartphone ou outro dispositivo móvel. Declare essas atividades no módulo que cria o app para smartphones, não no módulo que cria o app Android Automotive OS.
<activity android:name=".MyActivity">
<intent-filter>
<!-- You can't use either of these intents for Android Automotive OS -->
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
<!--
In their place, you can include other intent filters for any activities
that your app needs for Android Automotive OS, such as settings or
sign-in activities.
-->
</intent-filter>
</activity>
Outras etapas
Agora que você tem um app para Android Auto e Android Automotive OS, talvez queira tomar outras medidas para otimizar o app e torná-lo mais seguro para uso ao dirigir. Para mais recomendações que ajudam a garantir uma experiência do usuário segura e conveniente, consulte os guias técnicos para ações de voz, proteções contra distração e tratamento de erros.
Criar apps de reprodução de vídeo para o Android Automotive OS
Como os apps de vídeo são categorizados separadamente dos apps de mídia em carros, você precisa conhecer alguns requisitos específicos para apps de vídeo, conforme descrito em Criar apps para carros estacionados e Criar apps de vídeo para o Android Automotive OS. Siga as instruções abaixo.
Marcar como um app de vídeo
Para indicar que o app oferece suporte a vídeo, adicione um arquivo XML chamado
automotive_app_desc.xml
ao diretório res/xml/ no projeto. Nesse arquivo, inclua 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"/>