Acciones en apps para automóviles

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.

Gráfico que muestra la entrega de vehículos.

  1. Un usuario activa Asistente y realiza una solicitud de voz para una app específica.
  2. Asistente asocia la solicitud a un modelo previamente entrenado (BII) y extrae cualquier parámetro que admita el BII.
  3. 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.
  4. La app se activa a través de su definición de entrega para este BII.
  5. 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:

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 BII GET_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:

  1. Abre tu actividad principal AndroidManifest.xml y declara la compatibilidad con los accesos directos de Android. Usa elementos de acceso directo capability 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" />
    
  2. A continuación, agrega un elemento <intent-filter> a AndroidManifest.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> de AndroidManifest.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>
    
  3. Si aún no tienes un archivo shortcuts.xml en el directorio res/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, implementa capability 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>
    
  4. 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 para Session.onCreateScreen() y Session.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.