实现导航应用 intent

Gemini 使用导航应用可支持的三种不同格式的 intent。 您可以在应用的清单中声明本页中详述的 intent 过滤器,从而实现互操作性并集成应用和 Gemini。 如需详细了解 intent,请参阅 Intent

Gemini 导航应用 Intent 类支持以下 intent:

  • 导航 intent
  • 搜索意图
  • 自定义操作 intent

Intent 数据传输

图 1. 意向数据传输。

意图数据中的参数

intent 数据采用 URI 格式,其中包含基于您传递的 intent 的参数。某些参数始终在数据中提供。这意味着您可以预期它们始终具有明确的值。不过,可选参数并不总是在数据中设置了值。如需了解详情,请参阅数据测试

离线 intent

此页面中列出的所有 intent 都有其离线变体。 您可以通过在方案中附加 .offline 来区分它们。 例如,导航 intent 使用 geo.offline 方案。清单中的这些 intent 过滤器表示应用能够离线支持这些操作。

使用导航 intent 来满足用户前往特定目的地的请求。此目的地可以是单个位置(地址),也可以是多个位置(例如咖啡店和加油站)。 intent 数据采用为每个 intent 指定的 URI 格式。

意向格式

Intent 类使用以下格式来表示导航应用 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

建议的应用行为:开始导航到指定位置,或要求用户从多个选项中进行选择。

清单 intent 过滤器

在应用的清单文件中声明以下 intent 格式,以便 Gemini 知道您的导航应用可以接收导航 intent。

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

提供的参数

所提供的导航应用 intent 数据中应包含以下参数。

位置查询或地理坐标

每个导航 intent 查询都包含以下一个或两个参数,具体取决于所请求的数据类型:

  • 位置查询

    指用户尝试前往的位置。使用此数据来解析用户的目的地。

    参数键q
    :用户查询的目的地。

    示例geo:0,0?q=Golden+Gate+Bridge
    解读:用户想要前往金门大桥

  • 地理坐标(纬度和经度)

    指用户用于导航的特定坐标。

    参数键geo:lat,long
    :用户查询的坐标。

    示例geo:1.1,2.2?mode=w&intent=navigation
    解读:用户想要前往坐标 (1.1, 2.2)。

可选参数

本部分介绍了在导航应用 intent 数据中提供的可选参数。

Intent

定义用户意图。如果未设置此参数,则默认用户意图为 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。

入门

用于记录入口来源。

可能的值:assistant

示例geo:47.61594547836694,-122.20373173098756?entry=assistant

搜索意图

使用搜索意图搜索查询,并在驾驶时沿路线显示多条结果。

意向格式

Intent 类使用以下格式来表示搜索 intent:

类别android.intent.category.DEFAULT

操作android.intent.action.VIEW

架构geo

示例geo:0,0?q=restaurants+nearby

建议的应用行为:打开符合用户查询条件的营业地点列表。

清单 intent 过滤器

在应用的清单文件中声明以下 intent 格式,以便 Gemini 知道您的导航应用可以接收搜索 intent:

<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

使用自定义 intent 来执行自定义操作,例如报告事故和结束导航。主要操作类型由 act 查询参数定义。您可以根据操作类型设置其他参数。

意向格式

Intent 类使用以下格式表示自定义操作 intent:

类别android.intent.category.DEFAULT

操作android.intent.action.VIEW

架构geo.action

示例geo.action:?act=report&accident_type=major

清单 intent 过滤器

在应用的清单文件中声明以下 intent 格式,以便让 Gemini 知道您的导航应用可以接收自定义操作 intent。

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

提供的参数

所提供的自定义操作 intent 数据中应包含以下参数:

操作类型

它定义了用户想要执行的自定义操作的类型。

参数键act

示例

  • geo.action:?act=report_crash&accident_type=major
    解读:用户想报告一起重大事故。

  • geo.action:?act=mute
    解读:用户想要将语音指令静音。

  • geo.action:?act=exit_navigation
    解读:用户想要退出当前导航。

建议的应用行为:在导航应用上完成所请求的操作,或显示不支持的操作消息。

下图展示了响应查询中的键值对示例:

自定义操作 intent 数据传输

图 2. 自定义操作 intent 数据传输。

键值对

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

每个自定义操作始终都有一个 act 参数作为键。在上述示例代码中,某些操作可以具有额外的键值对。例如,act=report_crash 支持以下额外的键:accident_typeroad_direction

accident_type 可以支持两个值,即 minormajor

可能的值

下表列出了 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 汽车服务提供导航元数据。如需了解实现指南,请参阅传达导航元数据