Lleva tu app a vehículos con Android Auto o el SO Android Automotive. Usa una arquitectura de app que funcione en ambos casos para que todos los usuarios puedan disfrutarla.
¿Qué es Android para vehículos?
Una app de música para automóviles puede brindar una forma para que los usuarios conecten sus vidas digitales sin problemas con sus automóviles. Si extiendes las mismas apps para teléfonos para que estén disponibles en automóviles, crearás una mejor experiencia del usuario. Para ello, puedes realizar la integración con Android Auto o el SO Android Automotive.
Las apps para Android para vehículos deben evitar la distracción del conductor por sobre todas las cosas. Puedes seguir las prácticas recomendadas, como usar comandos por voz y un diseño visual muy práctico, para minimizar las distracciones. De esta manera, tu app de música puede mostrar información oportuna al conductor solo cuando sea relevante y usar patrones predecibles para tareas comunes.
Android Auto
Android Auto ofrece una experiencia de apps optimizadas para conductores a usuarios que cuentan con teléfonos Android con la app de Android Auto y un vehículo o un sistema estéreo compatible. Pueden usar tu app directamente en la pantalla del auto conectando el teléfono. Puedes habilitar la conexión de Android Auto con la app del teléfono si creas servicios que Android Auto use para mostrar una interfaz optimizada para conductores.
SO Android Automotive
El SO Android Automotive es un sistema de infoentretenimiento basado en Android que está integrado en vehículos. El sistema del auto es un dispositivo Android autónomo que está optimizado para la conducción. Con el SO Android Automotive, los usuarios instalan tu app directamente en el auto, en lugar de sus teléfonos.
Categorías de app compatibles
Las apps de música permiten que los usuarios exploren y reproduzcan música, radio, audiolibros y otro contenido de audio en el vehículo. Para obtener más información, consulta Cómo compilar apps de reproducción de audio para vehículos. También puedes obtener más información en Cómo compilar apps de música para vehículos.
Las apps de música se compilan con MediaLibraryService
y MediaSession
.
En el SO Android Automotive, también puedes compilar pantallas de acceso y configuración (para usar mientras el vehículo está estacionado) usando Views o Compose.
Las apps de video permiten que los usuarios miren videos en streaming mientras el vehículo está estacionado. El propósito principal de estas apps es mostrar videos en streaming. Estas apps se compilan con Views o Compose. Para obtener más información, consulta Cómo compilar apps de reproducción de video para el SO Android Automotive. Obtén más información en Cómo compilar apps de video para el SO Android Automotive.
Cómo compilar apps de reproducción de audio para vehículos
En esta guía, se da por sentado que ya tienes una app básica de reproducción de contenido multimedia. Si no es así, para comenzar, ve a Cómo crear una app de reproductor multimedia básica.
En esta guía, encontrarás información sobre lo que debes hacer, incluidos vínculos a más recursos con orientación específica.
Componentes de reproducción
Media3 ofrece varios componentes clave para casos de uso de reproducción. Las clases que conforman estos componentes te resultarán familiares si trabajaste con bibliotecas multimedia anteriores de Android.
En el siguiente diagrama, se muestra cómo se unen estos componentes en una app típica.
Para obtener más información, consulta Componentes de reproducción.
Implementa un MediaLibraryService
y un MediaLibrarySession
Un MediaLibraryService
proporciona una API estandarizada para entregar y permitir el acceso a tu biblioteca multimedia.
Esto es obligatorio cuando agregas compatibilidad con Android Auto o el SO Android Automotive a tu app de música, ya que estas plataformas proporcionan su propia IU segura para el conductor para tu biblioteca de música. Para obtener más información sobre cómo implementar y usar un MediaLibraryService
, consulta Cómo entregar contenido con MediaLibraryService.
Para los controles de reproducción, usa una sesión multimedia. La API de MediaSession
proporciona una forma universal de interactuar con un reproductor de audio o video. La biblioteca de Media3 de Jetpack incluye MediaLibrarySession
, que extiende MediaSession
para agregar APIs de navegación de contenido.
Conectar una sesión multimedia a un reproductor permite que una app promocione la reproducción de contenido multimedia de forma externa y reciba comandos de reproducción de fuentes externas, como Android Auto, el SO Android Automotive o Google Assistant. Para obtener más información, consulta Cómo controlar y anunciar la reproducción con una MediaSession y Cómo usar una MediaLibrarySession.
Como mínimo, tu sesión multimedia debe declarar la compatibilidad con los siguientes comandos del reproductor:
En la guía Habilita los controles de reproducción, se describen las formas en que puedes personalizar los controles de reproducción en vehículos.
Cuando Android Auto o el SO Android Automotive se conectan a tu app, solicitan que se muestre una biblioteca de contenido, lo que activa el método de devolución de llamada onGetLibraryRoot()
. Puedes mostrar rápidamente un elemento multimedia raíz para permitir el acceso a tu biblioteca. Se llama al método de devolución de llamada onGetChildren()
cuando Android Auto o el SO Android Automotive intentan explorar niveles más profundos de tu biblioteca de contenido.
Estas plataformas aplican límites adicionales sobre la estructura de tu biblioteca de contenido. Para obtener información detallada sobre cómo personalizar la forma en que se muestra tu biblioteca de contenido, consulta la guía Cómo crear tu servicio de navegador multimedia.
Cómo declarar la compatibilidad con Android Auto
Usa la siguiente entrada del manifiesto para declarar que tu aplicación para teléfonos es compatible con Android Auto:
<application>
...
<meta-data android:name="com.google.android.gms.car.application"
android:resource="@xml/automotive_app_desc"/>
...
</application>
Esta entrada de manifiesto hace referencia a un archivo en formato XML que declara con qué capacidades de Automotive es compatible tu app. Para indicar que tienes una app de música, agrega un archivo en formato XML llamado automotive_app_desc.xml
al directorio res/xml/
de tu proyecto. Este archivo debe incluir el siguiente contenido:
<automotiveApp>
<uses name="media"/>
</automotiveApp>
Cómo declarar la compatibilidad con el SO Android Automotive
Debes crear un módulo para la industria automotriz, ya que no toda la lógica de tu app se puede compartir con una app para la industria automotriz. Algunos componentes del SO Android Automotive, como el manifiesto, tienen requisitos específicos de la plataforma. Crea un módulo que pueda mantener el código de estos componentes separado de otro código del proyecto, como el que se usa en la app para dispositivos móviles.
Sigue estos pasos para agregar un módulo automotor a tu proyecto:
- En Android Studio, haz clic en File > New > New Project.
- Selecciona Automotive Module y, luego, haz clic en Next.
- Proporciona la información de Application/Library name. Se trata del nombre que los usuarios ven para tu app en el SO Android Automotive.
- Proporciona un nombre de módulo en Module name.
- Ajusta el valor de Package name para que coincida con tu app.
Selecciona API 28:Android 9.0 (Pie) para Minimum SDK y, luego, haz clic en Next.
Todos los vehículos compatibles con el SO Android Automotive se ejecutan en Android 9 (nivel de API 28) o versiones posteriores. Por lo tanto, si seleccionas este valor, se orientará a todos los vehículos compatibles.
Selecciona No Activity y, luego, haz clic en Finish.
Después de crear tu módulo en Android Studio, abre el archivo AndroidManifest.xml
en tu nuevo módulo de Automotive:
<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>
El elemento application
tiene información estándar de la app y un elemento uses-feature
que declara compatibilidad con el SO Android Automotive. Observa que no hay actividades declaradas en el manifiesto.
Si implementas actividades de acceso o configuración, agrégalas aquí. El sistema activa estas actividades con intents explícitos, y esas son las únicas actividades que declaras en el manifiesto de tu app con SO Android Automotive.
Después de agregar las actividades de configuración o acceso, completa tu archivo de manifiesto configurando el atributo android:appCategory="audio"
en el elemento application
y agregando los siguientes 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>
Configurar de forma explícita estas funciones como required="false"
garantiza que la app no entre en conflicto con las funciones de hardware disponibles en dispositivos con el SO Android Automotive.
Usa la siguiente entrada del manifiesto para declarar que tu app es compatible con el SO Android Automotive:
<application>
...
<meta-data android:name="com.android.automotive"
android:resource="@xml/automotive_app_desc"/>
...
</application>
Esta entrada de manifiesto hace referencia a un archivo en formato XML que declara qué capacidades de Automotive admite tu app.
Para indicar que tienes una app de música, agrega un archivo en formato XML llamado automotive_app_desc.xml
al directorio res/xml/
de tu proyecto. Incluye el siguiente contenido en este archivo:
<automotiveApp>
<uses name="media"/>
</automotiveApp>
Filtros de intents
El SO Android Automotive usa intents explícitos para activar actividades en tu app de música. No incluyas ninguna actividad que tenga filtros de intents CATEGORY_LAUNCHER
o ACTION_MAIN
en el archivo de manifiesto.
Las actividades como la que se muestra en el siguiente ejemplo suelen orientarse a un teléfono o a otro dispositivo móvil. Declara estas actividades en el módulo que compila la app para teléfonos, no en el que compila tu app del SO Android Automotive.
<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>
Pasos adicionales
Ahora que tienes una app para Android Auto y el SO Android Automotive, te recomendamos que tomes medidas adicionales para optimizarla y que se pueda usar de forma más segura mientras se conduce. Para obtener más recomendaciones que te ayuden a garantizar una experiencia del usuario segura y conveniente, consulta las guías técnicas sobre Acciones de voz, Protección contra distracciones y Manejo de errores.
Cómo compilar apps de reproducción de video para el SO Android Automotive
Dado que las apps de video se clasifican por separado de las apps de música en los vehículos, debes tener en cuenta algunos requisitos específicos para las apps de video, como se describe en Cómo compilar apps para usar en el SO Android Automotive con el vehículo estacionado y Cómo compilar apps de video para el SO Android Automotive. Debes usar las siguientes instrucciones.
Marca tu app como app de video
Para indicar que tu app admite videos, agrega un archivo en formato XML llamado automotive_app_desc.xml
al directorio res/xml/ de tu proyecto. En este archivo, incluye el siguiente contenido:
<automotiveApp>
<uses name="video"/>
</automotiveApp>
Luego, dentro del elemento application
de tu manifiesto, agrega el siguiente elemento meta-data
que hace referencia al archivo en formato XML:
<meta-data android:name="com.android.automotive"
android:resource="@xml/automotive_app_desc"/>