Действия приложения для автомобилей

Голосовое управление позволяет водителям выполнять задачи, не отрывая рук от руля и глаз от дороги. Благодаря функции App Actions для автомобильных приложений водители могут использовать Gemini или Google Assistant для управления приложениями Android на своей информационно-развлекательной системе, произнося, например: «Привет, Google, найди парковку на улице в ExampleApp» .

Функция App Actions работает с автомобильными приложениями, отображающими точки интереса (POI) . В этом руководстве описаны конкретные требования и ограничения для интеграции App Actions в ваше приложение, отображающее точки интереса.

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

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

Поддержка BII в вашем приложении заявляется с помощью элементов capability Android. Когда вы загружаете приложение через консоль Google Play, Google регистрирует заявленные в приложении возможности и делает их доступными для пользователей через Gemini или Google Assistant.

Диаграмма, показывающая выполнение заказов на автомобили.

  1. Пользователь активирует Gemini или Google Assistant и отправляет голосовой запрос для конкретного приложения.
  2. Gemini или Google Assistant сопоставляют запрос с предварительно обученной моделью (BII) и извлекают любые параметры, поддерживаемые BII.
  3. В этом примере Gemini или Google Assistant сопоставляют запрос с BII-кодом GET_CHARGING_STATION , извлекают параметр местоположения «SFO» и преобразуют местоположение в его географические координаты.
  4. Приложение запускается в соответствии с определением выполнения для данного BII.
  5. Приложение обрабатывает заказ, отображая варианты зарядных станций в информационно-развлекательной системе водителя.

Ограничения

Реализация App Actions в автомобилях имеет следующие ограничения:

Требования

Выполните следующие шаги, чтобы подготовить ваше автомобильное приложение для использования App Actions:

Определите свои намерения и цели.

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

  • Какие намерения поддерживает ваше автомобильное приложение?

    App Actions предоставляет предварительно обученные голосовые модели, называемые встроенными интентами (BII), которые могут понимать и интерпретировать голосовые команды пользователя, когда он говорит: «Привет, Google» . Чтобы отвечать на голосовые запросы, вам просто нужно указать Gemini или Google Assistant, какие BII поддерживает ваше приложение. Например, если вы хотите, чтобы ваше приложение помогало найти парковку, вы реализуете BII GET_PARKING_FACILITY . Или реализуйте BII GET_CHARGING_STATION , чтобы помочь пользователям найти станции зарядки электромобилей.

  • Как ваше приложение должно выполнять каждое из намерений?

    Ваше приложение выполняет голосовой запрос, переходя на соответствующий экран. Функция App Actions предоставляет параметры, извлеченные из запроса пользователя, что позволяет адаптировать ответ к потребностям пользователя.

Интегрируйте действия приложения.

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

  1. Откройте файл AndroidManifest.xml вашего основного приложения и укажите поддержку ярлыков Android. Для этого используйте элементы ярлыков capability , чтобы сообщить Gemini или Google Assistant о поддерживаемых вашим приложением BII-объектах. Дополнительную информацию см. в разделе «Добавление возможностей» .

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

    • Для автоматического выполнения запросов в Android Auto параметр <intent-filter> аналогичен параметру в вашем мобильном приложении.

    • В операционной системе Android Automotive сессия CarAppService вашего приложения запускает Gemini или Google Assistant. Чтобы разрешить запуск вашей прямой ссылки через сессию, укажите <intent-filter> в элементе <activity> файла 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. Если в каталоге res/xml вашего приложения еще нет файла shortcuts.xml , создайте его. Информацию о том, как App Actions использует ярлыки Android, см. в разделе «Создание файла shortcuts.xml» .

    В shortcuts.xml реализуйте capability для выбранного вами BII. Затем добавьте вложенный <intent> для определения выполнения приложения.

    <!-- 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. Наконец, обновите логику метода Session() вашего автомобильного приложения, чтобы она обрабатывала входящие запросы App Actions. Следующие примеры демонстрируют обработку намерений для Session.onCreateScreen() и Session.onNewIntent() .

    onCreateScreen()

    Котлин

    @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()

    Котлин

    @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
     ...
    }
    }

Просмотрите, протестируйте и опубликуйте свое приложение.

App Actions предоставляет инструменты для предварительного просмотра и тестирования вашего приложения. Для получения информации об этих инструментах, а также о том, как опубликовать ваше приложение для управления автомобилем голосом в Play Store, посетите раздел «Обзор App Actions».