实现导航应用 Intent

Google 助理使用三种不同的 Intent 格式,您的导航应用可以支持这些格式。您可以通过在应用的清单中声明本页详细介绍的 Intent 过滤器,实现互操作性并将您的应用与 Google 助理集成。要了解有关 Intent 的更多信息,请参阅 Intent

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

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

Intent data flow

图 1. Intent 数据流。

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

定义用户意图。如果未设置此参数,则默认用户意图被视为 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] 处添加一个到 Bellevue Square, Bellevue 的停车点。

避免

定义导航中要避免的事项。

参数键: 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 搜索查询并在驾驶过程中沿途显示多个结果。

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>

提供的参数

以下参数预计在提供的搜索 Intent 数据中可用。

位置查询

位置查询是用户在驾驶时搜索的位置。此查询可能不精确或沿活动导航路线进行。

参数键: q
值: 用户的搜索词,可以是咖啡馆大学等位置类型,也可以包含-我附近-评分最高等量词。

示例: 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>

提供的参数

以下参数预计在提供的自定义操作 Intent 数据中可用

操作类型

它定义了用户想要在导航应用上执行的自定义操作的类型。

参数键: act

示例

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

  • geo.action:?act=mute
    解释: 用户希望静音语音指示。

  • geo.action:?act=exit_navigation
    解释: 用户希望退出当前导航。

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

下图描述了响应查询中键值对的示例

Custom action intent data flow

图 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 取消静音语音引导。