实现导航应用 intent

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

Google 助理导航应用 Intent 类支持以下 intent:

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

intent 数据流

图 1. intent 数据流。

意图数据中的参数

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

离线 intent

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

使用导航 intent 来执行用户导航到特定目的地的请求。此目的地可以是单个地点(地址),也可以是多个地点(例如咖啡馆和加油站)。intent 数据遵循为每个 intent 指定的 URI 格式。

intent 格式

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 格式,以便 Google 助理知道您的导航应用可以接收导航 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

定义用户 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 解读:用户想在 Bellevue Square, Bellevue 添加一个经停点,当前坐标为 [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

使用搜索 intent 搜索查询,并在驾车时显示路线沿途的多条结果。

intent 格式

Intent 类针对搜索 intent 使用以下格式:

类别android.intent.category.DEFAULT

操作android.intent.action.VIEW

架构geo

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

建议的应用行为:打开与用户查询相符的地点列表。

清单 intent 过滤器

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

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

提供的参数

所提供的搜索意图数据中应包含以下参数。

位置查询

位置查询是指用户在驾车时搜索的地点。此查询可能不精确,或者沿着有效的导航路线。

参数键q
:用户的搜索字词,可以是地点类型(例如咖啡馆学院),但也可以包含量词,例如 -near me(在我附近)或 -with best rating(评分最高)。

示例geo:0,0?q=restaurants+nearby
解读:用户想要搜索附近的餐厅。

自定义操作 intent

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

intent 格式

Intent 类针对自定义操作 intent 使用以下格式:

类别android.intent.category.DEFAULT

操作android.intent.action.VIEW

架构geo.action

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

清单 intent 过滤器

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

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

提供的参数

提供的自定义 Action 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

可能的值

下表列出了 Google 助理可以作为用户尝试在导航应用中执行的操作传递的可能值。

说明 可选参数键 可选参数值
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 显示到目的地的预计到达时间。
time_to_next_turn 显示下一个转弯的预计到达时间。
unmute 开启语音导航。