Asistente de Google para Wear OS

Observa los asistentes de voz habilitar situaciones rápidas y eficientes sobre la marcha. Las interacciones de voz en wearables son dinámicas, lo que significa que el usuario puede hablarle a su muñeca sin mirar necesariamente el dispositivo mientras espera una respuesta.

Con las Acciones en apps de Asistente, los desarrolladores de Android pueden extender las apps para Wear OS al Asistente de Google y redireccionar a los usuarios a sus apps con comandos por voz, como "Hey Google, inicia mi carrera en AppDeEjemplo".

Limitaciones

Asistente en Wear admite interacciones de contenido multimedia y seguimiento de actividades de entrenamiento. Si deseas obtener orientación para integrar apps de música con Asistente, consulta Asistente de Google y las apps de música. Los siguientes BII de Salud y fitness son compatibles con apps para Wear OS:

Cómo funciona

Las Acciones en apps extienden las funciones de tu app al Asistente, lo que les permite a los usuarios acceder ellas rápidamente, con la voz. Cuando un usuario le indica al Asistente que desea usar tu app, este busca Acciones en apps que hayas registrado en ella, en el archivo shortcuts.xml de la app.

Las Acciones en apps se describen en shortcuts.xml con elementos de capacidad de Android. Los elementos de capacidad vinculan intents integrados (BII), que son descripciones semánticas de la capacidad de una app, con instrucciones de entrega, como una plantilla de vínculos directos. Cuando subes tu app con Google Play Console, Google registra las capacidades declaradas en shortcuts.xml y las pone a disposición de los usuarios para que las activen desde Asistente.

Flujo de Acciones en apps

En el diagrama anterior, se muestra cómo un usuario pausa su ejercicio en una app independiente. Los pasos a continuación describen lo que ocurre:

  1. El usuario realiza una solicitud de voz al Asistente para la app para wearables específica.
  2. Asistente asocia la solicitud a un modelo previamente entrenado (BII) y extrae cualquier parámetro que se encuentre en la consulta que admita el BII.
  3. En el ejemplo, Asistente asocia la consulta con el BII PAUSE_EXERCISE y extrae el parámetro del nombre del ejercicio, "caminata".
  4. La app se activa a través de su definición de entrega de capacidades de shortcuts.xml para este BII.
  5. La app procesa la entrega y pausa el ejercicio.

Conectividad

El desarrollo de las Acciones en apps varía según la funcionalidad de tu app dentro del ecosistema de dispositivos con Android.

  • Conexión: Cuando una app para wearables depende de la app para dispositivos móviles para obtener una funcionalidad completa, las consultas que los usuarios hacen al Asistente mediante el reloj se completan en el dispositivo móvil. La lógica de entrega de Acciones en apps debe estar integrada en la app para dispositivos móviles para que esta situación funcione correctamente.

  • Sin conexión: Cuando una app para wearables es independiente de la app para dispositivos móviles en cuanto a la funcionalidad, Asistente entrega las consultas de los usuarios de forma local en el reloj. Las funciones de Acciones en apps deben estar integradas en la app para wearables de modo que estas solicitudes se completen de forma correcta.

Cómo agregar capacidades de voz a Wear

