第7.15篇:分布式软总线 2.0------多设备协同新范式
难度 :⭐⭐⭐ 高级
前置知识 :第 4.4 篇 跨设备分享(systemShare 集成)
涉及源文件 :
products/default/src/main/ets/pages/HarmonyFeaturesPage.ets

概述
在"画伴梦工厂"中,我们已经在第 4.4 篇中通过 systemShare 实现了基础的跨设备分享------用户可以将创作完成的动画视频一键发送到平板、智慧屏等设备上观看。然而,"分享"本质上是一次性传输:将文件从设备 A 发送到设备 B,传输完成后,两个设备各自为政。
有没有一种能力,可以让设备之间不再是"发完即止"的短暂关系,而是持续协同、实时互动?
这正是 分布式软总线 2.0(Distributed Soft Bus 2.0) 要解决的核心问题。作为 HarmonyOS 7 最底层的通信基础设施,分布式软总线 2.0 将设备间的连接延迟压缩至 8 毫秒以内 ,支持单链路 最多 16 台设备同时协同 ,并通过设备虚拟化技术将每台设备的硬件能力(摄像头、屏幕、扬声器、传感器等)抽象为可共享的资源池。
对于"画伴梦工厂"而言,这意味着------家长可以拿出平板,将平板的摄像头借给手机用于拍摄画作;两个孩子可以在各自的平板上同时绘制同一幅画,实时看到对方的笔触;创作好的动画可以在手机、平板、智慧屏三台设备上同步播放,形成环绕式观影体验。
本文将深入剖析分布式软总线 2.0 的核心架构与技术突破、与第 4.4 篇 systemShare 的本质差异、设备虚拟化与 A2UI 协议的原理,以及如何在项目中落地多设备协同功能。
一、分布式软总线 2.0:核心指标与技术突破
1.1 关键指标
分布式软总线 2.0 在 HarmonyOS 7(HDC 2026 发布)中完成了从底层到上层的全面重构,核心指标实现了质的飞跃:
| 指标 | HarmonyOS 6 | HarmonyOS 7(软总线 2.0) | 提升幅度 |
|---|---|---|---|
| 端到端通信延迟 | 20~45 ms | ≤ 8 ms | 75%+ 降低 |
| 最大组网设备数 | 8 台 | 16 台 | 2 倍 |
| 组网效率 | 基础 | 提升 40% | 显著 |
| 并发传输速率 | ~80 MB/s | ≥ 250 MB/s | 3 倍+ |
| 设备发现时间 | ~500 ms | < 200 ms | 60%+ 缩短 |
| 功耗(同负载) | 基准 | 降低 40% | 大幅 |
这些数字意味着什么?8 毫秒的延迟,人类完全无法感知(一次眨眼约 200 毫秒)。这意味着跨设备的操作可以像操作本地设备一样顺畅------在平板上绘画时,笔触实时同步到手机屏幕,中间隔着 8 毫秒的传输延迟,用户完全感觉不到"延迟"的存在。
1.2 从 HarmonyOS 6 到 7:三大性能跃升
跃升一:更快
从第 4.4 篇我们知道,基于 systemShare 的跨设备分享背后依赖的就是分布式软总线。在 HarmonyOS 6 时代,软总线延迟在 20~45 ms 之间,对于文件传输(如分享视频)已经完全够用。但在 HarmonyOS 7 的软总线 2.0 中,延迟被压到 8 ms 以内,这打开了实时交互的大门------从"传输文件"到"同步操作"。
跃升二:更可靠
软总线 2.0 引入了多链路聚合技术。当设备间同时存在 Wi-Fi、蓝牙、星闪(NearLink)等多条物理链路时,系统会在链路层将它们聚合为一条虚拟通道。即使某一条链路出现干扰或丢包,数据会自动通过其他链路重传,应用层完全无感知。
跃升三:更低功耗
通过引入智能休眠与唤醒机制,软总线 2.0 在待机状态下的功耗相比 HarmonyOS 6 降低了约 40%。后台心跳检测的频率根据设备间的距离和信号质量动态调节------近距离强信号下降低检测频率以省电;远距离弱信号下提高检测频率以保连接。
二、技术架构:三阶段极速组网
分布式软总线 2.0 的组网流程分为三个阶段,整个流程可在 200 毫秒内完成:
2.1 第一阶段:异构网络融合发现(< 50 ms)
软总线 2.0 同时监听多种物理通道,以最大化发现速度和可靠性:
| 物理通道 | 角色 | 优势 |
|---|---|---|
| 蓝牙 BLE 5.0 | 低功耗广播设备身份标识 | 功耗极低,始终在线 |
| Wi-Fi 探测帧 | 同 AP 设备间快速交换能力信息 | 延迟低,可携带丰富元数据 |
| 星闪(NearLink) | 首次碰一碰配对 | 厘米级空间感知,建立初始信任 |
| NFC | 快速触碰配对 | 零配置,碰触即连 |
当手机靠近已登录同一华为账号的平板时,软总线通过 BLE 广播携带设备 ID 和公钥指纹。平板接收到广播后,与本地的可信设备列表比对------如果匹配,立即进入下一阶段。
2.2 第二阶段:零感安全认证(< 80 ms)
传统设备配对需要用户输入 PIN 码或点击确认弹窗,体验割裂且繁琐。软总线 2.0 利用设备证书体系实现了零用户交互的自动认证:
- 预置证书:每台设备出厂时预置唯一设备证书(由华为 PKI 体系签发)
- 首次绑定:设备登录同一华为账号时,通过安全通道交换公钥并关联用户身份
- 后续连接:双方直接使用证书进行双向 TLS 握手,完成身份校验
整个认证过程使用国密 SM2/SM4 算法加密传输,通信内容端到端加密。即使攻击者截获了握手数据包,也无法伪造设备身份或解密通信内容。
2.3 第三阶段:最优传输通道协商(< 70 ms)
认证完成后,软总线根据任务类型动态选择最优物理链路:
| 任务类型 | 优先通道 | 带宽 | 延迟 |
|---|---|---|---|
| 音频流(实时语音) | 星闪 / BLE Audio | 2~12 Mbps | < 5 ms |
| 视频投屏(4K) | Wi-Fi 6(6 GHz) | ~800 Mbps | ~15 ms |
| 实时绘画同步 | 星闪(低功耗模式) | 12 Mbps | < 3 ms |
| 大文件传输 | Wi-Fi + 蓝牙聚合 | > 1 Gbps | --- |
| 传感器数据 | 星闪(超低功耗) | 1~12 Mbps | < 1 ms |
若环境变化(如用户离开 Wi-Fi 覆盖区走到户外),软总线可无缝切换至蜂窝网络,保持已建立的会话不中断。这种"多链路冗余 + 动态切换"能力是软总线 2.0 相较于前代的关键升级。
三、设备虚拟化:硬件能力共享
3.1 虚拟化核心思想
分布式软总线 2.0 最革命性的能力是设备虚拟化(Device Virtualization)。它将每台设备的物理硬件抽象成虚拟资源,通过软总线暴露给网络中的其他设备使用。
┌─────────────────────────────────────────────────────────┐
│ 虚拟硬件资源池 │
├─────────────┬─────────────┬─────────────┬───────────────┤
│ 手机 │ 平板 │ 智慧屏 │ 手表 │
│ ┌────────┐ │ ┌────────┐ │ ┌────────┐ │ ┌────────┐ │
│ │摄像头 │ │ │屏幕 │ │ │扬声器 │ │ │传感器 │ │
│ │ NPU │ │ │触控笔 │ │ │显示面板 │ │ │心率计 │ │
│ │ 屏幕 │ │ │摄像头 │ │ │麦克风 │ │ │GPS │ │
│ │ ... │ │ │ ... │ │ │ ... │ │ │ ... │ │
│ └────────┘ │ └────────┘ │ └────────┘ │ └────────┘ │
└─────────────┴─────────────┴─────────────┴───────────────┘
▲ ▲
│ 分布式软总线 2.0 │
└───────────────────────────────────────────────┘
│
┌────────────┴────────────┐
│ 统一虚拟化 API 层 │
│ @kit.DistributedKit │
└─────────────────────────┘
3.2 摄像头共享
在"画伴梦工厂"中,一个典型的场景是:家长用手机打开应用,调用平板的后置摄像头来拍摄高质量的儿童画作。
typescript
import { distributedCamera } from '@kit.DistributedKit';
// 发现远程摄像头资源
const cameras = await distributedCamera.getRemoteCameraList();
// 返回: [{ deviceId: '平板123', cameraId: 'back_cam', resolution: '48MP' }]
// 获取远程摄像头实例
const remoteCam = await distributedCamera.createRemoteCamera({
deviceId: '平板123',
cameraId: 'back_cam'
});
// 将远程摄像头的画面渲染到手机端的 Image 组件中
// 所有视频流通过软总线实时传输,延迟 < 10ms
this.remoteCameraSurface = remoteCam.getSurface();
设备虚拟化的美妙之处在于:应用代码几乎不需要区分本地和远程摄像头 。开发者通过 @kit.DistributedKit 获取远程设备列表,然后像使用本地摄像头一样使用远程摄像头------软总线和虚拟化引擎在底层完成了所有差异屏蔽。
3.3 屏幕共享与投射
屏幕共享能力比 systemShare 的"文件投送"更进一步------它传输的是实时的屏幕内容流:
typescript
import { distributedScreen } from '@kit.DistributedKit';
// 将当前应用的画面投射到智慧屏
const remoteScreen = await distributedScreen.createRemoteScreen({
targetDeviceId: '智慧屏456',
displayMode: 'mirror' // mirror 镜像模式 / extend 扩展模式
});
// 开始投射
await remoteScreen.startDisplay();
// 智慧屏上实时显示手机画面,延迟约 15ms(4K 分辨率下)
在"画伴梦工厂"中,可以设计这样的用户体验:孩子的画作在手机上创作完成后,一键"投屏"到智慧屏上,全家人一起观看动画播放。不同于第 4.4 篇中 systemShare 的"发送视频文件后自行播放",屏幕共享模式下手机端的操作会实时反映在智慧屏上------家长可以用手机控制播放进度、切换故事场景,智慧屏只负责显示。
3.4 从"文件传输"到"硬件共享"
| 维度 | systemShare(第 4.4 篇) | 设备虚拟化(本篇) |
|---|---|---|
| 数据形态 | 文件(视频/图片/文本) | 硬件能力(摄像头/屏幕/传感器) |
| 交互模式 | 一次性传输 | 持续性实时共享 |
| 用户体验 | 发送 → 接收 → 查看 | 如同使用本地硬件 |
| 底层技术 | ShareController + SharedData | 分布式软总线 + 虚拟化引擎 |
| 延迟要求 | 秒级可接受 | 毫秒级实时 |
| 典型场景 | 分享视频到平板 | 借用平板摄像头拍照 |
四、A2UI 协议:跨设备 UI 同步
4.1 什么是 A2UI?
A2UI(Agent-to-UI) 是 HarmonyOS 7 为跨设备 UI 同步而设计的新协议。它允许一个设备上的 UI 状态变化(如滑块拖动、按钮点击、画布绘制)实时同步到其他设备的对应 UI 组件上,而无需开发者手动编写数据传输和状态同步代码。
在"画伴梦工厂"的"多设备协同绘画"场景中,A2UI 协议是核心技术支撑:
typescript
import { a2ui } from '@kit.DistributedKit';
// 创建一个 A2UI 会话,用于同步画布状态
const session = await a2ui.createSession({
sessionId: 'drawing_sync_001',
// 指定参与协同的设备
participants: ['手机789', '平板123'],
// 同步粒度:逐笔触实时同步
syncGranularity: 'stroke',
// 冲突解决策略:后写胜出
conflictResolution: 'last_write_wins'
});
// 当用户在本地画布上绘制了一笔
private onStrokeDrawn(stroke: StrokeData): void {
// 将笔触数据通过 A2UI 同步到其他设备
session.syncState('canvas', {
action: 'addStroke',
stroke: stroke
});
}
// 接收来自远程设备的 UI 状态同步
session.on('stateChanged', (source: string, state: SyncState) => {
if (state.action === 'addStroke') {
// 将远程笔触渲染到本地画布
this.canvasRenderer.applyRemoteStroke(state.stroke);
}
});
4.2 A2UI vs. 传统 WebSocket
| 维度 | WebSocket 自定义方案 | A2UI 协议 |
|---|---|---|
| 连接建立 | 需手动实现握手、鉴权 | 自动基于软总线可信连接 |
| 冲突解决 | 需自研 CRDT 或 OT 算法 | 内置 3 种冲突策略 |
| 延迟 | 受应用层协议栈影响 | 基于软总线 8ms 原生通道 |
| 设备发现 | 需自行实现 | 自动发现 + 安全认证 |
| 开发量 | 数周至数月 | 数行代码 |
4.3 多设备绘画的冲突解决
当两个孩子同时在各自的平板上绘制同一幅画时,必然出现"冲突"------同一位置同时绘制了不同内容。A2UI 内置了三种冲突解决策略:
| 策略 | 说明 | 适用场景 |
|---|---|---|
last_write_wins |
后写入的数据覆盖先写入的 | 自由涂鸦,允许覆盖 |
transform |
基于操作变换(OT)合并 | 文档协作,文本编辑 |
branch |
保留分支,人工选择合并 | 精细绘画,保留各自版本 |
在"画伴梦工厂"中,默认使用 last_write_wins 策略------儿童绘画场景中,覆盖是自然的表达方式。
五、与 HarmonyFeaturesPage 的集成
5.1 作品跨设备流转功能卡
在项目的 HarmonyFeaturesPage.ets 中,"全场景一体协同"板块展示的就是基于分布式软总线能力的"作品跨设备流转"功能。该板块包含三个核心交互要素:
1. 可信设备选择
typescript
const TRUSTED_DEVICES: DeviceItem[] = [
{ name: '手机', desc: '拍照识别与快速创作' },
{ name: '平板', desc: '大画布涂鸦和家长共创' },
{ name: '智慧屏', desc: '家庭共享播放动画' }
];
这三台设备恰好代表了三类典型的端侧角色------手机 是便携的识别与创作入口,平板 是精细绘画的交互界面,智慧屏是家庭共享的展示终端。分布式软总线将它们连接成一个"创作-协作-展示"的完整闭环。
2. 跨设备流转进度指示
typescript
@State private syncProgress: number = 68;
Progress({ value: this.syncProgress, total: 100, type: ProgressType.Linear })
.width('100%')
.height(8)
.color(this.brandPurple)
.backgroundColor('#ECECF6')
.borderRadius(6)
进度条模拟了作品数据在各设备间的同步状态。在实际实现中,这个进度可以通过 distributedKVStore 的同步事件驱动更新------当分布式数据库同步完成后,进度条自动推进到 100%。
3. 流转任务触发
typescript
Button('生成跨设备流转任务')
.onClick(() => {
this.syncProgress = 100;
this.noticeText = '作品草稿已准备跨设备协同,可在信任设备间流转';
})
这个按钮是跨设备协同的入口。点击后,应用可以将当前作品的数据结构和状态发布到分布式数据库中,其他信任设备上的应用实例会收到同步通知,自动下载并展示作品。
5.2 分布式 KVStore 集成
在 HarmonyFeaturesPage 中,capability 字段标注为 SystemCapability.DistributedDataManager.KVStore.Core,这指向了 HarmonyOS 的 分布式 KV 数据库(distributedKVStore)------基于软总线实现的数据同步层:
typescript
import { distributedKVStore } from '@kit.DistributedDataKit';
// 获取分布式数据库单例
const kvManager = distributedKVStore.createKVManager({
context: getContext(),
bundleName: 'com.dreamworks.drawing'
});
// 创建分布式 KV 存储(自动跨设备同步)
const kvStore = await kvManager.getKVStore('works_sync_store', {
createIfMissing: true,
// 设备间自动同步
syncMode: distributedKVStore.SyncMode.PUSH_PULL
});
// 写入作品数据(自动同步到其他设备)
await kvStore.put('work_001', JSON.stringify({
title: '我的小汽车',
strokes: [...], // 笔触数组
story: '一辆红色的小汽车在公路上...',
lastModified: Date.now()
}));
// 监听远程数据变更(其他设备的更新)
kvStore.on('dataChange', (change) => {
if (change.key === 'work_001') {
const updatedWork = JSON.parse(change.value);
this.refreshWorkDisplay(updatedWork);
}
});
5.3 canIUse 能力检测
HarmonyFeaturesPage 中使用 canIUse(item.capability) 动态检测设备是否支持分布式能力:
typescript
Text(canIUse(item.capability) ? '已支持' : '待适配')
.fontSize(11)
.fontColor(canIUse(item.capability) ? '#2F9E44' : '#A06A00')
这体现了鸿蒙应用开发的最佳实践------永远不要假定设备能力 。分布式软总线虽然强大,但并非所有设备都支持全部能力。通过 canIUse 接口动态检测,可以在不支持分布式协同的设备上优雅降级,展示"待适配"状态而非直接报错。
六、应用场景
6.1 手机作为平板的摄像头
在"画伴梦工厂"中,儿童使用平板进行大画布涂鸦时,如果需要拍摄真实物体的参考照片,无需起身寻找手机------通过设备虚拟化,平板直接调用手机的摄像头取景:
- 平板上的应用检测到"需要拍照"场景
- 自动发现附近的手机设备,请求摄像头共享
- 手机摄像头画面实时出现在平板的取景框中
- 儿童在平板上点击快门,照片通过软总线传输到平板
- 照片自动导入画布作为临摹参考
整个过程中,儿童只需要在平板上完成所有操作,手机就像一个"外接摄像头"被平板调用。
6.2 多设备实时协同绘画
这是分布式软总线 2.0+ A2UI 协议最高价值的场景:
- 孩子 A 在平板上画了一棵树
- 孩子 B 在另一台平板上画了一朵云
- 两幅画作通过 A2UI 协议实时合并
- 两个孩子在各自的屏幕上看到对方每一笔的实时出现
- 画作完成后,一键同步到智慧屏上全家观看
这种"协同创作"的体验与第 4.4 篇中的"分享播放"有本质区别------不再是"我画完你看",而是"我们一起画"。
6.3 跨设备画作评审与成长记录
家长可以在手机上查看孩子在平板上完成的画作历史,为每幅作品添加评语和鼓励。所有数据通过分布式 KV 存储自动同步,家长无需手动"导入"或"导出"。
typescript
// 家长在手机上查看孩子的作品列表
const workList = await kvStore.getEntries('work_*');
for (const entry of workList) {
const work = JSON.parse(entry.value);
// 作品来自平板,但在手机上查看
this.workList.push(work);
}
// 家长添加评语,同步回平板
await kvStore.put(`work_001_feedback`, {
parentComment: '画得真棒!小汽车的颜色很漂亮!',
timestamp: Date.now(),
parentDevice: '手机'
});
七、systemShare vs. 分布式协同
第 4.4 篇介绍的 systemShare 和本篇的分布式软总线 2.0 解决的是不同层次的问题,二者是递进关系而非替代关系:
| 对比维度 | systemShare(第 4.4 篇) | 分布式软总线 2.0(本篇) |
|---|---|---|
| 内核 | 一次性数据分享 | 持续性设备协同 |
| 交互模式 | 用户主动发起 → 选择目标 → 发送 | 系统自动发现 → 持续连接 → 按需使用 |
| 典型操作 | 点击"分享"按钮 → 选设备 → 发送完成 | 应用自动感知附近设备 → 设备间实时同步 |
| 数据流 | 单向(A → B) | 双向 / 多向(A ⇄ B ⇄ C) |
| 生命周期 | 单次传输,传完即止 | 持续会话,随场景启停 |
| 开发接口 | ShareController + SharedData |
DistributedKit + a2ui + distributedKVStore |
| 用户感知 | 用户明确知道"我在分享" | 用户可能不知道"在协同"------这才是最高境界 |
| 依赖底层 | 依赖软总线 1.x | 依赖软总线 2.0 + 设备虚拟化 + A2UI |
两者如何配合?
在"画伴梦工厂"的典型工作流中,二者可以串联使用:
- 创作阶段 :两个孩子通过分布式软总线 2.0 + A2UI 实时协同绘画(持续性协同)
- 完成阶段 :画作完成后,孩子通过
systemShare将动画视频一键分享给远程的爷爷奶奶(一次性分享)
协同是创作的"过程",分享是成果的"传递"------两者共同构成了完整的跨设备体验。
八、开发最佳实践
8.1 能力检测优先
typescript
// 在调用分布式 API 之前,始终检测能力支持
if (canIUse('SystemCapability.DistributedDataManager.KVStore.Core')) {
// 启用分布式数据同步
await this.initDistributedStore();
} else {
// 降级为本地存储
await this.initLocalStore();
}
8.2 网络状态感知
分布式协同依赖设备间的网络连接质量。建议监听网络状态,在网络不佳时降级为本地模式:
typescript
import { connection } from '@kit.NetworkKit';
connection.on('netStatusChange', (netInfo) => {
if (netInfo.isInternetAvailable && netInfo.wifiSignal > 2) {
// 网络良好,启用分布式协同
this.enableDistributedFeatures();
} else {
// 网络不佳,降级为单人模式
this.disableDistributedFeatures();
this.showNotice('网络信号较弱,已切换为单人创作模式');
}
});
8.3 数据冲突策略选择
根据业务场景选择合适的冲突解决策略:
| 数据类型 | 推荐策略 | 原因 |
|---|---|---|
| 画布笔触 | last_write_wins |
儿童绘画允许覆盖,简单直接 |
| 作品元数据(标题、故事) | last_write_wins |
最后修改者的版本是最新的 |
| 家长评语 | append(追加) |
每条评语都应保留 |
| 用户配置(偏好设置) | last_write_wins |
最后设置为准 |
8.4 安全性考虑
typescript
// 仅在可信设备间启用分布式能力
const devices = await deviceManager.getTrustedDeviceList();
if (devices.length === 0) {
// 无可信设备,不暴露分布式入口
this.showDistributedEntry = false;
return;
}
// 对敏感数据(如儿童个人信息)不上传到分布式存储
const safeData = {
workData: work.strokes, // ✅ 画作数据可共享
workTitle: work.title, // ✅ 作品标题可共享
// ❌ 不共享用户个人信息
// userPhone: user.phone,
// userLocation: user.location
};
8.5 设备虚拟化的生命周期管理
使用完远程设备资源后,务必及时释放,避免资源泄露:
typescript
aboutToDisappear() {
// 释放远程摄像头资源
if (this.remoteCam) {
this.remoteCam.release();
this.remoteCam = null;
}
// 断开 A2UI 会话
if (this.a2uiSession) {
this.a2uiSession.disconnect();
this.a2uiSession = null;
}
// 关闭分布式数据库监听
if (this.kvStore) {
this.kvStore.off('dataChange');
}
}
九、与项目全场景协同设计的融合
在"画伴梦工厂"的全场景协同设计中,分布式软总线 2.0 是底层基础设施,上层的各类分布式能力构成了完整的协同生态:
┌──────────────────────────────────────────────────┐
│ 全场景协同设计生态 │
├──────────────┬───────────────┬────────────────────┤
│ 设备虚拟化 │ 分布式 KVStore │ A2UI 协议 │
│ 借摄像头 │ 作品自动同步 │ 实时协同绘画 │
│ 借屏幕 │ 评语跨设备 │ UI 状态同步 │
│ 借扬声器 │ 设置漫游 │ 操作冲突解决 │
├──────────────┴───────────────┴────────────────────┤
│ 分布式软总线 2.0 │
│ 8ms 延迟 · 16 设备组网 · 多链路聚合 · 零感认证 │
├──────────────────────────────────────────────────┤
│ 物理层:Wi-Fi / 蓝牙 / 星闪 / 蜂窝 │
└──────────────────────────────────────────────────┘
HarmonyFeaturesPage.ets 中的"全场景一体协同"板块正是这个生态的缩影------通过「手机、平板、智慧屏」三种设备角色的展示,向用户传达了"创作-协作-展示"的完整闭环概念。
总结
| 关键主题 | 核心要点 |
|---|---|
| 分布式软总线 2.0 指标 | 延迟 ≤ 8ms,单链路 16 设备协同,组网效率提升 40% |
| 三阶段组网 | 异构发现(< 50ms)→ 零感认证(< 80ms)→ 通道协商(< 70ms) |
| 设备虚拟化 | 摄像头 / 屏幕 / 传感器等硬件能力跨设备共享 |
| A2UI 协议 | 跨设备 UI 状态实时同步,内置冲突解决策略 |
| 与项目集成 | HarmonyFeaturesPage 展示协同能力,基于 distributedKVStore 实现数据同步 |
| vs. systemShare | 一次性分享 → 持续性协同,文件传输 → 硬件共享 |
| 应用场景 | 手机当平板摄像头、多设备实时绘画、跨设备成长记录 |
| 最佳实践 | 能力检测、网络感知、冲突策略、安全隔离、生命周期管理 |
分布式软总线 2.0 将"画伴梦工厂"的跨设备体验从第 4.4 篇的"分享完成后各玩各的"升级到了"设备间像一台设备一样协同工作"。当用户不再感知到设备之间边界的存在时,多设备协同才真正到达了它的终极形态------隐形,却无处不在。
参考源码
本文相关代码参考项目中的以下源文件:
products/default/src/main/ets/pages/HarmonyFeaturesPage.ets--- 鸿蒙能力中心页面,包含"全场景一体协同"板块与"作品跨设备流转"功能卡