HarmonyOS Car Kit 监听 HiCar 连接状态详解

33 阅读3分钟

华为第四期开发者活动

HarmonyOS Car Kit 监听 HiCar 连接状态详解

在智能出行和 HiCar(华为车联) 生态系统中,应用往往需要根据 车机与手机之间的连接状态 去调整 UI 或业务流程,例如: 当 HiCar 连接成功时自动进入车载导航模式 当连接断开时回退到手机界面并提示用户 根据连接状态动态呈现功能按钮或提示信息

为此,HarmonyOS Car Kit 提供了连接状态监听能力,让开发者可以轻松感知 HiCar 的连接状态变化,从而构建更智能的车载体验。以下是详细介绍。(华为开发者)


什么是 HiCar 连接状态监听

HiCar 连接状态监听 是指开发者可以通过 Car Kit 提供的能力订阅 HiCar(车机连接)状态变化事件,当连接状态发生改变时(连接成功 / 断开等),应用会收到回调通知,从而在代码中做出相应处理。(华为开发者)

这对于构建车载场景应用尤为重要,因为你需要根据连接状态差异调整 UI、控制导航行为、提示用户等。


监听前的准备

1. 导入 Car Kit 模块

在你的项目代码中导入 Car Kit 的连接状态模块,例如:

 import { smartMobilityCommon } from '@kit.CarKit';

这段代码引入了 Car Kit 中用于监听连接状态的 API。(华为开发者)


核心步骤:注册连接状态监听

监听 HiCar 的连接状态主要分为以下步骤:


1. 获取 SmartMobilityAwareness 实例

 let awareness = smartMobilityCommon.getSmartMobilityAwareness();

这一步是为了获取智能出行状态感知能力的入口对象。(华为开发者)


2. 注册连接状态监听

 // 指定要监听的业务类型,例如 HiCar
 let types = [smartMobilityCommon.SmartMobilityType.HICAR];
 ​
 // 连接状态回调函数
 const callback = (info) => {
   console.log('HiCar connection info:', info);
 };
 ​
 // 注册监听
 awareness.on('smartMobilityStatus', types, callback);

🔹 types 是一个数组,表示需要监听的连接业务类型,这里我们只监听 HiCar 连接状态。 🔹 当状态发生变化时,回调函数会接收到一个包含状态信息的对象。(华为开发者)


回调信息内容是什么?

在回调函数中,系统会返回一个状态信息对象,该对象包含 HiCar 当前的连接状态以及相关参数。当状态发生变化(例如成功连接 / 断开连接)时,你的回调就会被触发。(华为开发者)

虽然官方示例没有列出完整字段,但通常状态信息包含:

字段描述
status当前连接状态(connected / disconnected 等)
type业务类型(如 HiCar 等)
timestamp状态变化时间戳

实际开发建议

在 UI 中提示连接状态

当监听到连接状态改变时,你可以:

在 App 中弹窗提示 修改导航按钮状态 更新顶部状态图标

示例:

 const callback = (info) => {
   if (info.status === 'connected') {
     showToast('HiCar 已连接');
   } else {
     showToast('HiCar 已断开');
   }
 };

取消监听(Clean-Up)

在不需要监听时,例如界面销毁时别忘了取消监听:

 awareness.off('smartMobilityStatus', types, callback);

这样可以避免内存泄露或不必要的回调。(CSDN博客)


与获取连接状态的关系

监听是一种 被动等待连接状态变化 的方式,而你也可以主动获取当前连接状态(例如 App 启动时):

查看文档 “获取 HiCar 连接状态” 了解主动获取方法。(华为开发者)


小结

监听 HiCar 连接状态是车载场景应用中非常重要的一步,它让应用能够:

实时感知车机连接或断开 做出恰当的 UI 与行为响应 提升车载使用体验与智能感知能力

总结来说:

  1. 导入模块 → 2. 获取 Awareness 实例
  2. 注册监听并接收回调 → 4. 后续业务处理或 UI 更新
  3. (可选)取消监听

以上流程适用于各种车辆连接判断场景,例如:导航开始前检查连接、媒体播放推送至车机等。🎯