• 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 : BusinessError, data: {
100      deviceId : number;
101      remote : rpc.IRemoteObject;
102  }) => {
103    if (error) {
104      console.error(`bindDevice async fail. Code is ${error.code}, message is ${error.message}`);
105      return;
106    }
107    console.info(`bindDevice success`);
108  });
109} catch (error) {
110  console.error(`bindDevice fail. Code is ${error.code}, message is ${error.message}`);
111}
112```
113
114## deviceManager.bindDevice
115
116bindDevice(deviceId: number, onDisconnect: AsyncCallback&lt;number&gt;): Promise&lt;{deviceId: number,
117  remote: rpc.IRemoteObject}&gt;;
118
119根据queryDevices()返回的设备信息绑定设备。
120
121需要调用[deviceManager.queryDevices](#devicemanagerquerydevices)获取设备信息以及device。
122
123**需要权限**:ohos.permission.ACCESS_EXTENSIONAL_DEVICE_DRIVER
124
125**系统能力:**  SystemCapability.Driver.ExternalDevice
126
127**参数:**
128
129| 参数名       | 类型                        | 必填 | 说明                         |
130| ------------ | --------------------------- | ---- | ---------------------------- |
131| deviceId     | number                      | 是   | 设备ID,通过queryDevices获得 |
132| onDisconnect | AsyncCallback&lt;number&gt; | 是   | 绑定设备断开的回调           |
133
134**返回值:**
135
136| 类型                                                                                           | 说明                                         |
137| ---------------------------------------------------------------------------------------------- | -------------------------------------------- |
138| Promise&lt;{deviceId: number, remote: [rpc.IRemoteObject](./js-apis-rpc.md#iremoteobject)}&gt; | Promise对象,返回设备ID和IRemoteObject对象。 |
139
140**错误码:**
141
142| 错误码ID | 错误信息                                 |
143| -------- | ---------------------------------------- |
144| 401      | The parameter check failed.              |
145| 22900001 | ExternalDeviceManager service exception. |
146
147**示例:**
148
149```ts
150import deviceManager from "@ohos.driver.deviceManager";
151import { BusinessError } from '@ohos.base';
152
153try {
154  // 12345678为示例deviceId,应用开发时可通过queryDevices查询到相应设备的deviceId作为入参
155  deviceManager.bindDevice(12345678, (error : BusinessError, data : number) => {
156    console.error(`Device is disconnected`);
157  }).then((data : {
158      deviceId : number;
159      remote : rpc.IRemoteObject;
160  }) => {
161    console.info(`bindDevice success`);
162  }, (error : BusinessError) => {
163    console.error(`bindDevice async fail. Code is ${error.code}, message is ${error.message}`);
164  });
165} catch (error) {
166  console.error(`bindDevice fail. Code is ${error.code}, message is ${error.message}`);
167}
168```
169
170## deviceManager.unbindDevice
171
172unbindDevice(deviceId: number, callback: AsyncCallback&lt;number&gt;): void
173
174解除设备绑定。
175
176**需要权限**:ohos.permission.ACCESS_EXTENSIONAL_DEVICE_DRIVER
177
178**系统能力:**  SystemCapability.Driver.ExternalDevice
179
180**参数:**
181
182| 参数名   | 类型                        | 必填 | 说明                           |
183| -------- | --------------------------- | ---- | ------------------------------ |
184| deviceId | number                      | 是   | 设备ID,通过queryDevices获得。 |
185| callback | AsyncCallback&lt;number&gt; | 是   | 解绑完成的回调。               |
186
187**错误码:**
188
189| 错误码ID | 错误信息                                 |
190| -------- | ---------------------------------------- |
191| 401      | The parameter check failed.              |
192| 22900001 | ExternalDeviceManager service exception. |
193
194**示例:**
195
196```ts
197import deviceManager from "@ohos.driver.deviceManager";
198
199try {
200  // 12345678为示例deviceId,应用开发时可通过queryDevices查询到相应设备的deviceId作为入参
201  deviceManager.unbindDevice(12345678, (error : BusinessError, data : number) => {
202    if (error) {
203      console.error(`unbindDevice async fail. Code is ${error.code}, message is ${error.message}`);
204      return;
205    }
206    console.info(`unbindDevice success`);
207  });
208} catch (error) {
209  console.error(`unbindDevice fail. Code is ${error.code}, message is ${error.message}`);
210}
211```
212## deviceManager.unbindDevice
213
214unbindDevice(deviceId: number): Promise&lt;number&gt;
215
216解除设备绑定。
217
218**需要权限**:ohos.permission.ACCESS_EXTENSIONAL_DEVICE_DRIVER
219
220**系统能力:**  SystemCapability.Driver.ExternalDevice
221
222**参数:**
223
224| 参数名   | 类型   | 必填 | 说明                           |
225| -------- | ------ | ---- | ------------------------------ |
226| deviceId | number | 是   | 设备ID,通过queryDevices获得。 |
227
228**错误码:**
229
230| 错误码ID | 错误信息                                 |
231| -------- | ---------------------------------------- |
232| 401      | The parameter check failed.              |
233| 22900001 | ExternalDeviceManager service exception. |
234
235**返回值:**
236
237| 类型                  | 说明                      |
238| --------------------- | ------------------------- |
239| Promise&lt;number&gt; | Promise对象,返回设备ID。 |
240
241**示例:**
242
243```ts
244import deviceManager from "@ohos.driver.deviceManager";
245import { BusinessError } from '@ohos.base';
246
247try {
248  // 12345678为示例deviceId,应用开发时可通过queryDevices查询到相应设备的deviceId作为入参
249  deviceManager.unbindDevice(12345678).then((data : number) => {
250    console.info(`unbindDevice success`);
251  }, (error : BusinessError) => {
252    console.error(`unbindDevice async fail. Code is ${error.code}, message is ${error.message}`);
253  });
254} catch (error) {
255  console.error(`unbindDevice fail. Code is ${error.code}, message is ${error.message}`);
256}
257```
258
259## Device
260
261外设信息。
262
263**系统能力:** SystemCapability.Driver.ExternalDevice
264
265| 名称        | 类型                | 必填 | 说明       |
266| ----------- | ------------------- | ---- | ---------- |
267| busType     | [BusType](#bustype) | 是   | 总线类型。 |
268| deviceId    | number              | 是   | 设备ID。   |
269| description | string              | 是   | 设备描述。 |
270
271## USBDevice
272
273USB设备信息。
274
275**系统能力:** SystemCapability.Driver.ExternalDevice
276
277| 名称      | 类型   | 必填 | 说明                |
278| --------- | ------ | ---- | ------------------- |
279| vendorId  | number | 是   | USB设备Vendor ID。  |
280| productId | number | 是   | USB设备Product ID。 |
281
282## BusType
283
284设备总线类型。
285
286**系统能力:** SystemCapability.Driver.ExternalDevice
287
288| 名称 | 值  | 说明          |
289| ---- | --- | ------------- |
290| USB  | 1   | USB总线类型。 |