Реализация намерений навигационного приложения

Google Assistant использует три разных формата намерений, которые может поддерживать ваше навигационное приложение. Вы можете добиться совместимости и интегрировать свое приложение и Google Assistant, объявив фильтры намерений, подробно описанные на этой странице, в манифесте вашего приложения. Дополнительные сведения о намерениях см. в Intent .

Класс Intent навигационного приложения Assistant поддерживает следующие намерения:

  • Цель навигации
  • Цель поиска
  • Намерение специального действия

Поток данных намерения

Рисунок 1. Поток данных намерения.

Параметры в данных намерения

Данные намерения соответствуют формату URI, содержащему параметры, основанные на передаваемом вами намерении. Некоторые параметры всегда предоставляются в данных. Это означает, что вы можете ожидать, что они всегда будут иметь явное значение. Однако необязательные параметры не всегда имеют значения, установленные в данных. Дополнительную информацию см. в разделе Тест данных .

Офлайн-намерения

Для всех намерений, перечисленных на этой странице, доступны автономные варианты. Вы можете отличить их, добавив к их схеме .offline . Например, цель навигации использует схему geo.offline . Эти фильтры намерений в манифесте означают способность приложения поддерживать эти действия в автономном режиме.

Используйте намерение навигации для выполнения запроса пользователя о переходе к определенному пункту назначения. Этим пунктом назначения может быть либо одно местоположение (адрес), либо несколько мест (например, кафе и заправочные станции). Данные намерения соответствуют формату URI, указанному для каждого намерения.

Формат намерения

Класс Intent использует следующий формат для намерения навигационного приложения:

Категория: android.intent.category.DEFAULT

Действие:

  • Android Auto и Android Automotive OS: androidx.car.app.action.NAVIGATE
  • Другие форм-факторы: android.intent.action.NAVIGATE

Схема: geo

Примеры:

  • geo:0,0?q=Googleplex
  • geo:0,0?q=1600+Amphitheatre+parkway&mode=b&intent=add_a_stop
  • geo:0,0?q=coffee+shop&mode=w&intent=navigation
  • geo:1.1,2.2?q=Starbucks+on+Main+Street&mode=w&intent=navigation

Рекомендуемое поведение приложения: начинается переход к указанному местоположению или пользователю предлагается выбрать один из нескольких вариантов.

Фильтры манифеста намерений

Объявите следующий формат намерений в файле манифеста вашего приложения, чтобы Google Assistant знал, что ваше навигационное приложение может получать намерения навигации.

Все форм-факторы, кроме Android Auto и Android Automotive OS:

<intent-filter>
  <action android:name="android.intent.action.NAVIGATE" />
  <category android:name="android.intent.category.DEFAULT"/>
  <data android:scheme="geo" />
</intent-filter>

Android Auto и Android Automotive OS:

<intent-filter>
  <action android:name="androidx.car.app.action.NAVIGATE" />
  <category android:name="android.intent.category.DEFAULT"/>
  <data android:scheme="geo" />
</intent-filter>

Поставляемые параметры

Ожидается, что следующие параметры будут доступны в предоставленных данных о намерениях навигационного приложения.

Запрос местоположения или географические координаты

Каждый запрос намерения навигации содержит один или оба этих параметра, в зависимости от типа запрашиваемых данных:

  • Запрос местоположения

    Относится к местоположению, к которому пытается перейти пользователь. Используйте эти данные для определения пункта назначения пользователя.

    Ключ параметра: q
    Значение: пункт назначения, запрошенный пользователем.

    Пример: geo:0,0?q=Golden+Gate+Bridge
    Интерпретация: Пользователь хочет перейти к мосту Золотые Ворота .

  • Географические координаты (широта и долгота)

    Относится к конкретным координатам, используемым пользователем для навигации.

    Ключ параметра: geo:lat,long
    Значение: запрошенные пользователем координаты.

    Пример: geo:1.1,2.2?mode=w&intent=navigation
    Интерпретация: Пользователь хочет перейти к координатам (1.1, 2.2).

Дополнительные параметры

В этом разделе описаны необязательные параметры, предоставляемые в данных намерения навигационного приложения.

Намерение

Определяет намерение пользователя. Если этот параметр не установлен, намерением пользователя по умолчанию считается navigation .

