Service Collaboration Kit 的功能
时间: 2026-04-15 11:24:21
(部分内容来自网络,其真实性存疑,为了避免对您造成误导,请谨慎甄别。)
看你发的这两个链接和搜到的资料,Service Collaboration Kit 的本质就是:让你在设备A上,直接调用设备B的特定系统能力(相机、扫描、图库),并把结果拿回来。
它的底层依赖非常清晰,不是什么通用的数据传输框架,而是一个专用于能力调用的封装。
一、底层依赖什么?
从你发的官方文档和搜索结果来看,底层依赖就三层:
第1层:分布式软总线 (Soft Bus)
- 这是最底层,负责设备发现、连接、组网、数据传输
- 官方文档原文:"系统分布式协同框架跨设备自动建链。系统将自动完成设备的发现、连接、认证等流程"
- 开发者不需要管Wi-Fi/蓝牙怎么连、数据怎么传,系统全包了
第2层:分布式设备管理 (DMS)
- 负责设备认证、上下线监听、设备信息查询
- 你调用 GetCollaborationDeviceInfos 时,底层就是DMS在工作
- 前置条件:同账号 + 开Wi-Fi/蓝牙
第3层:Service Collaboration Kit 封装层
- 这就是你看到的API:createCollaborationServiceMenuItems、CollaborationServiceStateDialog
- 把底层的设备发现、连接、数据传输、结果回传,全部封装成3个接口
- 官方文档原话:"只需要调用这三个接口,即可完成跨端拍照,无需关注分布式场景下数据传输、指令控制等具体细节"
二、架构图(从底到顶)
┌─────────────────────────────────────────────────────────┐
│ 你的应用 (Your App) │
│ 调用 createCollaborationServiceMenuItems + Dialog │
├─────────────────────────────────────────────────────────┤
│ Service Collaboration Kit (封装层) │
│ 接口:GetCollaborationDeviceInfos │
│ StartCollaboration / StopCollaboration │
│ onState 回调接收数据 │
├─────────────────────────────────────────────────────────┤
│ 分布式设备管理 (DMS) │
│ 设备发现、认证、上下线监听、设备信息查询 │
├─────────────────────────────────────────────────────────┤
│ 分布式软总线 (Soft Bus) │
│ Wi-Fi/蓝牙统一通信、数据传输、加密通道 │
└─────────────────────────────────────────────────────────┘
三、这个Kit能干什么?(就是3个能力)
根据官方API文档:
| 能力 | 枚举值 | 说明 |
|---|---|---|
| 跨设备拍照 | TAKE_PHOTO | 平板调用手机相机,拍完照传回平板 |
| 文档扫描 | SCAN_DOCUMENT | 调用远端设备的扫描能力 |
| 图库选择 | IMAGE_PICKER | 调用远端设备的图库,选照片传回来 |
就这么三个能力。没有通用数据传输,没有文件同步,没有自定义数据通道。
四、不能干什么?(重要)
根据官方文档的约束:
1. 不能传自定义数据:你只能拿到拍照的图片、扫描的文档、图库选的图片。不能自己定义传输任意数据。
2. 调用策略限制死:官方明确写了"2in1设备可以调用平板和手机,平板可以调用手机,同类型设备不可调用"。手机不能调用手机,平板不能调用平板。
3. 不能传大文件:虽然能传图片,但底层通过ArrayBuffer回传,有内存限制。
五、跟你要的"设备间传数据文件"的关系
结论:完全不是你要的东西。
| 你要的 | Service Collaboration Kit |
|---|---|
| 任意设备间传任意数据/文件 | ❌ 只能传拍照/扫描/图库选中的图片 |
| 自己控制传输内容 | ❌ 只能拿到系统返回的固定格式 |
| 通用数据传输通道 | ❌ 专用于调用特定系统能力 |
这个Kit的设计目标就是:让2in1设备(平板/电脑)能调用手机的相机和图库。 仅此而已。
官方文档原话:"平板或2in1设备可以调用手机的相机、扫描、图库等功能。" 从头到尾就这一个场景。
六、总结
| 问题 | 答案 |
|---|---|
| 底层依赖什么? | 分布式软总线 + 分布式设备管理 |
| 核心接口是什么? | GetCollaborationDeviceInfos、StartCollaboration、onState回调 |
| 能干什么? | 跨设备拍照、扫描文档、选图库图片(仅此三项) |
| 能传自定义数据/文件吗? | 不能 |
| 跟你要的功能有关系吗? | 没有关系 |
一句话:Service Collaboration Kit 就是一个"跨设备调用相机图库"的专用工具包,底层跑在软总线上,但不是通用数据传输方案。
你要的"设备间传数据文件",这个Kit干不了。还得回到分布式文件系统 + KVStore那条路。