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

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

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

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

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

Рисунок 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

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

Фильтры явного намерения

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

Все форм-факторы, кроме 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 — Отображает маршрут без начала навигации. Используйте это для запросов, например, directions to 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

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

Фильтры явного намерения

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

<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
Интерпретация: Пользователь хочет найти ближайшие рестораны.

Настраиваемое намерение действия

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

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

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

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

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

Схема: geo.action

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

Фильтры явного намерения

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

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

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

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

Ценить Описание Необязательные ключи параметров Необязательные значения параметров
allow_ferries Измените предпочтительный маршрут, чтобы разрешить использование паромов.
allow_highways Измените предпочтительный маршрут, чтобы разрешить движение по автомагистралям.
allow_tolls Измените предпочтительный маршрут, чтобы разрешить въезд платных дорог.
avoid_ferries Измените предпочтительный маршрут, чтобы избежать переправ через паромы.
avoid_highways Измените предпочтительный маршрут, чтобы избежать автомагистралей.
avoid_tolls Измените предпочтительный маршрут, чтобы избежать платных дорог.
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 Укажите, какой следующий ход.
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
route_overview Показать общий маршрут.
show_alternates Показать альтернативные маршруты.
show_directions_list Показать пошаговые инструкции.
show_satellite Отобразить спутниковую информацию на карте.
show_traffic Отобразить дорожную ситуацию на карте.
time_to_destination Показать расчетное время прибытия в пункт назначения.
time_to_next_turn Укажите предполагаемое время прибытия к следующему повороту.
unmute Включите голосовые подсказки.

Получить статус навигации

Чтобы Gemini мог предоставлять пользователю точную информацию в режиме реального времени при запросе статуса поездки, ваше приложение должно передавать метаданные навигации с помощью службы NavigationManager для автомобилей. Рекомендации по реализации см. в разделе «Передача метаданных навигации» .