|
Name |
|
Date |
Size |
#Lines |
LOC |
| .. | | - | - |
| common/include/ | | 12-May-2024 | - | 1,616 | 1,014 |
| display/ | | 12-May-2024 | - | 1,332 | 725 |
| ext/ | | 12-May-2024 | - | 12,636 | 9,498 |
| figures/ | | 12-May-2024 | - | | |
| interfaces/ | | 12-May-2024 | - | 8,790 | 7,208 |
| sa_profile/ | | 12-May-2024 | - | 49 | 29 |
| services/devicemanagerservice/ | | 12-May-2024 | - | 10,219 | 7,860 |
| test/ | | 12-May-2024 | - | 8,062 | 4,631 |
| utils/ | | 12-May-2024 | - | 1,208 | 859 |
| BUILD.gn | D | 12-May-2024 | 1.4 KiB | 39 | 36 |
| LICENSE | D | 12-May-2024 | 10.1 KiB | 179 | 150 |
| OAT.xml | D | 12-May-2024 | 4 KiB | 67 | 11 |
| README_zh.md | D | 12-May-2024 | 11.5 KiB | 237 | 195 |
| bundle.json | D | 12-May-2024 | 2.7 KiB | 73 | 72 |
| devicemanager.gni | D | 12-May-2024 | 1.2 KiB | 29 | 23 |
README_zh.md
1# **DeviceManager组件**
2
3## 简介
4
5DeviceManager组件在OpenHarmony上提供账号无关的分布式设备的认证组网能力,并为开发者提供了一套用于分布式设备间监听、发现和认证的接口。
6
7其组成及依赖如下所示:
8
9
10
11## 目录
12
13```
14foundation/distributedhardware/devicemanager
15├── common #公共能力头文件存放目录
16│ └── include
17│ └── ipc
18│ └── model #ipc功能模块头文件存放目录
19├── display #DM显示hap代码
20│ └── entry
21│ └── src
22│ └── main
23│ ├── js #DM PIN码显示FA相关JS代码
24│ └── resources #DM PIN码显示FA相关资源配置文件目录
25├── figures
26├── interfaces
27│ ├── inner_kits #内部接口及实现存放目录
28│ │ └── native_cpp #内部native接口及实现存放目录
29│ │ ├── include
30│ │ │ ├── ipc #ipc头文件存放目录
31│ │ │ │ ├── lite #L1
32│ │ │ │ └── standard #L2
33│ │ │ └── notify #ipc回调通知头文件目录
34│ │ └── src
35│ │ ├── ipc #ipc功能代码
36│ │ │ ├── lite #L1
37│ │ │ └── standard #L2
38│ │ └── notify ipc回调通知功能代码
39│ └── kits #外接口及实现存放目录
40│ └── js #外部JS接口及实现存放目录
41│ ├── include #外部JS接口及实现欧文件存放目录
42│ └── src #外部JS接口及实现代码
43├── sa_profile
44├── services
45│ └── devicemanagerservice #devicemanagerservice服务实现核心代码
46│ ├── include
47│ │ ├── ability #与PIN码显示FA拉起管理相关头文件
48│ │ ├── auth #devie_auth交互相关头文件
49│ │ ├── ipc #进程间通信相关头文件
50│ │ │ ├── lite #L1
51│ │ │ └── standard #L2
52│ │ ├── message #消息数据解析相关头文件
53│ │ ├── requestauth #设备认证功能相关头文件
54│ │ ├── softbus #软总线相关头文件
55│ │ └── timer #定时器处理相关头文件
56│ └── src
57│ ├── ability #与PIN码显示FA拉起管理相关功能代码
58│ │ ├── lite #L1
59│ │ └── standard #L2
60│ ├── auth #devie_auth交互相关核心代码
61│ ├── ipc #进程间通信相功能代码
62│ │ ├── lite #L1
63│ │ └── standard #L2
64│ ├── message #消息数据解析相功能代码
65│ ├── requestauth #设备认证功能代码
66│ ├── softbus #通道建立功能核心代码
67│ └── timer #timer处理代码
68└── utils #公共能力头文件存放目
69 ├── include
70 │ ├── cipher #加解密功能相关头文件
71 │ ├── ipc #ipc公共头文件存放目录
72 │ │ ├── lite #L1
73 │ │ └── standard #L2
74 │ └── log #log相关头文件存放目录
75 └── src
76 ├── cipher #加解密功能代码
77 ├── ipc #ipc公共功能代码
78 │ ├── lite #L1
79 │ └── standard #L2
80 └── log #log相关功能代码
81```
82
83## 约束
84
85- 开发语言:JS、C++
86- 适用于Hi3516DV300单板等OpenHarmony设备
87
88
89## 接口说明
90
91当前版本设备管理服务不具备权限管理的能力,接口中的system api仅供系统调用,后续版本会进行严格的权限管控。
92接口参见[**interface_sdk-js仓库的**](https://gitee.com/openharmony/interface_sdk-js/) *ohos.distributedHardware.deviceManager.d.ts*
93
94- 公共接口:
95
96 使用DeviceManager相关接口之前,需要通过createDeviceManager接口创建DeviceManager实例;
97
98 不使用DeviceManager接口的时候需要释放对应的DeviceManager实例。
99
100| 原型 | 描述 |
101| ------------------------------------------------------------ | ------------------------------- |
102| createDeviceManager(bundleName: string, callback: AsyncCallback<DeviceManager>): void; | 以异步方法获取DeviceManager实例 |
103| release(): void; | 释放DeviceManager实例 |
104
105
106- 系统能力接口:
107
108 提供可信设备列表获取、可信设备状态监听、周边设备发现、设备认证等相关接口,该部分作为系统能力接口,仅供系统应用调用。
109
110 开始设备发现、停止发现设备接口要配对使用,使用同一个subscribeId。
111
112| 原型 | 描述 |
113| ------------------------------------------------------------ | -------------------- |
114| getTrustedDeviceListSync(): Array<DeviceInfo>; | 获取信任设备列表 |
115| on(type: 'deviceStateChange', callback: Callback<{ action: DeviceStateChangeAction, device: DeviceInfo }>): void; | 设备状态变更回调 |
116| off(type: 'deviceStateChange', callback?: Callback<{ action: DeviceStateChangeAction, device: DeviceInfo }>): void; | 取消设备状态变更回调 |
117| on(type: 'serviceDie', callback: () => void): void; | 服务错误回调 |
118| off(type: 'serviceDie', callback?: () => void): void; | 取消服务错误回调 |
119| startDeviceDiscovery(subscribeInfo: SubscribeInfo): void; | 开始设备发现 |
120| stopDeviceDiscovery(subscribeId: number): void; | 停止发现设备 |
121| authenticateDevice(deviceInfo: DeviceInfo, authparam: AuthParam, callback: AsyncCallback<{deviceId: string, pinTone ?: number}>): void; | 设备认证接口 |
122| verifyAuthInfo(authInfo: AuthInfo, callback: AsyncCallback<{deviceId: string, level: number}>): void; | 设备认证信息校验 |
123| on(type: 'deviceFound', callback: Callback<{ subscribeId: number, device: DeviceInfo }>): void; | 发现设备列表回调 |
124| off(type: 'deviceFound', callback?: Callback<{ subscribeId: number, device: DeviceInfo }>): void; | 取消发现设备列表回调 |
125| on(type: 'discoverFail', callback: Callback<{ subscribeId: number, reason: number }>): void; | 发现设备失败回调 |
126| off(type: 'discoverFail', callback?: Callback<{ subscribeId: number, reason: number }>): void; | 取消发现设备失败回调 |
127
128## 示例如下:
129
130```
131// 创建DeviceManager实例:
132deviceManager.createDeviceManager('com.ohos.xxxx', (err, dm) => {
133 this.log("createDeviceManager err:" + JSON.stringify(err) + ' --success:' + JSON.stringify(dm))
134 if (err) return;
135 dmClass = dm;
136 dmClass.on('serviceDie', data => this.log("serviceDie on:" + JSON.stringify(data)))
137});
138
139// 注册/去注册设备上下线监听
140dmClass.on('deviceStateChange', data => this.log("deviceStateChange on:" + JSON.stringify(data)))
141dmClass.off('deviceStateChange')
142
143// 查询可信设备列表
144var array = dmClass.getTrustedDeviceListSync();
145
146// 获取本地设备信息
147var localDeviceInfo = dmClass.getLocalDeviceInfoSync();
148
149// 开始设备发现(发现周边不可信设备)
150var subscribeId = 0;
151dmClass.on('deviceFound', (data) => {
152 if (data == null) {
153 this.log("deviceFound error data=null")
154 return;
155 }
156 this.logList.push("deviceFound:" + JSON.stringify(data));
157});
158dmClass.on('discoverFail', (data) => {
159 this.log("discoverFail on:" + JSON.stringify(data));
160});
161subscribeId = Math.floor(Math.random() * 10000 + 1000)
162var info = {
163 "subscribeId": subscribeId,
164 "mode": 0xAA,
165 "medium": 0,
166 "freq": 2,
167 "isSameAccount": false,
168 "isWakeRemote": true,
169 "capability": 0
170};
171dmClass.startDeviceDiscovery(info);
172
173// 停止设备发现(需要和startDeviceDiscovery接口配对使用)
174dmClass.stopDeviceDiscovery(subscribeId);
175
176// 设备认证
177var deviceInfo ={
178 "deviceId": "XXXXXXXX",
179 "deviceName": "",
180 deviceType: 0
181};
182let extraInfo = {
183 "appIcon": new Uint8Array(), // app图标,可选参数,可不填
184 "appThumbnail": new Uint8Array(), // app缩略图,可选参数,可不填
185 "appName": "xxxxxxxx", // 对端设备应用名称
186 "appDescription": "xxxxxxxx", // app描述
187 "business": '0',
188 "displayOwner": 0,
189}
190let authParam = {
191 "authType": 1,
192 "extraInfo": extraInfo
193}
194dmClass.authenticateDevice(this.deviceInfo, authParam, (err, data) => {
195 if (err) {
196 this.logList.push("authenticateDevice err:" + JSON.stringify(err));
197 console.info(TAG + "authenticateDevice err:" + JSON.stringify(err));
198 return;
199 }
200 this.logList.push("authenticateDevice result:" + JSON.stringify(data));
201 console.info(TAG + "authenticateDevice result:" + JSON.stringify(data));
202 token = data.pinToken;
203});
204
205// 设备取消认证
206dmClass.unAuthenticateDevice(this.deviceInfo);
207```
208## 系统弹框FA
209
210当前版本只支持PIN码认证,需要提供PIN码认证的授权提示界面、PIN码显示界面、PIN码输入界面;
211
212当前,由于系统通过native层直接进行弹窗的能力尚不具备,这里使用一个临时的FA来进行对应界面的弹窗。
213
214该FA为:DeviceManager_UI.hap,作为系统应用进行预置。
215
216- 编译运行:
217
218 将devicemanager/display工程导入DevEco Studio 2.2 Beta1,复制display目录下的@ohos.distributedHardware.deviceManager.d.ts文件到Sdk\js\2.2.0.1\api\common目录下,进行编译构建及运行调试.
219
220 DevEco Studio使用方法请参考[DevEco Studio使用说明](https://developer.harmonyos.com/cn/docs/documentation/doc-guides/tools_overview-0000001053582387)。
221
222- 编译环境依赖:IDE 2.2 SDK6
223
224- DeviceManager_UI.hap存放位置:[applications_hap仓库](https://gitee.com/openharmony/applications_hap)
225
226- UI显示:
227
228 DeviceManager作为认证被控端,授权提示界面、PIN码显示界面由DeviceManager_UI FA默认进行显示;
229
230 DeviceManager作为认证发起端,PIN码输入界面可以选择由DeviceManager_UI FA进行显示,还是由开发者自行显示。开发者如需自己定制PIN码输入界面,需要在authenticateDevice接口的认证参数AuthParam中,extraInfo属性里面指定displayOwner参数为1(DISPLAY_OWNER_OTHER)。
231
232### 相关仓
233****
234
235[**interface_sdk-js**](https://gitee.com/openharmony/interface_sdk-js/)
236[**applications_hap**](https://gitee.com/openharmony/applications_hap)
237**device_manager**