本页内容 按屏幕能力接入显示转向和距离可选:终端按键控制导航导航声音过期与结束
HARDWARE SDK / FreeRTOS

导航

处理 HUD 提示与过期,接入终端导航按键、动作授权和会话回执。

导航通过 Wi-Fi 主业务会话接收转向、道路和距离等 HUD 数据,由仪表 UI 绘制。本章使用 FreeRTOS 托管入口;先完成首次添加与主业务连接并开启型号导航所需能力。

按屏幕能力接入

仪表条件 接入内容 硬件要求
可显示完整导航画面的大屏 导航投屏 + HUD Wi-Fi 热点、视频解码器、屏幕
屏幕很小,无法导航投屏 仅 HUD:转向、路名和距离 Wi-Fi、屏幕

导航投屏通过 Wi-Fi 接收手机生成的地图画面;HUD 通过 Wi-Fi 主会话接收转向、距离等数据,由仪表 UI 绘制,不包含地图底图。大屏接好两条链路,具体布局由仪表 UI 决定;投屏期间仍要持续处理 HUD 事件。

显示转向和距离

大小屏都要在应用事件循环中处理以下事件。大屏的视频解码放到独立任务,不阻塞 HUD 更新:

事件 界面操作
MOTO_EVENT_NAV_BEGIN 进入导航界面
MOTO_EVENT_HUD 用 e.data.hud 更新转向、距离和路名
MOTO_EVENT_HUD_EXPIRED 隐藏过期的转向提示
MOTO_EVENT_NAV_END / MOTO_EVENT_CLOSED 退出导航,清除旧提示

e.data.hud 常用字段:action 为转向动作,distance_m 为距下次转向的米数,remaining_m / remaining_s 为剩余米数和秒数,road / next_road 为当前及下一条路名。

可选:终端按键控制导航

接入实际按键或触摸驱动后,在后台对具体型号显式开启 navigation.control(bit14);SDK 升级不会自动开启既有型号的能力。PROFILE key35 表示协议支持的动作;本次 NAV_BEGIN 才声明当前导航允许的动作。只显示当前允许的按钮,不能仅因型号已授权就发送操作。镜像模式和 BLE 辅助通道不接受导航控制。

本地操作 action
放大一级 MOTO_NAV_ZOOM_IN(0)
缩小一级 MOTO_NAV_ZOOM_OUT(1)
回到当前位置并跟随 MOTO_NAV_RECENTER(2)
查看路线全览 MOTO_NAV_OVERVIEW(3)
结束导航 MOTO_NAV_STOP(4)

Managed 保存完整 MOTO_EVENT_NAV_BEGIN 事件:data.object.id 是导航 ID、session 是所属会话、target=0 表示导航、value 是允许动作掩码(用 1u << action 判断)。输入任务使用这份事件调用 moto_terminal_navigation_action(terminal, &saved_event, action),不能替换成新会话的编号。按键去抖、长按频率和过期输入由硬件层处理,不转发原始触摸坐标。

MOTO_OK 只表示入队。同一导航已有在途动作时返回 MOTO_BUSY,队列满返回 MOTO_FULL;不要自动重复已接受的操作或无限缓存输入。通过 MOTO_EVENT_ACTION_RESULT 且 message=MOTO_NAV_RESULT 接收 data.navigation_result.{status,reason,navigation,action},用原 request/session/navigation 匹配。APP 接受操作也不证明画面已呈现;以实际导航状态与显示确认效果。

回执超时或会话取消产生 UNKNOWN,不等于操作执行失败,不能据此重发。收到 NAV_END、CLOSED 或 UNPAIR 时清除可操作状态和旧输入;STOP 可能在 NAV_END 后才收到回执,不能让它影响下一次导航。

Core 在 NAV_BEGIN 回调内复制导航 ID、会话、source 和动作掩码;回调外由同一所有者线程调用 moto_navigation_actions(sdk, id) / moto_navigation_action(sdk, id, action)。借用数据不能带出回调,不能重入 SDK。Android 与 iOS 都需验证五种动作、手机与终端画面一致,以及断线后旧输入失效。

导航声音

HUD 和视频接口不携带导航音频。内置导航使用系统 / A2DP 音频路由;高德公开文本回调没有原始 PCM,APP 不内置 TTS、不生成替代语音。Wi-Fi 仅传用户授权且系统允许采集的播放音频,详见音频接入。

过期与结束

STREAM_STOP 只结束视频,继续显示仍有效的 HUD。收到 HUD_EXPIRED 后清除过期提示,收到 NAV_END 或 CLOSED 后退出导航;不能用业务心跳延长旧提示的有效期。

大屏继续接入视频投屏;需要缓存底图时接入离线地图。