Голосовое управление позволяет водителю выполнять задачи, не отрывая рук от руля и глаз от дороги. С помощью App Actions для автомобильных приложений водители могут использовать Google Assistant для управления приложениями Android в своей информационно-развлекательной системе, говоря что-то вроде: «Окей, Google, найди уличную парковку в exampleApp» .
Действия приложений работают с автомобильными приложениями , представляющими достопримечательности (POI) . В этом руководстве описаны конкретные требования и ограничения для интеграции действий приложения в ваше приложение POI.
Как это работает
Действия приложения расширяют функциональность приложения до Ассистента, позволяя пользователям получать доступ к функциям приложения с помощью голоса. Когда пользователь вызывает действие приложения, Ассистент сопоставляет запрос со встроенным намерением ( BII ), объявленным в ресурсе shortcuts.xml
вашего приложения, и запускает ваше приложение на запрошенном экране.
Вы заявляете о поддержке BII в своем приложении, используя элементы capability
Android. Когда вы загружаете свое приложение с помощью консоли Google Play, Google регистрирует возможности, заявленные в вашем приложении, и делает их доступными для пользователей из Ассистента.
- Пользователь запускает Ассистента и делает голосовой запрос для определенного приложения.
- Ассистент сопоставляет запрос с предварительно обученной моделью (BII) и извлекает все параметры, поддерживаемые BII.
- В этом примере Ассистент сопоставляет запрос с
GET_CHARGING_STATION
BII, извлекает параметр местоположения «SFO» и преобразует местоположение в его географические координаты. - Приложение запускается через определение выполнения для этого BII.
- Приложение обрабатывает выполнение заказов, отображая варианты зарядных станций в информационно-развлекательной системе водителя.
Ограничения
Реализации App Actions в автомобиле имеют следующие ограничения:
Действия в автомобильном приложении должны выполняться с использованием глубоких ссылок Android. Информацию о выполнении действий приложения см. в разделе Предоставление сведений о выполнении для встроенных намерений .
Реализации автомобилей поддерживают только следующие BII:
- Парковка –
GET_PARKING_FACILITY
- Зарядка –
GET_CHARGING_STATION
- Парковка –
Требования
Выполните следующие шаги, чтобы подготовить автомобильное приложение к действиям приложения:
- Выполните общие требования к приложениям Android для действий в приложении.
- Включите зависимость библиотеки автомобильных приложений. Подробности см. в разделе «Объявление зависимостей» .
Определите свое намерение и его реализацию
Первый шаг к голосовому включению автомобильного приложения с помощью действий приложения — определить, какие голосовые команды или намерения пользователя поддерживает ваше приложение. Затем вы определяете выполнение для каждого намерения, чтобы указать, как ваше приложение должно удовлетворять запрос.
Какие цели поддерживает ваше автомобильное приложение?
Действия приложения предоставляют предварительно обученные голосовые модели, называемые встроенными намерениями (BII), которые могут понимать и интерпретировать голосовые команды пользователя, когда он говорит «Окей, Google» . Чтобы ответить на голосовые запросы, вы просто указываете Ассистенту BII, которые поддерживает ваше приложение. Например, если вы хотите, чтобы ваше приложение помогало найти парковку, вы реализуете
GET_PARKING_FACILITY
BII. Или внедритеGET_CHARGING_STATION
BII, чтобы помочь пользователям находить станции зарядки электромобилей.Как ваше приложение должно выполнять каждое намерение?
Ваше приложение выполняет голосовой запрос, открываясь на соответствующем экране. Действия приложения обеспечивают выполнение с помощью параметров, извлеченных из запроса пользователя, что позволяет адаптировать ответ к потребностям пользователя.
Интегрируйте действия приложения
Определив стратегию выполнения, выполните следующие действия, чтобы включить голосовое приложение для автомобиля:
Откройте свой основной файл
AndroidManifest.xml
и объявите поддержку ярлыков Android. Вы используете элементы ярлыкаcapability
, чтобы объявить Ассистенту BII, которые поддерживает ваше приложение. Дополнительные сведения см. в разделе Добавление возможностей .<!-- AndroidManifest.xml --> <meta-data android:name="android.app.shortcuts" android:resource="@xml/shortcuts" />
Затем добавьте элемент
<intent-filter>
вAndroidManifest.xml
. Это позволяет Ассистенту использовать глубокие ссылки для подключения к содержимому вашего приложения.Для выполнения Android Auto
<intent-filter>
аналогичен вашему мобильному приложению.Для автомобильной ОС Android сеанс
CarAppService
вашего приложения запускает Ассистента. Чтобы разрешить сеансу активировать вашу глубокую ссылку, укажите<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>
Если у вас еще нет файла
shortcuts.xml
в каталогеres/xml
вашего приложения, создайте новый. Сведения о том, как действия приложений используют ярлыки Android, см. в разделе Создание ярлыков.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>
Наконец, обновите логику
Session()
вашего автомобильного приложения, чтобы обрабатывать входящие действия приложения. В следующих примерах демонстрируется обработка намерений для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 ... } }
Ява
@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 ... } }
Ява
@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 ... } }
Предварительный просмотр, тестирование и публикация вашего приложения
Действия приложения предоставляют инструменты для предварительного просмотра и тестирования вашего приложения. Посетите обзор действий приложения , чтобы получить информацию об этом инструменте, а также узнать, как опубликовать автомобильное приложение с голосовой поддержкой в Play Store.
Контент и образцы кода на этой странице предоставлены по лицензиям. Java и OpenJDK – это зарегистрированные товарные знаки корпорации Oracle и ее аффилированных лиц.
Последнее обновление: 2024-08-20 UTC.
[{ "type": "thumb-down", "id": "missingTheInformationINeed", "label":"Отсутствует нужная мне информация" },{ "type": "thumb-down", "id": "tooComplicatedTooManySteps", "label":"Слишком сложен/слишком много шагов" },{ "type": "thumb-down", "id": "outOfDate", "label":"Устарел" },{ "type": "thumb-down", "id": "translationIssue", "label":"Проблема с переводом текста" },{ "type": "thumb-down", "id": "samplesCodeIssue", "label":"Проблемы образцов/кода" },{ "type": "thumb-down", "id": "otherDown", "label":"Другое" }] [{ "type": "thumb-up", "id": "easyToUnderstand", "label":"Прост для понимания" },{ "type": "thumb-up", "id": "solvedMyProblem", "label":"Помог мне решить мою проблему" },{ "type": "thumb-up", "id": "otherUp", "label":"Другое" }] { "last_modified": "Последнее обновление: 2024-08-20 UTC.", "state": "" }