• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# @ohos.driver.deviceManager (外设管理)
2
3本模块主要提供管理外部设备的相关功能,包括查询设备列表、绑定设备和解除绑定设备。
4
5>  **说明:**
6>
7> 本模块首批接口从API version 10开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
8
9## 导入模块
10
11```ts
12import deviceManager from "@ohos.driver.deviceManager";
13```
14
15## deviceManager.queryDevices
16
17queryDevices(busType?: number): Array<Readonly<Device>>
18
19获取接入主设备的外部设备列表。如果没有设备接入,那么将会返回一个空的列表。
20
21**需要权限**:ohos.permission.ACCESS_EXTENSIONAL_DEVICE_DRIVER
22
23**系统能力:**  SystemCapability.Driver.ExternalDevice
24
25**参数:**
26
27| 参数名  | 类型   | 必填 | 说明                                 |
28| ------- | ------ | ---- | ------------------------------------ |
29| busType | number | 否   | 设备总线类型,不填则查找所有类型设备。 |
30
31**返回值:**
32
33| 类型                                           | 说明           |
34| ---------------------------------------------- | -------------- |
35| Array<Readonly<[Device](#device)>> | 设备信息列表。 |
36
37**错误码:**
38
39| 错误码ID | 错误信息                                 |
40| -------- | ---------------------------------------- |
41| 401      | The parameter check failed.              |
42| 22900001 | ExternalDeviceManager service exception. |
43
44**示例:**
45
46```ts
47import deviceManager from "@ohos.driver.deviceManager";
48
49
50try {
51  let devices : Array<deviceManager.Device> = deviceManager.queryDevices(deviceManager.BusType.USB);
52  for (let item of devices) {
53    let device : deviceManager.USBDevice = item as deviceManager.USBDevice;
54    console.info(`Device id is ${device.deviceId}`)
55  }
56} catch (error) {
57  console.error(`Failed to query device. Code is ${error.code}, message is ${error.message}`);
58}
59```
60
61## deviceManager.bindDevice
62
63bindDevice(deviceId: number, onDisconnect: AsyncCallback&lt;number&gt;,
64  callback: AsyncCallback&lt;{deviceId: number, remote: rpc.IRemoteObject}&gt;): void;
65
66根据queryDevices()返回的设备信息绑定设备。
67
68需要调用[deviceManager.queryDevices](#devicemanagerquerydevices)获取设备信息以及device。
69
70**需要权限**:ohos.permission.ACCESS_EXTENSIONAL_DEVICE_DRIVER
71
72**系统能力:**  SystemCapability.Driver.ExternalDevice
73
74**参数:**
75
76| 参数名       | 类型                                                                                                 | 必填 | 说明                                   |
77| ------------ | ---------------------------------------------------------------------------------------------------- | ---- | -------------------------------------- |
78| deviceId     | number                                                                                               | 是   | 设备ID,通过queryDevices获得。           |
79| onDisconnect | AsyncCallback&lt;number&gt;                                                                          | 是   | 绑定设备断开的回调。                     |
80| callback     | AsyncCallback&lt;{deviceId: number, remote: [rpc.IRemoteObject](./js-apis-rpc.md#iremoteobject)}&gt; | 是   | 绑定设备的回调,返回绑定设备的通信对象。 |
81
82**错误码:**
83
84| 错误码ID | 错误信息                                 |
85| -------- | ---------------------------------------- |
86| 401      | The parameter check failed.              |
87| 22900001 | ExternalDeviceManager service exception. |
88
89**示例:**
90
91```ts
92import deviceManager from "@ohos.driver.deviceManager";
93import { BusinessError } from '@ohos.base';
94
95try {
96  // 12345678为示例deviceId,应用开发时可通过queryDevices查询到相应设备的deviceId作为入参
97  deviceManager.bindDevice(12345678, (error : BusinessError, data : number) => {
98    console.error(`Device is disconnected`);
99  }, (error, data) => {
100    if (error) {
101      console.error(`bindDevice async fail. Code is ${error.code}, message is ${error.message}`);
102      return;
103    }
104    console.info(`bindDevice success`);
105  });
106} catch (error) {
107  console.error(`bindDevice fail. Code is ${error.code}, message is ${error.message}`);
108}
109```
110
111## deviceManager.bindDevice
112
113bindDevice(deviceId: number, onDisconnect: AsyncCallback&lt;number&gt;): Promise&lt;{deviceId: number,
114  remote: rpc.IRemoteObject}&gt;;
115
116根据queryDevices()返回的设备信息绑定设备。
117
118需要调用[deviceManager.queryDevices](#devicemanagerquerydevices)获取设备信息以及device。
119
120**需要权限**:ohos.permission.ACCESS_EXTENSIONAL_DEVICE_DRIVER
121
122**系统能力:**  SystemCapability.Driver.ExternalDevice
123
124**参数:**
125
126| 参数名       | 类型                        | 必填 | 说明                         |
127| ------------ | --------------------------- | ---- | ---------------------------- |
128| deviceId     | number                      | 是   | 设备ID,通过queryDevices获得。 |
129| onDisconnect | AsyncCallback&lt;number&gt; | 是   | 绑定设备断开的回调。           |
130
131**返回值:**
132
133| 类型                                                                                           | 说明                                         |
134| ---------------------------------------------------------------------------------------------- | -------------------------------------------- |
135| Promise&lt;{deviceId: number, remote: [rpc.IRemoteObject](./js-apis-rpc.md#iremoteobject)}&gt; | Promise对象,返回设备ID和IRemoteObject对象。 |
136
137**错误码:**
138
139| 错误码ID | 错误信息                                 |
140| -------- | ---------------------------------------- |
141| 401      | The parameter check failed.              |
142| 22900001 | ExternalDeviceManager service exception. |
143
144**示例:**
145
146```ts
147import deviceManager from "@ohos.driver.deviceManager";
148import { BusinessError } from '@ohos.base';
149
150try {
151  // 12345678为示例deviceId,应用开发时可通过queryDevices查询到相应设备的deviceId作为入参
152  deviceManager.bindDevice(12345678, (error : BusinessError, data : number) => {
153    console.error(`Device is disconnected`);
154  }).then(data => {
155    console.info(`bindDevice success, Device_Id is ${data.deviceId}.
156    remote is ${data.remote != null ? data.remote.getDescriptor() : "null"}`);
157  }, (error: BusinessError) => {
158    console.error(`bindDevice async fail. Code is ${error.code}, message is ${error.message}`);
159  });
160} catch (error) {
161  console.error(`bindDevice fail. Code is ${error.code}, message is ${error.message}`);
162}
163```
164
165## deviceManager.unbindDevice
166
167unbindDevice(deviceId: number, callback: AsyncCallback&lt;number&gt;): void
168
169解除设备绑定。
170
171**需要权限**:ohos.permission.ACCESS_EXTENSIONAL_DEVICE_DRIVER
172
173**系统能力:**  SystemCapability.Driver.ExternalDevice
174
175**参数:**
176
177| 参数名   | 类型                        | 必填 | 说明                           |
178| -------- | --------------------------- | ---- | ------------------------------ |
179| deviceId | number                      | 是   | 设备ID,通过queryDevices获得。 |
180| callback | AsyncCallback&lt;number&gt; | 是   | 解绑完成的回调。               |
181
182**错误码:**
183
184| 错误码ID | 错误信息                                 |
185| -------- | ---------------------------------------- |
186| 401      | The parameter check failed.              |
187| 22900001 | ExternalDeviceManager service exception. |
188
189**示例:**
190
191```ts
192import deviceManager from "@ohos.driver.deviceManager";
193
194try {
195  // 12345678为示例deviceId,应用开发时可通过queryDevices查询到相应设备的deviceId作为入参
196  deviceManager.unbindDevice(12345678, (error : BusinessError, data : number) => {
197    if (error) {
198      console.error(`unbindDevice async fail. Code is ${error.code}, message is ${error.message}`);
199      return;
200    }
201    console.info(`unbindDevice success`);
202  });
203} catch (error) {
204  console.error(`unbindDevice fail. Code is ${error.code}, message is ${error.message}`);
205}
206```
207## deviceManager.unbindDevice
208
209unbindDevice(deviceId: number): Promise&lt;number&gt;
210
211解除设备绑定。
212
213**需要权限**:ohos.permission.ACCESS_EXTENSIONAL_DEVICE_DRIVER
214
215**系统能力:**  SystemCapability.Driver.ExternalDevice
216
217**参数:**
218
219| 参数名   | 类型   | 必填 | 说明                           |
220| -------- | ------ | ---- | ------------------------------ |
221| deviceId | number | 是   | 设备ID,通过queryDevices获得。 |
222
223**错误码:**
224
225| 错误码ID | 错误信息                                 |
226| -------- | ---------------------------------------- |
227| 401      | The parameter check failed.              |
228| 22900001 | ExternalDeviceManager service exception. |
229
230**返回值:**
231
232| 类型                  | 说明                      |
233| --------------------- | ------------------------- |
234| Promise&lt;number&gt; | Promise对象,返回设备ID。 |
235
236**示例:**
237
238```ts
239import deviceManager from "@ohos.driver.deviceManager";
240import { BusinessError } from '@ohos.base';
241
242try {
243  // 12345678为示例deviceId,应用开发时可通过queryDevices查询到相应设备的deviceId作为入参
244  deviceManager.unbindDevice(12345678).then((data : number) => {
245    console.info(`unbindDevice success, Device_Id is ${data}.`);
246  }, (error : BusinessError) => {
247    console.error(`unbindDevice async fail. Code is ${error.code}, message is ${error.message}`);
248  });
249} catch (error) {
250  console.error(`unbindDevice fail. Code is ${error.code}, message is ${error.message}`);
251}
252```
253
254## Device
255
256外设信息。
257
258**系统能力:** SystemCapability.Driver.ExternalDevice
259
260| 名称        | 类型                | 必填 | 说明       |
261| ----------- | ------------------- | ---- | ---------- |
262| busType     | [BusType](#bustype) | 是   | 总线类型。 |
263| deviceId    | number              | 是   | 设备ID。   |
264| description | string              | 是   | 设备描述。 |
265
266## USBDevice
267
268USB设备信息。
269
270**系统能力:** SystemCapability.Driver.ExternalDevice
271
272| 名称      | 类型   | 必填 | 说明                |
273| --------- | ------ | ---- | ------------------- |
274| vendorId  | number | 是   | USB设备Vendor ID。  |
275| productId | number | 是   | USB设备Product ID。 |
276
277## BusType
278
279设备总线类型。
280
281**系统能力:** SystemCapability.Driver.ExternalDevice
282
283| 名称 | 值  | 说明          |
284| ---- | --- | ------------- |
285| USB  | 1   | USB总线类型。 |