Gemini 使用导航应用可支持的三种不同格式的 intent。
您可以在应用的清单中声明本页中详述的 intent 过滤器,从而实现互操作性并集成应用和 Gemini。
如需详细了解 intent,请参阅 Intent。
Gemini 导航应用 Intent 类支持以下 intent:
- 导航 intent
- 搜索意图
- 自定义操作 intent
图 1. 意向数据传输。
意图数据中的参数
intent 数据采用 URI 格式,其中包含基于您传递的 intent 的参数。某些参数始终在数据中提供。这意味着您可以预期它们始终具有明确的值。不过,可选参数并不总是在数据中设置了值。如需了解详情,请参阅数据测试。
离线 intent
此页面中列出的所有 intent 都有其离线变体。
您可以通过在方案中附加 .offline 来区分它们。
例如,导航 intent 使用 geo.offline 方案。清单中的这些 intent 过滤器表示应用能够离线支持这些操作。
导航 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=Googleplexgeo:0,0?q=1600+Amphitheatre+parkway&mode=b&intent=add_a_stopgeo:0,0?q=coffee+shop&mode=w&intent=navigationgeo: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
解读:用户想要退出当前导航。
建议的应用行为:在导航应用上完成所请求的操作,或显示不支持的操作消息。
下图展示了响应查询中的键值对示例:
图 2. 自定义操作 intent 数据传输。
键值对:
"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 汽车服务提供导航元数据。如需了解实现指南,请参阅传达导航元数据。