Google Ассистент для Wear OS

Голосовые помощники Watch позволяют быстро и эффективно работать в дороге. Голосовое взаимодействие на носимых устройствах является динамическим, что означает, что пользователь может говорить со своим запястьем, не обязательно глядя на устройство в ожидании ответа.

С помощью Assistant App Actions разработчики Android могут расширить приложения Wear OS до Google Assistant, быстро перенаправляя пользователей в свои приложения с помощью голосовых команд, таких как «Эй, Google, начни пробежку в exampleApp».

Ограничения

Assistant on Wear поддерживает взаимодействие с мультимедиа и отслеживанием тренировок. Инструкции по интеграции мультимедийных приложений с Ассистентом см. в разделе Google Assistant и мультимедийные приложения . Следующие BII для здоровья и фитнеса поддерживаются для приложений Wear OS:

Как это работает

Действия приложения расширяют функциональность приложения для Ассистента, позволяя пользователям быстро получать доступ к функциям приложения с помощью голоса. Когда пользователь указывает Ассистенту, что он хочет использовать ваше приложение, Ассистент ищет действия приложения, зарегистрированные в вашем приложении, в ресурсе shortcuts.xml приложения.

Действия приложения описаны в shortcuts.xml с элементами возможностей Android. Элементы возможностей объединяют встроенные намерения (BII), которые представляют собой семантические описания возможностей приложения, с инструкциями по выполнению, такими как шаблон глубокой ссылки. Когда вы загружаете свое приложение с помощью консоли Google Play, Google регистрирует возможности, объявленные в shortcuts.xml , делая их доступными для пользователей, которые могут запускать их из Ассистента.

Порядок действий приложения

На предыдущей диаграмме показано, как пользователь приостанавливает тренировку в автономном приложении. Происходят следующие шаги:

  1. Пользователь отправляет голосовой запрос Ассистенту для конкретного носимого приложения.
  2. Ассистент сопоставляет запрос с предварительно обученной моделью (BII) и извлекает все найденные в запросе параметры, которые поддерживаются BII.
  3. В этом примере Ассистент сопоставляет запрос с BII PAUSE_EXERCISE и извлекает параметр имени упражнения «поход».
  4. Приложение запускается через определение выполнения возможностей shortcuts.xml для этого BII.
  5. Приложение обрабатывает выполнение, приостанавливая упражнение.

Возможности подключения

Разработка действий приложения зависит от функциональности вашего приложения в экосистеме устройств Android.

  • Привязное : когда полная функциональность носимого приложения зависит от мобильного приложения, пользовательские запросы, сделанные Ассистенту через часы, выполняются на мобильном устройстве. Чтобы этот сценарий работал правильно, логика выполнения действий приложения должна быть встроена в мобильное приложение.

  • Без привязки : когда носимое приложение по функциональности не зависит от мобильного приложения, Ассистент выполняет запросы пользователя локально на часах. Возможности действий приложения должны быть встроены в носимое приложение, чтобы эти запросы выполнялись должным образом.

Добавьте голосовые возможности в Wear

Интегрируйте действия приложения с приложением Wear OS, выполнив следующие действия:

  1. Сопоставьте функциональность приложения, которую вы хотите включить с помощью голоса, с соответствующим BII .
  2. Объявите поддержку ярлыков Android в ресурсе AndroidManifest.xml основного действия.

    <!-- AndroidManifest.xml -->
    <meta-data
        android:name="android.app.shortcuts"
        android:resource="@xml/shortcuts" />
    
  3. Добавьте элемент <intent-filter> в AndroidManifest.xml. Это позволяет Ассистенту использовать глубокие ссылки для подключения к содержимому вашего приложения.

  4. Создайте файл Shorts.xml , чтобы предоставить подробную информацию о выполнении ваших BII. Вы используете элементы ярлыка capability , чтобы объявить Ассистенту BII, которые поддерживает ваше приложение. Дополнительные сведения см. в разделе Добавление возможностей .

  5. В shortcuts.xml реализуйте возможность для выбранного вами BII. Следующий пример демонстрирует возможности START_EXERCISE BII:

    <?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. Если применимо, расширьте поддержку вариантов речи пользователей, используя встроенный инвентарь , который представляет функции и контент вашего приложения.

    <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. Обновите логику вашего приложения для обработки входящих действий приложения.

    //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)
    }
    

Предварительный просмотр, тестирование и публикация вашего приложения

Действия приложения предоставляют инструменты для проверки и тестирования вашего приложения. Более подробную информацию можно найти в разделе Плагин Google Assistant для Android Studio . После того как вы протестировали свое приложение и создали тестовый выпуск, вы можете запросить проверку и развертывание действий приложения . Ознакомьтесь со следующими рекомендациями по устранению распространенных ошибок.

Лучшие практики

Создайте положительный пользовательский опыт при интеграции вашего приложения с Ассистентом, следуя этим рекомендуемым рекомендациям.

Покажите соответствующий или релевантный экран подтверждения, а также тактильную и звуковую обратную связь, чтобы ответить на запрос пользователя — либо при успешном выполнении запроса, либо для предупреждения об ошибке.

Базовое качество Лучшее качество Лучшее качество
  • Создайте намерение запустить ConfirmationActivity из действия.
  • Создайте намерение запустить ConfirmationActivity из действия.
  • Включите звуковой сигнал И тактильную обратную связь, чтобы указать текущее состояние.
  • Создайте намерение запустить ConfirmationActivity из действия.
  • Преобразование текста в речь (TTS) и тактильная обратная связь для обозначения ошибки или успеха.

Распространенные ошибки и решения

В следующих случаях ошибки используйте следующий рекомендуемый метод обмена сообщениями ConfirmationActivity приложения.

Случай ошибки Пример взаимодействия с пользователем Ответ приложения
Деятельность уже продолжается «Начать мое имя упражнения »
«Продолжить мое имя упражнения »
Ошибка отображения: уже действующая активность».
Никакая активность не началась «Приостановить/остановить мое имя упражнения » Ошибка отображения: «Нет активности».
Несовпадение видов деятельности «Приостановить/остановить мое имя упражнения » — это тип упражнения, отличный от текущего действия. Ошибка отображения: «Несоответствие типа действия».
Ошибка входа «Начать мое имя упражнения », когда пользователь не вошел в приложение. Играйте тактильно, чтобы предупредить пользователя и перенаправить на экран входа в систему.
Ошибка разрешений У пользователя нет разрешения начать запрошенное действие. Воспроизведите тактильную функцию, чтобы предупредить пользователя и перенаправить на экран запроса разрешения.
Проблема с датчиком У пользователя отключены службы определения местоположения в настройках устройства. Используйте тактильную функцию, чтобы предупреждать пользователей и показывать экран ошибки датчика. Дополнительные следующие шаги:
  • Начать деятельность без отслеживания датчиков и уведомить пользователя.
  • Запросите подтверждение пользователя, чтобы начать активность без отслеживания датчиков.