Para integrar Acciones en apps con tu app para Wear OS, sigue estos pasos:

  1. Haz coincidir las funciones de la app que deseas habilitar por voz con un BII correspondiente.
  2. Declara la compatibilidad con los atajos de Android en tu recurso AndroidManifest.xml de la actividad principal.

    <!-- AndroidManifest.xml -->
    <meta-data
        android:name="android.app.shortcuts"
        android:resource="@xml/shortcuts" />
    
  3. Agrega un elemento <intent-filter> a AndroidManifest.xml. Esto permite que Asistente use vínculos directos para conectarse al contenido de tu app.

  4. Crea el archivo shortcuts.xml para brindar detalles de entrega para tus BII. Usa elementos de atajo de capability para declarar al Asistente los BII que admite tu app. Para obtener más información, consulta Cómo agregar capacidades.

  5. En shortcuts.xml, implementa una capacidad para el BII que elijas. En el siguiente ejemplo, se muestra una capacidad para el BII START_EXERCISE:

    <?xml version="1.0" encoding="utf-8"?>
    <!-- This is a sample shortcuts.xml -->
    <shortcuts xmlns:android="http://schemas.android.com/apk/res/android">
      <capability android:name="actions.intent.START_EXERCISE">
        <intent
          android:action="android.intent.action.VIEW"
          android:targetPackage="YOUR_UNIQUE_APPLICATION_ID"
          android:targetClass="YOUR_TARGET_CLASS">
          <!-- Eg. name = "Running" -->
          <parameter
            android:name="exercise.name"
            android:key="name"/>
          <!-- Eg. duration = "PT1H" -->
          <parameter
            android:name="exercise.duration"
            android:key="duration"/>
        </intent>
      </capability>
    </shortcuts>
    
  6. Si corresponde, expande la compatibilidad para las variaciones de voz del usuario mediante un inventario intercalado, que represente funciones y contenido en tu app.

    <capability android:name="actions.intent.START_EXERCISE">
      <intent
        android:targetPackage="com.example.myapp"
        android:targetClass="com.example.myapp.ExerciseActivity">
        <parameter android:name="exercise.name" android:key="exercise" />
      </intent>
    </capability>
    
    <shortcut android:shortcutId="CARDIO_RUN">
      <capability-binding android:key="actions.intent.START_EXERCISE">
        <parameter-binding
          android:key="exercise.name"
          android:value="@array/run_names" />
        </capability-bindig>
    </shortcut>
    
  7. Actualiza la lógica de la app para controlar la entrega de Acciones en apps entrantes.

    //FitMainActivity.kt
    
    private fun handleIntent(data: Uri?) {
        var actionHandled = true
        val startExercise = intent?.extras?.getString(START_EXERCISE)
    
        if (startExercise != null){
            val type = FitActivity.Type.find(startExercise)
            val arguments = Bundle().apply {
                putSerializable(FitTrackingFragment.PARAM_TYPE, type)
            }
            updateView(FitTrackingFragment::class.java, arguments)
        }
        else{
            showDefaultView()
            actionHandled = false
        }
        notifyActionSuccess(actionHandled)
    }
    

Obtén una vista previa de tu app, pruébala y publícala

Las Acciones en apps proporcionan herramientas para revisar y probar tu app. Para obtener información más detallada, consulta el complemento de Asistente de Google para Android Studio. Una vez que hayas probado tu app y creado una versión de prueba, podrás solicitar una revisión de Acciones en apps y, luego, implementarla. Revisa las siguientes prácticas recomendadas para obtener orientación a la hora de manejar errores comunes.

Prácticas recomendadas

Sigue estas prácticas recomendadas para crear una experiencia del usuario positiva cuando integres tu app con Asistente.

Muestra la pantalla de confirmación correspondiente o una relevante, junto con respuestas táctiles y de audio, para responder a una solicitud del usuario, ya sea cuando se completa correctamente una solicitud o para alertar sobre un error.

Calidad básica Calidad mejorada Mejor calidad posible
  • Crea un intent para iniciar ConfirmationActivity desde una actividad.
  • Crea un intent para iniciar ConfirmationActivity desde una actividad.
  • Reproduce un timbre Y la respuesta táctil para indicar el estado actual.
  • Crea un intent para iniciar ConfirmationActivity desde una actividad.
  • Convierte texto a voz (TTS) y ofrece una respuesta táctil para indicar el error o el éxito.

Errores frecuentes y soluciones

Para los siguientes casos de error, usa la siguiente mensajería recomendada de la app ConfirmationActivity.

Caso de error Ejemplo de interacción del usuario Respuesta de la app
La actividad ya está en curso "Iniciar mi NombreDelEjercicio".
"Reanudar mi NombreDelEjercicio".
Error de visualización: "Already ongoing activity".
No se inició ninguna actividad "Pausar/detener mi NombreDelEjercicio". Error de visualización: "No activity started".
Discrepancias en los tipos de actividad "Pausar/detener mi NombreDelEjercicio", que es un tipo de ejercicio diferente de la actividad en curso. Error de visualización: "Activity type mismatch".
Error al iniciar sesión "Iniciar mi NombreDelEjercicio" cuando el usuario no haya accedido a la app. Reproduce una respuesta táctil para avisar al usuario y redireccionarlo a la pantalla de acceso.
Error de permisos El usuario no tiene permiso para iniciar la actividad solicitada. Reproduce una respuesta táctil para avisar al usuario y redireccionarlo a la pantalla de solicitud de permisos.
Problema con el sensor El usuario tiene los servicios de ubicación desactivados en la configuración de su dispositivo. Reproduce una respuesta táctil para avisar al usuario y mostrarle la pantalla de error del sensor. Próximos pasos (opcionales):
  • Inicia la actividad sin el seguimiento de los sensores y notifica al usuario.
  • Solicita la confirmación del usuario para iniciar la actividad sin el seguimiento de los sensores.