Ключ параметра: intent
Возможные значения:

  • navigation [значение по умолчанию] — заменяет пункт назначения и запускает навигацию. Используйте это для таких запросов, как переход к x .
  • add_a_stop — добавляет остановку в качестве следующего пункта назначения вместе с предыдущими пунктами назначения. Используйте это для таких запросов, как добавить остановку в x .
  • directions — показывает направления маршрута без запуска навигации. Используйте это для таких запросов, как направление к x .

Пример: geo:47.61594547836694,-122.20373173098756?q=575+Bellevue+Square,+Bellevue,+WA+98004&intent=add_a_stop Интерпретация: Пользователь хочет добавить остановку на площади Бельвью, Бельвью, с текущими координатами [47.6, -122,2].

Избегать

Определяет вещи, которых следует избегать при навигации.

Ключ параметра: avoid
Возможные значения:

  • f - паромы
  • h - автомагистрали
  • t - дорожные сборы

Пример: geo:0,0?q=googleplex&avoid=tf
Интерпретация: пользователь хочет перейти в Googleplex, минуя платные дороги и паромы.

Режим путешествия

Режим путешествия представляет собой способ передвижения, указанный пользователем в запросе.

Ключ параметра: mode
Возможные значения:

  • b - велосипед
  • d - диск
  • x - такси
  • l - двухколесный транспорт
  • r - транзит
  • w - прогулка

Пример: geo:0,0?q=Googleplex&mode=r
Интерпретация: пользователь хочет добраться до Googleplex на общественном транспорте.

Вход

Используется для регистрации источника входа.

Возможные значения: помощник

Пример: geo:47.61594547836694,-122.20373173098756?entry=assistant

Цель поиска

Используйте намерение поиска для поиска запроса и отображения нескольких результатов по маршруту во время вождения.

Формат намерения

Класс Intent использует следующий формат для целей поиска:

Категория: android.intent.category.DEFAULT

Действие: android.intent.action.VIEW

Схема: geo

Пример: geo:0,0?q=restaurants+nearby

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

Фильтры манифеста намерений

Объявите следующий формат намерений в файле манифеста вашего приложения, чтобы Google Assistant знал, что ваше навигационное приложение может получать намерения поиска:

<intent-filter>
  <action android:name="android.intent.action.VIEW" />
  <category android:name="android.intent.category.DEFAULT"/>
  <data android:scheme="geo" />
</intent-filter>

Поставляемые параметры

Ожидается, что в предоставленных данных о намерениях поиска будут доступны следующие параметры.

Запрос местоположения

Запрос местоположения – это местоположение, которое пользователь ищет во время вождения. Этот запрос может быть неточным или соответствовать активному маршруту навигации.

Ключ параметра: q
Значение: поисковый запрос пользователя, который может представлять собой тип местоположения, например кафе или колледж , но также может иметь квантификаторы, такие как -рядом со мной или -с лучшим рейтингом .

Пример: geo:0,0?q=restaurants+nearby
Интерпретация: Пользователь хочет найти близлежащие рестораны.

Намерение специального действия

Используйте собственное намерение для индивидуальных действий, таких как сообщение об авариях и завершение навигации. Тип основного действия определяется параметром запроса act . Вы можете установить дополнительные параметры в зависимости от типа действия.

Формат намерения

Класс Intent использует следующий формат для намерения специального действия:

Категория: android.intent.category.DEFAULT

Действие: android.intent.action.VIEW

Схема: geo.action

Пример: geo.action:?act=report&accident_type=major

Фильтры манифеста намерений

Объявите следующий формат намерений в файле манифеста вашего приложения, чтобы сообщить Google Assistant, что ваше навигационное приложение может получать намерения специальных действий.

<intent-filter>
  <action android:name="android.intent.action.VIEW" />
  <category android:name="android.intent.category.DEFAULT"/>
  <data android:scheme="geo.action" />
</intent-filter>

Поставляемые параметры

Ожидается, что в предоставленных данных о намерении специального действия будут доступны следующие параметры:

Тип действия

Он определяет тип настраиваемого действия, которое пользователь хочет выполнить.

Ключ параметра: act

