El control por voz les permite a los conductores realizar tareas sin quitar las manos del volante ni los ojos del camino. Con Acciones en apps para vehículos, los conductores pueden usar Asistente de Google y así controlar las apps para Android en su sistema de infoentretenimiento con frases como "Hey Google, busca estacionamiento en la calle en AppDeEjemplo".
Acciones en apps funciona con apps de lugares de interés para vehículos. En esta guía, se abordan los requisitos y limitaciones específicos para integrar Acciones en apps a tu app de lugares de interés.
Cómo funciona
Las Acciones en apps extienden las funciones de tu app a Asistente, lo que les permite a los usuarios acceder ellas con la voz. Cuando un usuario invoca una Acción en la app, Asistente asocia la consulta a un intent integrado (BII) declarado en tu recurso shortcuts.xml
de la app y, luego, inicia la app en el pantalla solicitada.
Debes declarar la compatibilidad con BIIs en tu app con los elementos capability
de Android.
Cuando subes tu app con Google Play Console, Google registra las capacidades declaradas en ella y las pone a disposición de los usuarios para que accedan desde Asistente.
- Un usuario activa Asistente y realiza una solicitud de voz para una app específica.
- Asistente asocia la solicitud a un modelo previamente entrenado (BII) y extrae cualquier parámetro que admita el BII.
- En este ejemplo, Asistente asocia la consulta al BII
GET_CHARGING_STATION
, extrae el parámetro de ubicación "SFO" y lo traduce a sus coordenadas geográficas. - La app se activa a través de su definición de entrega para este BII.
- La app procesa la entrega y muestra las opciones de estación de carga en el sistema de infoentretenimiento del conductor.
Limitaciones
Las implementaciones en vehículos de Acciones en apps tienen las siguientes limitaciones:
Las Acciones en apps para vehículos se deben realizar mediante vínculos directos de Android. Si deseas obtener información sobre las entregas de Acciones en apps, consulta Cómo brindar detalles de entrega de intents integrados.
Las implementaciones en vehículos solo admiten los siguientes BIIs:
- Estacionamiento:
GET_PARKING_FACILITY
- Carga:
GET_CHARGING_STATION
- Estacionamiento:
Requisitos
Sigue estos pasos para preparar tu app para vehículos con Acciones en apps:
- Cumple con los requisitos generales de apps para Android para Acciones en apps.
- Incluye la dependencia de la biblioteca de Car App. Para obtener más información, consulta Cómo declarar dependencias.
Determina tu intención y entrega
El primer paso para habilitar por voz una app para vehículos con Acciones en apps es determinar los comandos por voz del usuario (o intents) que son compatibles con tu app. Luego, debes definir una entrega para cada intent para especificar cómo tu app debe satisfacer la solicitud.
¿Qué intents admite tu app para vehículos?
Acciones en apps proporciona modelos de voz previamente entrenados, denominados intents integrados (BII), que pueden interpretar y comprender los comandos por voz de un usuario cuando dice "Hey Google". Para responder solicitudes de voz, solo debes declarar a Asistente los BIIs que admite tu app. Por ejemplo, si deseas que tu app ayude a encontrar un estacionamiento, debes implementar el BII
GET_PARKING_FACILITY
. O bien, implementa el BIIGET_CHARGING_STATION
para ayudar a los usuarios a encontrar estaciones de carga para vehículos eléctricos.¿Cómo debería tu app entregar cada intent?
La app se inicia en la pantalla adecuada para entregar la solicitud de voz. Las Acciones en apps proporcionan tu entrega con parámetros extraídos de la solicitud del usuario, lo que te permite adaptar tu respuesta a las necesidades del usuario.
Integra Acciones en apps
Después de determinar tu estrategia de entrega, sigue estos pasos para habilitar por voz tu app para vehículos:
Abre tu actividad principal
AndroidManifest.xml
y declara la compatibilidad con los accesos directos de Android. Usa elementos de acceso directocapability
para declarar a Asistente los BIIs que admite tu app. Para obtener más información, consulta Cómo agregar capacidades.<!-- AndroidManifest.xml --> <meta-data android:name="android.app.shortcuts" android:resource="@xml/shortcuts" />
A continuación, agrega un elemento
<intent-filter>
aAndroidManifest.xml
. Esto permite que Asistente use vínculos directos para conectarse al contenido de tu app.Para la entrega de Android Auto,
<intent-filter>
es el mismo que el de tu app para dispositivos móviles.En SO Android Automotive, la sesión de
CarAppService
de tu app activa Asistente. Para permitir que una sesión active tu vínculo directo, especifica<intent-filter>
en el elemento<activity>
deAndroidManifest.xml
.
<!-- AndroidManifest.xml --> <activity ... android:name="androidx.car.app.activity.CarAppActivity"> ... <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <data android:scheme="YOUR_SCHEME" android:host="YOUR_HOST" /> </intent-filter> </activity>
Si aún no tienes un archivo
shortcuts.xml
en el directoriores/xml
de la app, crea uno nuevo. Para obtener información sobre el modo en que las Acciones en apps usan atajos de Android, consulta Cómo crear el archivo shortcuts.xml.En
shortcuts.xml
, implementacapability
para el BII que elijas. A continuación, agrega un<intent>
anidado para definir la entrega de la app.<!-- shortcuts.xml --> <?xml version="1.0" encoding="utf-8"?> <shortcuts xmlns:android="http://schemas.android.com/apk/res/android"> <capability android:name="actions.intent.GET_PARKING_FACILITY"> <intent> <url-template android:value="YOUR_SCHEME://YOUR_HOST{?name,address,disambiguatingDescription,latitude,longitude}"> <!-- Facility name, e.g. "Googleplex" --> <parameter android:name="parkingFacility.name" android:key="name"/> <!-- Address, e.g. "1600 Amphitheatre Pkwy, Mountain View, CA 94043" --> <parameter android:name="parkingFacility.address" android:key="address"/> <!-- Disambiguate the type of service, e.g. "valet" --> <parameter android:name="parkingFacility.disambiguatingDescription" android:key="disambiguatingDescription"/> <!-- Latitude, e.g. "37.3861" --> <parameter android:name="parkingFacility.geo.latitude" android:key="latitude"/> <!-- Longitude, e.g. "-122.084" --> <parameter android:name="parkingFacility.geo.longitude" android:key="longitude"/> </intent> </capability> </shortcuts>
Por último, actualiza la lógica de
Session()
de tu app para vehículos para controlar la entrega de Acciones en apps entrantes. En los siguientes ejemplos, se muestra el control de intents paraSession.onCreateScreen()
ySession.onNewIntent()
.onCreateScreen()
Kotlin
@Override fun onCreateScreen(@NonNull intent: Intent): Screen { if (intent.getData() != null) { val uri: Uri = intent.getData() // uri = "YOUR_SCHEME://YOUR_HOST?name=Levis%20center" // Build your Templates with parsed uri parameters ... } }
Java
@Override public Screen onCreateScreen(@NonNull Intent intent) { if (intent.getData() != null) { Uri uri = intent.getData(); // uri = "YOUR_SCHEME://YOUR_HOST?name=Levis%20center" // Build your Templates with parsed uri parameters ... } }
onNewIntent()
Kotlin
@Override fun onNewIntent(@NonNull intent: Intent): Screen { if (intent.getData() != null) { val uri: Uri = intent.getData() // uri = "YOUR_SCHEME://YOUR_HOST?name=Levis%20center" // Build your Templates with parsed uri parameters ... } }
Java
@Override public void onNewIntent(@NonNull Intent intent) { if (intent.getData() != null) { Uri uri = intent.getData(); // uri = "YOUR_SCHEME://YOUR_HOST?name=Levis%20center" // Build your Templates with parsed uri parameters ... } }
Obtén una vista previa de tu app, pruébala y publícala
Las Acciones en apps brindan herramientas para obtener una vista previa de tu app y probarla. Visita la descripción general de Acciones en apps para obtener información sobre estas herramientas y detalles sobre cómo publicar en Play Store tu app habilitada por voz para vehículos.