

2024 年底,我接手了一个极具挑战性的项目:构建一套面向道路安全的 车-空协同智能感知系统。目标很明确——通过“无人机 + 车载终端 + 云端地图”的联动,实现对路面风险(如坑洼、障碍物、事故)的秒级发现与预警。
起初,我本能地想到用传统方案:手机 App 接收云端推送,车载屏显示静态地图。但很快意识到,这仍是“单车感知”的延伸,无法发挥 空域视角 与 多设备协同 的真正价值。

直到团队决定全面采用 HarmonyOS NEXT 作为开发底座,我才真正看到了突破口:鸿蒙原生的分布式能力,或许正是打通“空-地”感知链的关键。
过去做跨端开发,我的策略是“一套逻辑,多套界面”——为手机写一套 Vue 页面,为车机另写一套 React Native 组件。这种方式维护成本高,且难以保证体验一致性。
而在 HarmonyOS 中,声明式 UI(ArkTS) + 自适应布局引擎 提供了更优雅的解法。
我们的系统需运行于三类典型设备:

我摒弃了“按设备类型写分支”的做法,转而采用 基于屏幕特征的动态渲染策略:
// 获取当前设备显示信息
import display from '@ohos.display';
@Entry
@Component
struct RoadRiskDashboard {
build() {
Column({ space: 12 }) {
// 动态标题栏
this.renderHeader()
// 核心内容区:根据宽度决定布局模式
if (display.defaultWidth >= 800) {
// 大屏:左右分栏(地图 + 风险列表)
Row() {
MapView().width('60%')
RiskEventList().width('40%')
}
} else {
// 小屏:上下堆叠,优先保障地图可视性
MapView().height(320)
RiskEventList()
}
// 底部操作栏:仅在触控设备显示
if (this.isTouchDevice()) {
ActionBar()
}
}
.padding(16)
}
renderHeader() {
Text('道路风险预警中心')
.fontSize(display.defaultWidth > 600 ? 24 : 18)
.fontWeight(FontWeight.Bold)
}
isTouchDevice(): boolean {
// 可通过 inputManager 或设备类型判断
return true; // 简化示例
}
}这种模式下,UI 不再绑定具体设备,而是响应环境特征。即使未来接入 AR 眼镜或指挥中心大屏,只需扩展判断逻辑,无需重写整个页面。
如果说 UI 自适应解决了“看”的问题,那么 分布式软总线(DSoftBus) 则解决了“联”与“算”的问题。

在传统架构中,无人机与车载终端通常通过私有协议通信,开发复杂、延迟高、安全性弱。而 HarmonyOS 的分布式能力,让两者如同“同一台设备的不同模块”。
我们利用 @ohos.distributedHardware.deviceManager 实现自动发现:
import deviceManager from '@ohos.distributedHardware.deviceManager';
deviceManager.on('deviceFound', (deviceInfo) => {
if (deviceInfo.deviceName.includes('Drone') && deviceInfo.networkId) {
// 自动发起可信认证
deviceManager.authenticateDevice(deviceInfo, (err, token) => {
if (!err) {
console.log('无人机已加入本地设备群');
this.droneNetworkId = deviceInfo.networkId;
}
});
}
});一旦组网成功,无人机便成为车载系统的“远程感知单元”。
我们定义了一个 RoadRiskService,部署在无人机端,负责:
车载端通过 分布式 RPC 直接调用该服务:
// 车载端发起巡检任务
async startAerialInspection(targetLocation: GeoPoint) {
const remoteService = await rpc.connectRemoteObject(
this.droneNetworkId,
'com.example.road.RoadRiskService'
);
const result = await remoteService.invoke('scanArea', {
center: targetLocation,
radius: 50 // 米
});
// 结果自动同步至本地数据库
this.updateLocalRiskEvents(result.events);
}得益于 DSoftBus 的 P2P 通信优化 和 QoS 保障机制,即使在无蜂窝网络的山区高速,端到端延迟仍控制在 200ms 以内。
为避免多端数据冲突,我们采用 分布式数据管理(DDM) 构建统一的风险事件模型:
// 定义分布式数据模型
const riskStore = distributedData.createKVManager({
bundleName: 'com.example.roadguardian',
storeName: 'risk_events'
});
// 任一设备新增事件,自动同步至其他设备
riskStore.put('event_001', JSON.stringify({
id: 'event_001',
type: 'pothole',
location: { lat: 31.23, lng: 121.47 },
timestamp: Date.now(),
source: 'drone_01'
}));这意味着:运维人员在手机上标记“已处理”,车载大屏和指挥中心会实时更新状态,无需手动刷新或轮询。
初期,我们只关注“能不能通”。但随着测试深入,更多工程问题浮现:
我们逐步引入:
最终,系统不仅“能用”,更“可靠、可预期、可扩展”。
一年前,我对“多端开发”的理解还停留在“写多套 UI”。如今,我学会了用 分布式思维 重新定义应用——设备不再是孤岛,而是可组合、可调度、可协同的资源单元。
HarmonyOS 给我的不仅是工具,更是一种 系统级的协作范式。在这个范式下,“车-空协同”不再是一个炫酷概念,而是一套可落地、可量产、可进化的技术路径。
这条路,我才刚刚启程。但我知道,前方是真正的“万物互联”。
代码终将过时,但协同的思想永存。