Примеры:

  • geo.action:?act=report_crash&accident_type=major
    Интерпретация: Пользователь хочет сообщить о крупной аварии.

  • geo.action:?act=mute
    Интерпретация: Пользователь хочет отключить голосовые инструкции.

  • geo.action:?act=exit_navigation
    Интерпретация: Пользователь хочет выйти из текущей навигации.

Рекомендуемое поведение приложения: выполните запрошенное действие в навигационном приложении или отобразите сообщение о неподдерживаемом действии.

На следующем рисунке показан пример пар ключ-значение в ответном запросе:

Поток данных о намерении специального действия

Рисунок 2. Поток данных о намерении специального действия.

Пара ключ-значение:

"act": "report_crash"
"road_direction": other_side"

Каждое специальное действие всегда имеет ключевой параметр act . В вышеупомянутом примере кода некоторые действия могут иметь дополнительные пары ключ-значение. Например, act=report_crash поддерживает следующие дополнительные ключи: accident_type и road_direction .

Ключ accident_type может поддерживать два значения: minor и major .

Возможные значения

В таблице перечислены возможные значения, которые Google Assistant может передать в качестве действия, которое пользователь пытается выполнить в навигационном приложении.

Ценить Описание Дополнительные клавиши параметров Дополнительные значения параметров
allow_ferries Измените предпочтения маршрута, чтобы разрешить переправу.
allow_highways Измените предпочтения маршрута, чтобы разрешить движение по автомагистралям.
allow_tolls Измените предпочтения маршрута, чтобы разрешить взимание платы за проезд.
apply_electric_vehicle_connector_filter Показывайте только места зарядки электромобилей, соответствующие разъему автомобиля.
apply_electric_vehicle_fast_charging_filter Показывайте только места зарядки электромобилей, которые являются устройствами быстрой зарядки.
apply_electric_vehicle_payment_filter Показывайте только места зарядки электромобилей, которые требуют оплаты.
avoid_ferries Измените предпочтения маршрута, чтобы избежать паромов.
avoid_highways Измените предпочтения маршрута, чтобы избежать шоссе.
avoid_tolls Измените предпочтения маршрута, чтобы избежать платы за проезд.
clear_search_results Очистить результаты поиска на карте.
distance_to_destination Показать расстояние до пункта назначения.
distance_to_next_turn Показать расстояние до следующего поворота.
eta Покажите расчетное время прибытия до пункта назначения.
exit_navigation Выйти или отменить навигацию.
follow_mode Измените вид карты на режим следования.
go_back Вернитесь к предыдущему действию на карте.
hide_satellite Измените настройки карты, чтобы скрыть информацию о спутнике.
hide_traffic Измените настройки карты, чтобы скрыть информацию о пробках.
mute Отключить голосовое сопровождение.
query_current_road Покажите, по какой дороге в данный момент находится пользователь.
query_destination Покажите, какое предназначение.
query_next_turn Покажите, какой следующий поворот.
remove_electric_vehicle_connector_filter Удалите фильтрацию мест зарядки электромобилей, соответствующих разъему автомобиля.
remove_electric_vehicle_fast_charging_filter Удалите фильтрацию мест зарядки электромобилей, которые являются станциями быстрой зарядки.
remove_electric_vehicle_payment_filter Удалите фильтрацию мест зарядки электромобилей, требующих оплаты.
report_crash Сообщать о сбоях. accident_type minor
major
road_direction this_side
other_side
report_hazard Сообщайте об опасностях. hazard_type animal
broken_traffic_light
construction
flooding
fog
hail
ice
missing_sign
object_on_road
pothole
roadkill
snow
vehicle
weather
road_direction this_side
other_side
location_on_road on_road
on_shoulder
report_police Сообщите о деятельности полиции. road_direction this_side
other_side
report_road_closure Сообщите о перекрытии дорог. road_closure_type partial
full
report_traffic Сообщайте о трафике. traffic_type moderate
heavy
standstill
road_direction this_side
other_side
resume_navigation Возобновить навигацию.
route_overview Показать обзор маршрута.
show_alternates Показать альтернативные маршруты.
show_directions_list Покажите пошаговые инструкции.
show_satellite Показать информацию о спутнике на карте.
show_traffic Покажите трафик на карте.
time_to_destination Показать ETA до места назначения.
time_to_next_turn Покажите расчетное время прибытия до следующего поворота.
unmute Включить голосовые подсказки.