• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# @ohos.bluetoothManager (蓝牙)
2
3蓝牙模块提供了基础的传统蓝牙能力以及BLE的扫描、广播等功能。
4
5> **说明:**
6>
7> 本模块首批接口从API version 9开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
8
9
10
11## 导入模块
12
13```js
14import bluetoothManager from '@ohos.bluetoothManager';
15```
16
17
18## bluetoothManager.enableBluetooth<a name="enableBluetooth"></a>
19
20enableBluetooth(): void
21
22开启蓝牙。
23
24**需要权限**:ohos.permission.DISCOVER_BLUETOOTH
25
26**系统能力**:SystemCapability.Communication.Bluetooth.Core27
28**错误码**:
29
30以下错误码的详细介绍请参见[蓝牙服务子系统错误码](../errorcodes/errorcode-bluetoothManager.md)。
31
32| 错误码ID | 错误信息 |
33| -------- | ---------------------------- |
34|2900001 | Service stopped.                         |
35|2900099 | Operation failed.                        |
36
37**示例:**
38
39```js
40try {
41    bluetoothManager.enableBluetooth();
42} catch (err) {
43    console.error("errCode:" + err.code + ",errMessage:" + err.message);
44}
45```
46
47
48## bluetoothManager.disableBluetooth<a name="disableBluetooth"></a>
49
50disableBluetooth(): void
51
52关闭蓝牙。
53
54**需要权限**:ohos.permission.DISCOVER_BLUETOOTH
55
56**系统能力**:SystemCapability.Communication.Bluetooth.Core57
58**错误码**:
59
60以下错误码的详细介绍请参见[蓝牙服务子系统错误码](../errorcodes/errorcode-bluetoothManager.md)。
61
62| 错误码ID | 错误信息 |
63| -------- | ---------------------------- |
64|2900001 | Service stopped.                         |
65|2900099 | Operation failed.                        |
66
67**示例:**
68
69```js
70try {
71    bluetoothManager.disableBluetooth();
72} catch (err) {
73    console.error("errCode:" + err.code + ",errMessage:" + err.message);
74}
75```
76
77
78## bluetoothManager.getLocalName<a name="getLocalName"></a>
79
80getLocalName(): string
81
82获取蓝牙本地设备名称。
83
84**需要权限**:ohos.permission.USE_BLUETOOTH
85
86**系统能力**:SystemCapability.Communication.Bluetooth.Core87
88**返回值:**
89
90| 类型     | 说明        |
91| ------ | --------- |
92| string | 蓝牙本地设备名称。 |
93
94**错误码**:
95
96以下错误码的详细介绍请参见[蓝牙服务子系统错误码](../errorcodes/errorcode-bluetoothManager.md)。
97
98| 错误码ID | 错误信息 |
99| -------- | ---------------------------- |
100|2900001 | Service stopped.                         |
101|2900099 | Operation failed.                        |
102
103**示例:**
104
105```js
106try {
107    let localName = bluetoothManager.getLocalName();
108} catch (err) {
109    console.error("errCode:" + err.code + ",errMessage:" + err.message);
110}
111```
112
113
114## bluetoothManager.getState
115
116getState(): BluetoothState
117
118获取蓝牙开关状态。
119
120**需要权限**:ohos.permission.USE_BLUETOOTH
121
122**系统能力**:SystemCapability.Communication.Bluetooth.Core123
124**返回值:**
125
126| 类型                                | 说明        |
127| --------------------------------- | --------- |
128| [BluetoothState](#bluetoothstate) | 表示蓝牙开关状态。 |
129
130**错误码**:
131
132以下错误码的详细介绍请参见[蓝牙服务子系统错误码](../errorcodes/errorcode-bluetoothManager.md)。
133
134| 错误码ID | 错误信息 |
135| -------- | ---------------------------- |
136|2900001 | Service stopped.                         |
137|2900099 | Operation failed.                        |
138
139**示例:**
140
141```js
142try {
143    let state = bluetoothManager.getState();
144} catch (err) {
145    console.error("errCode:" + err.code + ",errMessage:" + err.message);
146}
147```
148
149
150## bluetoothManager.getBtConnectionState
151
152getBtConnectionState(): ProfileConnectionState
153
154获取蓝牙本端的Profile连接状态,例如:任意一个支持的Profile连接状态为已连接,则此接口返回状态为已连接。
155
156**需要权限**:ohos.permission.USE_BLUETOOTH
157
158**系统能力**:SystemCapability.Communication.Bluetooth.Core159
160**返回值:**
161
162| 类型                                       | 说明                  |
163| ---------------------------------------- | ------------------- |
164| [ProfileConnectionState](#profileconnectionstate) | 表示蓝牙设备的Profile连接状态。 |
165
166**错误码**:
167
168以下错误码的详细介绍请参见[蓝牙服务子系统错误码](../errorcodes/errorcode-bluetoothManager.md)。
169
170| 错误码ID | 错误信息 |
171| -------- | ---------------------------- |
172|2900001 | Service stopped.                         |
173|2900003 | Bluetooth switch is off.                 |
174|2900099 | Operation failed.                        |
175
176**示例:**
177
178```js
179try {
180    let connectionState = bluetoothManager.getBtConnectionState();
181} catch (err) {
182    console.error("errCode:" + err.code + ",errMessage:" + err.message);
183}
184```
185
186
187## bluetoothManager.setLocalName<a name="setLocalName"></a>
188
189setLocalName(name: string): void
190
191设置蓝牙本地设备名称。
192
193**需要权限**:ohos.permission.DISCOVER_BLUETOOTH
194
195**系统能力**:SystemCapability.Communication.Bluetooth.Core196
197**参数:**
198
199| 参数名  | 类型     | 必填   | 说明                    |
200| ---- | ------ | ---- | --------------------- |
201| name | string | 是    | 要设置的蓝牙名称,最大长度为248字节数。 |
202
203**错误码**:
204
205以下错误码的详细介绍请参见[蓝牙服务子系统错误码](../errorcodes/errorcode-bluetoothManager.md)。
206
207| 错误码ID | 错误信息 |
208| -------- | ---------------------------- |
209|2900001 | Service stopped.                         |
210|2900003 | Bluetooth switch is off.                 |
211|2900099 | Operation failed.                        |
212
213**示例:**
214
215```js
216try {
217    bluetoothManager.setLocalName('device_name');
218} catch (err) {
219    console.error("errCode:" + err.code + ",errMessage:" + err.message);
220}
221```
222
223
224## bluetoothManager.pairDevice
225
226pairDevice(deviceId: string): void
227
228发起蓝牙配对。
229
230**需要权限**:ohos.permission.DISCOVER_BLUETOOTH
231
232**系统能力**:SystemCapability.Communication.Bluetooth.Core233
234**参数:**
235
236| 参数名      | 类型     | 必填   | 说明                                  |
237| -------- | ------ | ---- | ----------------------------------- |
238| deviceId | string | 是    | 表示配对的远端设备地址,例如:"XX:XX:XX:XX:XX:XX"。 |
239
240**错误码**:
241
242以下错误码的详细介绍请参见[蓝牙服务子系统错误码](../errorcodes/errorcode-bluetoothManager.md)。
243
244| 错误码ID | 错误信息 |
245| -------- | ---------------------------- |
246|2900001 | Service stopped.                         |
247|2900003 | Bluetooth switch is off.                 |
248|2900099 | Operation failed.                        |
249
250**示例:**
251
252```js
253try {
254    // 实际的地址可由扫描流程获取
255    bluetoothManager.pairDevice("XX:XX:XX:XX:XX:XX");
256} catch (err) {
257    console.error("errCode:" + err.code + ",errMessage:" + err.message);
258}
259```
260
261
262## bluetoothManager.getProfileConnectionState<a name="getProfileConnectionState"></a>
263
264getProfileConnectionState(profileId: ProfileId): ProfileConnectionState
265
266依据ProfileId获取指定profile的连接状态。
267
268**需要权限**:ohos.permission.USE_BLUETOOTH
269
270**系统能力**:SystemCapability.Communication.Bluetooth.Core271
272**参数:**
273
274| 参数名       | 类型        | 必填   | 说明                                    |
275| --------- | --------- | ---- | ------------------------------------- |
276| ProfileId | profileId | 是    | 表示profile的枚举值,例如:PROFILE_A2DP_SOURCE。 |
277
278**返回值:**
279
280| 类型                                              | 说明                |
281| ------------------------------------------------- | ------------------- |
282| [ProfileConnectionState](#profileconnectionstate) | profile的连接状态。 |
283
284**错误码**:
285
286以下错误码的详细介绍请参见[蓝牙服务子系统错误码](../errorcodes/errorcode-bluetoothManager.md)。
287
288| 错误码ID | 错误信息 |
289| -------- | ---------------------------- |
290|2900001 | Service stopped.                         |
291|2900003 | Bluetooth switch is off.                 |
292|2900004 | Profile is not supported.                |
293|2900099 | Operation failed.                        |
294
295**示例:**
296
297```js
298try {
299    let result = bluetoothManager.getProfileConnectionState(bluetoothManager.ProfileId.PROFILE_A2DP_SOURCE);
300} catch (err) {
301    console.error("errCode:" + err.code + ",errMessage:" + err.message);
302}
303```
304
305
306## bluetoothManager.cancelPairedDevice<a name="cancelPairedDevice"></a>
307
308cancelPairedDevice(deviceId: string): void
309
310删除配对的远程设备。
311
312**系统接口**:此接口为系统接口。
313
314**需要权限**:ohos.permission.DISCOVER_BLUETOOTH
315
316**系统能力**:SystemCapability.Communication.Bluetooth.Core317
318**参数:**
319
320| 参数名      | 类型     | 必填   | 说明                                    |
321| -------- | ------ | ---- | ------------------------------------- |
322| deviceId | string | 是    | 表示要删除的远程设备的地址,例如:"XX:XX:XX:XX:XX:XX"。 |
323
324**错误码**:
325
326以下错误码的详细介绍请参见[蓝牙服务子系统错误码](../errorcodes/errorcode-bluetoothManager.md)。
327
328| 错误码ID | 错误信息 |
329| -------- | ---------------------------- |
330|2900001 | Service stopped.                         |
331|2900003 | Bluetooth switch is off.                 |
332|2900099 | Operation failed.                        |
333
334**示例:**
335
336```js
337try {
338    bluetoothManager.cancelPairedDevice("XX:XX:XX:XX:XX:XX");
339} catch (err) {
340    console.error("errCode:" + err.code + ",errMessage:" + err.message);
341}
342```
343
344
345## bluetoothManager.getRemoteDeviceName<a name="getRemoteDeviceName"></a>
346
347getRemoteDeviceName(deviceId: string): string
348
349获取对端蓝牙设备的名称。
350
351**需要权限**:ohos.permission.USE_BLUETOOTH
352
353**系统能力**:SystemCapability.Communication.Bluetooth.Core354
355**参数:**
356
357| 参数名      | 类型     | 必填   | 说明                                |
358| -------- | ------ | ---- | --------------------------------- |
359| deviceId | string | 是    | 表示远程设备的地址,例如:"XX:XX:XX:XX:XX:XX"。 |
360
361**返回值:**
362
363| 类型     | 说明            |
364| ------ | ------------- |
365| string | 以字符串格式返回设备名称。 |
366
367**错误码**:
368
369以下错误码的详细介绍请参见[蓝牙服务子系统错误码](../errorcodes/errorcode-bluetoothManager.md)。
370
371| 错误码ID | 错误信息 |
372| -------- | ---------------------------- |
373|2900001 | Service stopped.                         |
374|2900003 | Bluetooth switch is off.                 |
375|2900099 | Operation failed.                        |
376
377**示例:**
378
379```js
380try {
381    let remoteDeviceName = bluetoothManager.getRemoteDeviceName("XX:XX:XX:XX:XX:XX");
382} catch (err) {
383    console.error("errCode:" + err.code + ",errMessage:" + err.message);
384}
385```
386
387
388## bluetoothManager.getRemoteDeviceClass<a name="getRemoteDeviceClass"></a>
389
390getRemoteDeviceClass(deviceId: string): DeviceClass
391
392获取对端蓝牙设备的类别。
393
394**需要权限**:ohos.permission.USE_BLUETOOTH
395
396**系统能力**:SystemCapability.Communication.Bluetooth.Core397
398**参数:**
399
400| 参数名      | 类型     | 必填   | 说明                                |
401| -------- | ------ | ---- | --------------------------------- |
402| deviceId | string | 是    | 表示远程设备的地址,例如:"XX:XX:XX:XX:XX:XX"。 |
403
404**返回值:**
405
406| 类型                          | 说明       |
407| --------------------------- | -------- |
408| [DeviceClass](#deviceclass) | 远程设备的类别。 |
409
410**错误码**:
411
412以下错误码的详细介绍请参见[蓝牙服务子系统错误码](../errorcodes/errorcode-bluetoothManager.md)。
413
414| 错误码ID | 错误信息 |
415| -------- | ---------------------------- |
416|2900001 | Service stopped.                         |
417|2900003 | Bluetooth switch is off.                 |
418|2900099 | Operation failed.                        |
419
420**示例:**
421
422```js
423try {
424    let remoteDeviceClass = bluetoothManager.getRemoteDeviceClass("XX:XX:XX:XX:XX:XX");
425} catch (err) {
426    console.error("errCode:" + err.code + ",errMessage:" + err.message);
427}
428```
429
430
431## bluetoothManager.getPairedDevices<a name="getPairedDevices"></a>
432
433getPairedDevices(): Array&lt;string&gt;
434
435获取蓝牙配对列表。
436
437**需要权限**:ohos.permission.USE_BLUETOOTH
438
439**系统能力**:SystemCapability.Communication.Bluetooth.Core440
441**返回值:**
442
443| 类型                  | 说明            |
444| ------------------- | ------------- |
445| Array&lt;string&gt; | 已配对蓝牙设备的地址列表。 |
446
447**错误码**:
448
449以下错误码的详细介绍请参见[蓝牙服务子系统错误码](../errorcodes/errorcode-bluetoothManager.md)。
450
451| 错误码ID | 错误信息 |
452| -------- | ---------------------------- |
453|2900001 | Service stopped.                         |
454|2900003 | Bluetooth switch is off.                 |
455|2900099 | Operation failed.                        |
456
457**示例:**
458
459```js
460try {
461    let devices = bluetoothManager.getPairedDevices();
462} catch (err) {
463    console.error("errCode:" + err.code + ",errMessage:" + err.message);
464}
465```
466
467
468## bluetoothManager.setBluetoothScanMode<a name="setBluetoothScanMode"></a>
469
470setBluetoothScanMode(mode: ScanMode, duration: number): void
471
472设置蓝牙扫描模式,可以被远端设备发现。
473
474**需要权限**:ohos.permission.USE_BLUETOOTH
475
476**系统能力**:SystemCapability.Communication.Bluetooth.Core477
478**参数:**
479
480| 参数名      | 类型                    | 必填   | 说明                           |
481| -------- | --------------------- | ---- | ---------------------------- |
482| mode     | [ScanMode](#scanmode) | 是    | 蓝牙扫描模式。                      |
483| duration | number                | 是    | 设备可被发现的持续时间,单位为毫秒;设置为0则持续可发现。 |
484
485**错误码**:
486
487以下错误码的详细介绍请参见[蓝牙服务子系统错误码](../errorcodes/errorcode-bluetoothManager.md)。
488
489| 错误码ID | 错误信息 |
490| -------- | ---------------------------- |
491|2900001 | Service stopped.                         |
492|2900003 | Bluetooth switch is off.                 |
493|2900099 | Operation failed.                        |
494
495**示例:**
496
497```js
498try {
499    // 设置为可连接可发现才可被远端设备扫描到,可以连接。
500    bluetoothManager.setBluetoothScanMode(bluetoothManager.ScanMode.SCAN_MODE_CONNECTABLE_GENERAL_DISCOVERABLE, 100);
501} catch (err) {
502    console.error("errCode:" + err.code + ",errMessage:" + err.message);
503}
504```
505
506
507## bluetoothManager.getBluetoothScanMode<a name="getBluetoothScanMode"></a>
508
509getBluetoothScanMode(): ScanMode
510
511获取蓝牙扫描模式。
512
513**需要权限**:ohos.permission.USE_BLUETOOTH
514
515**系统能力**:SystemCapability.Communication.Bluetooth.Core516
517**返回值:**
518
519| 类型                    | 说明      |
520| --------------------- | ------- |
521| [ScanMode](#scanmode) | 蓝牙扫描模式。 |
522
523**错误码**:
524
525以下错误码的详细介绍请参见[蓝牙服务子系统错误码](../errorcodes/errorcode-bluetoothManager.md)。
526
527| 错误码ID | 错误信息 |
528| -------- | ---------------------------- |
529|2900001 | Service stopped.                         |
530|2900003 | Bluetooth switch is off.                 |
531|2900099 | Operation failed.                        |
532
533**示例:**
534
535```js
536try {
537    let scanMode = bluetoothManager.getBluetoothScanMode();
538} catch (err) {
539    console.error("errCode:" + err.code + ",errMessage:" + err.message);
540}
541```
542
543
544## bluetoothManager.startBluetoothDiscovery<a name="startBluetoothDiscovery"></a>
545
546startBluetoothDiscovery(): void
547
548开启蓝牙扫描,可以发现远端设备。
549
550**需要权限**:ohos.permission.DISCOVER_BLUETOOTHohos.permission.LOCATIONohos.permission.APPROXIMATELY_LOCATION
551
552**系统能力**:SystemCapability.Communication.Bluetooth.Core553
554**错误码**:
555
556以下错误码的详细介绍请参见[蓝牙服务子系统错误码](../errorcodes/errorcode-bluetoothManager.md)。
557
558| 错误码ID | 错误信息 |
559| -------- | ---------------------------- |
560|2900001 | Service stopped.                         |
561|2900003 | Bluetooth switch is off.                 |
562|2900099 | Operation failed.                        |
563
564**示例:**
565
566```js
567let deviceId;
568function onReceiveEvent(data) {
569    deviceId = data;
570}
571try {
572    bluetoothManager.on('bluetoothDeviceFind', onReceiveEvent);
573    bluetoothManager.startBluetoothDiscovery();
574} catch (err) {
575    console.error("errCode:" + err.code + ",errMessage:" + err.message);
576}
577```
578
579
580## bluetoothManager.stopBluetoothDiscovery<a name="stopBluetoothDiscovery"></a>
581
582stopBluetoothDiscovery(): void
583
584关闭蓝牙扫描。
585
586**需要权限**:ohos.permission.DISCOVER_BLUETOOTH
587
588**系统能力**:SystemCapability.Communication.Bluetooth.Core589
590**错误码**:
591
592以下错误码的详细介绍请参见[蓝牙服务子系统错误码](../errorcodes/errorcode-bluetoothManager.md)。
593
594| 错误码ID | 错误信息 |
595| -------- | ---------------------------- |
596|2900001 | Service stopped.                         |
597|2900003 | Bluetooth switch is off.                 |
598|2900099 | Operation failed.                        |
599
600**示例:**
601
602```js
603try {
604    bluetoothManager.stopBluetoothDiscovery();
605} catch (err) {
606    console.error("errCode:" + err.code + ",errMessage:" + err.message);
607}
608```
609
610
611## bluetoothManager.setDevicePairingConfirmation<a name="setDevicePairingConfirmation"></a>
612
613setDevicePairingConfirmation(device: string, accept: boolean): void
614
615设置设备配对请求确认。
616
617**需要权限**:ohos.permission.MANAGE_BLUETOOTH
618
619**系统能力**:SystemCapability.Communication.Bluetooth.Core620
621**参数:**
622
623| 参数名    | 类型      | 必填   | 说明                               |
624| ------ | ------- | ---- | -------------------------------- |
625| device | string  | 是    | 表示远端设备地址,例如:"XX:XX:XX:XX:XX:XX"。 |
626| accept | boolean | 是    | 接受配对请求设置为true,否则设置为false。        |
627
628**错误码**:
629
630以下错误码的详细介绍请参见[蓝牙服务子系统错误码](../errorcodes/errorcode-bluetoothManager.md)。
631
632| 错误码ID | 错误信息 |
633| -------- | ---------------------------- |
634|2900001 | Service stopped.                         |
635|2900003 | Bluetooth switch is off.                 |
636|2900099 | Operation failed.                        |
637
638**示例:**
639
640```js
641
642try {
643    // 订阅“pinRequired”配对请求事件,收到远端配对请求后设置配对确认
644    function onReceivePinRequiredEvent(data) { // data为配对请求的入参,配对请求参数
645        console.info('pin required  = '+ JSON.stringify(data));
646        bluetoothManager.setDevicePairingConfirmation(data.deviceId, true);
647    }
648    bluetoothManager.on("pinRequired", onReceivePinRequiredEvent);
649} catch (err) {
650    console.error("errCode:" + err.code + ",errMessage:" + err.message);
651}
652```
653
654
655## bluetoothManager.on('bluetoothDeviceFind')
656
657on(type: "bluetoothDeviceFind", callback: Callback&lt;Array&lt;string&gt;&gt;): void
658
659订阅蓝牙设备发现上报事件。
660
661**需要权限**:ohos.permission.USE_BLUETOOTH
662
663**系统能力**:SystemCapability.Communication.Bluetooth.Core664
665**参数:**
666
667| 参数名      | 类型                                  | 必填   | 说明                                     |
668| -------- | ----------------------------------- | ---- | -------------------------------------- |
669| type     | string                              | 是    | 填写"bluetoothDeviceFind"字符串,表示蓝牙设备发现事件。 |
670| callback | Callback&lt;Array&lt;string&gt;&gt; | 是    | 表示回调函数的入参,发现的设备集合。回调函数由用户创建通过该接口注册。    |
671
672**错误码**:
673
674以下错误码的详细介绍请参见[蓝牙服务子系统错误码](../errorcodes/errorcode-bluetoothManager.md)。
675
676| 错误码ID | 错误信息 |
677| -------- | ---------------------------- |
678|2900099 | Operation failed.                        |
679
680**示例:**
681
682```js
683function onReceiveEvent(data) { // data为蓝牙设备地址集合
684    console.info('bluetooth device find = '+ JSON.stringify(data));
685}
686try {
687    bluetoothManager.on('bluetoothDeviceFind', onReceiveEvent);
688} catch (err) {
689    console.error("errCode:" + err.code + ",errMessage:" + err.message);
690}
691```
692
693
694## bluetoothManager.off('bluetoothDeviceFind')
695
696off(type: "bluetoothDeviceFind", callback?: Callback&lt;Array&lt;string&gt;&gt;): void
697
698取消订阅蓝牙设备发现上报事件。
699
700**需要权限**:ohos.permission.USE_BLUETOOTH
701
702**系统能力**:SystemCapability.Communication.Bluetooth.Core703
704**参数:**
705
706| 参数名      | 类型                                  | 必填   | 说明                                       |
707| -------- | ----------------------------------- | ---- | ---------------------------------------- |
708| type     | string                              | 是    | 填写"bluetoothDeviceFind"字符串,表示蓝牙设备发现事件。   |
709| callback | Callback&lt;Array&lt;string&gt;&gt; | 否    | 表示取消订阅蓝牙设备发现事件上报。不填该参数则取消订阅该type对应的所有回调。 |
710
711**错误码**:
712
713以下错误码的详细介绍请参见[蓝牙服务子系统错误码](../errorcodes/errorcode-bluetoothManager.md)。
714
715| 错误码ID | 错误信息 |
716| -------- | ---------------------------- |
717|2900099 | Operation failed.                        |
718
719**示例:**
720
721```js
722function onReceiveEvent(data) {
723    console.info('bluetooth device find = '+ JSON.stringify(data));
724}
725try {
726    bluetoothManager.on('bluetoothDeviceFind', onReceiveEvent);
727    bluetoothManager.off('bluetoothDeviceFind', onReceiveEvent);
728} catch (err) {
729    console.error("errCode:" + err.code + ",errMessage:" + err.message);
730}
731```
732
733
734## bluetoothManager.on('pinRequired')
735
736on(type: "pinRequired", callback: Callback&lt;PinRequiredParam&gt;): void
737
738订阅远端蓝牙设备的配对请求事件。
739
740**需要权限**:ohos.permission.DISCOVER_BLUETOOTH
741
742**系统能力**:SystemCapability.Communication.Bluetooth.Core743
744**参数:**
745
746| 参数名      | 类型                                       | 必填   | 说明                               |
747| -------- | ---------------------------------------- | ---- | -------------------------------- |
748| type     | string                                   | 是    | 填写"pinRequired"字符串,表示配对请求事件。     |
749| callback | Callback&lt;[PinRequiredParam](#pinrequiredparam)&gt; | 是    | 表示回调函数的入参,配对请求。回调函数由用户创建通过该接口注册。 |
750
751**错误码**:
752
753以下错误码的详细介绍请参见[蓝牙服务子系统错误码](../errorcodes/errorcode-bluetoothManager.md)。
754
755| 错误码ID | 错误信息 |
756| -------- | ---------------------------- |
757|2900099 | Operation failed.                        |
758
759**示例:**
760
761```js
762function onReceiveEvent(data) { // data为配对请求参数
763    console.info('pin required = '+ JSON.stringify(data));
764}
765try {
766    bluetoothManager.on('pinRequired', onReceiveEvent);
767} catch (err) {
768    console.error("errCode:" + err.code + ",errMessage:" + err.message);
769}
770```
771
772
773## bluetoothManager.off('pinRequired')
774
775off(type: "pinRequired", callback?: Callback&lt;PinRequiredParam&gt;): void
776
777取消订阅远端蓝牙设备的配对请求事件。
778
779**需要权限**:ohos.permission.DISCOVER_BLUETOOTH
780
781**系统能力**:SystemCapability.Communication.Bluetooth.Core782
783**参数:**
784
785| 参数名      | 类型                                       | 必填   | 说明                                       |
786| -------- | ---------------------------------------- | ---- | ---------------------------------------- |
787| type     | string                                   | 是    | 填写"pinRequired"字符串,表示配对请求事件。             |
788| callback | Callback&lt;[PinRequiredParam](#pinrequiredparam)&gt; | 否    | 表示取消订阅蓝牙配对请求事件上报,入参为配对请求参数。不填该参数则取消订阅该type对应的所有回调。 |
789
790**错误码**:
791
792以下错误码的详细介绍请参见[蓝牙服务子系统错误码](../errorcodes/errorcode-bluetoothManager.md)。
793
794| 错误码ID | 错误信息 |
795| -------- | ---------------------------- |
796|2900099 | Operation failed.                        |
797
798**示例:**
799
800```js
801function onReceiveEvent(data) {
802    console.info('pin required = '+ JSON.stringify(data));
803}
804try {
805    bluetoothManager.on('pinRequired', onReceiveEvent);
806    bluetoothManager.off('pinRequired', onReceiveEvent);
807} catch (err) {
808    console.error("errCode:" + err.code + ",errMessage:" + err.message);
809}
810```
811
812
813## bluetoothManager.on('bondStateChange')
814
815on(type: "bondStateChange", callback: Callback&lt;BondStateParam&gt;): void
816
817订阅蓝牙配对状态改变事件。
818
819**需要权限**:ohos.permission.USE_BLUETOOTH
820
821**系统能力**:SystemCapability.Communication.Bluetooth.Core822
823**参数:**
824
825| 参数名      | 类型                                       | 必填   | 说明                                   |
826| -------- | ---------------------------------------- | ---- | ------------------------------------ |
827| type     | string                                   | 是    | 填写"bondStateChange"字符串,表示蓝牙配对状态改变事件。 |
828| callback | Callback&lt;[BondStateParam](#BondStateParam)&gt; | 是    | 表示回调函数的入参,配对的状态。回调函数由用户创建通过该接口注册。    |
829
830**错误码**:
831
832以下错误码的详细介绍请参见[蓝牙服务子系统错误码](../errorcodes/errorcode-bluetoothManager.md)。
833
834| 错误码ID | 错误信息 |
835| -------- | ---------------------------- |
836|2900099 | Operation failed.                        |
837
838**示例:**
839
840```js
841function onReceiveEvent(data) { // data为回调函数入参,表示配对的状态
842    console.info('pair state = '+ JSON.stringify(data));
843}
844try {
845    bluetoothManager.on('bondStateChange', onReceiveEvent);
846} catch (err) {
847    console.error("errCode:" + err.code + ",errMessage:" + err.message);
848}
849```
850
851
852## bluetoothManager.off('bondStateChange')
853
854off(type: "bondStateChange", callback?: Callback&lt;BondStateParam&gt;): void
855
856取消订阅蓝牙配对状态改变事件。
857
858**需要权限**:ohos.permission.USE_BLUETOOTH
859
860**系统能力**:SystemCapability.Communication.Bluetooth.Core861
862**参数:**
863
864| 参数名      | 类型                                       | 必填   | 说明                                       |
865| -------- | ---------------------------------------- | ---- | ---------------------------------------- |
866| type     | string                                   | 是    | 填写"bondStateChange"字符串,表示蓝牙配对状态改变事件。     |
867| callback | Callback&lt;[BondStateParam](#BondStateParam)&gt; | 否    | 表示取消订阅蓝牙配对状态改变事件上报。不填该参数则取消订阅该type对应的所有回调。 |
868
869**错误码**:
870
871以下错误码的详细介绍请参见[蓝牙服务子系统错误码](../errorcodes/errorcode-bluetoothManager.md)。
872
873| 错误码ID | 错误信息 |
874| -------- | ---------------------------- |
875|2900099 | Operation failed.                        |
876
877**示例:**
878
879```js
880function onReceiveEvent(data) {
881    console.info('bond state = '+ JSON.stringify(data));
882}
883try {
884    bluetoothManager.on('bondStateChange', onReceiveEvent);
885    bluetoothManager.off('bondStateChange', onReceiveEvent);
886} catch (err) {
887    console.error("errCode:" + err.code + ",errMessage:" + err.message);
888}
889```
890
891
892## bluetoothManager.on('stateChange')
893
894on(type: "stateChange", callback: Callback&lt;BluetoothState&gt;): void
895
896订阅蓝牙连接状态改变事件。
897
898**需要权限**:ohos.permission.USE_BLUETOOTH
899
900**系统能力**:SystemCapability.Communication.Bluetooth.Core901
902**参数:**
903
904| 参数名      | 类型                                       | 必填   | 说明                               |
905| -------- | ---------------------------------------- | ---- | -------------------------------- |
906| type     | string                                   | 是    | 填写"stateChange"字符串,表示蓝牙状态改变事件。   |
907| callback | Callback&lt;[BluetoothState](#bluetoothstate)&gt; | 是    | 表示回调函数的入参,蓝牙状态。回调函数由用户创建通过该接口注册。 |
908
909**错误码**:
910
911以下错误码的详细介绍请参见[蓝牙服务子系统错误码](../errorcodes/errorcode-bluetoothManager.md)。
912
913| 错误码ID | 错误信息 |
914| -------- | ---------------------------- |
915|2900099 | Operation failed.                        |
916
917**示例:**
918
919```js
920function onReceiveEvent(data) {
921    console.info('bluetooth state = '+ JSON.stringify(data));
922}
923try {
924    bluetoothManager.on('stateChange', onReceiveEvent);
925} catch (err) {
926    console.error("errCode:" + err.code + ",errMessage:" + err.message);
927}
928```
929
930
931## bluetoothManager.off('stateChange')
932
933off(type: "stateChange", callback?: Callback&lt;BluetoothState&gt;): void
934
935取消订阅蓝牙连接状态改变事件。
936
937**需要权限**:ohos.permission.USE_BLUETOOTH
938
939**系统能力**:SystemCapability.Communication.Bluetooth.Core940
941**参数:**
942
943| 参数名      | 类型                                       | 必填   | 说明                                       |
944| -------- | ---------------------------------------- | ---- | ---------------------------------------- |
945| type     | string                                   | 是    | 填写"stateChange"字符串,表示蓝牙状态改变事件。           |
946| callback | Callback&lt;[BluetoothState](#bluetoothstate)&gt; | 否    | 表示取消订阅蓝牙状态改变事件上报。不填该参数则取消订阅该type对应的所有回调。 |
947
948**错误码**:
949
950以下错误码的详细介绍请参见[蓝牙服务子系统错误码](../errorcodes/errorcode-bluetoothManager.md)。
951
952| 错误码ID | 错误信息 |
953| -------- | ---------------------------- |
954|2900099 | Operation failed.                        |
955
956**示例:**
957
958```js
959function onReceiveEvent(data) {
960    console.info('bluetooth state = '+ JSON.stringify(data));
961}
962try {
963    bluetoothManager.on('stateChange', onReceiveEvent);
964    bluetoothManager.off('stateChange', onReceiveEvent);
965} catch (err) {
966    console.error("errCode:" + err.code + ",errMessage:" + err.message);
967}
968```
969
970
971## bluetoothManager.sppListen<a name="sppListen"></a>
972
973sppListen(name: string, option: SppOption, callback: AsyncCallback&lt;number&gt;): void
974
975创建一个服务端监听Socket。
976
977**需要权限**:ohos.permission.USE_BLUETOOTH
978
979**系统能力**:SystemCapability.Communication.Bluetooth.Core980
981**参数:**
982
983| 参数名      | 类型                          | 必填   | 说明                      |
984| -------- | --------------------------- | ---- | ----------------------- |
985| name     | string                      | 是    | 服务的名称。                  |
986| option   | [SppOption](#sppoption)     | 是    | spp监听配置参数。              |
987| callback | AsyncCallback&lt;number&gt; | 是    | 表示回调函数的入参,服务端Socket的id。 |
988
989**错误码**:
990
991以下错误码的详细介绍请参见[蓝牙服务子系统错误码](../errorcodes/errorcode-bluetoothManager.md)。
992
993| 错误码ID | 错误信息 |
994| -------- | ---------------------------- |
995|2900001 | Service stopped.                         |
996|2900003 | Bluetooth switch is off.                 |
997|2900004 | Profile is not supported.                |
998|2900099 | Operation failed.                        |
999
1000**示例:**
1001
1002```js
1003let serverNumber = -1;
1004function serverSocket(code, number) {
1005  console.log('bluetooth error code: ' + code.code);
1006  if (code.code == 0) {
1007    console.log('bluetooth serverSocket Number: ' + number);
1008    serverNumber = number;
1009  }
1010}
1011
1012let sppOption = {uuid: '00001810-0000-1000-8000-00805F9B34FB', secure: false, type: 0};
1013try {
1014    bluetoothManager.sppListen('server1', sppOption, serverSocket);
1015} catch (err) {
1016    console.error("errCode:" + err.code + ",errMessage:" + err.message);
1017}
1018```
1019
1020
1021## bluetoothManager.sppAccept<a name="sppAccept"></a>
1022
1023sppAccept(serverSocket: number, callback: AsyncCallback&lt;number&gt;): void
1024
1025服务端监听socket等待客户端连接。
1026
1027**系统能力**:SystemCapability.Communication.Bluetooth.Core1028
1029**参数:**
1030
1031| 参数名          | 类型                          | 必填   | 说明                      |
1032| ------------ | --------------------------- | ---- | ----------------------- |
1033| serverSocket | number                      | 是    | 服务端socket的id。           |
1034| callback     | AsyncCallback&lt;number&gt; | 是    | 表示回调函数的入参,客户端socket的id。 |
1035
1036**错误码**:
1037
1038以下错误码的详细介绍请参见[蓝牙服务子系统错误码](../errorcodes/errorcode-bluetoothManager.md)。
1039
1040| 错误码ID | 错误信息 |
1041| -------- | ---------------------------- |
1042|2900001 | Service stopped.                         |
1043|2900003 | Bluetooth switch is off.                 |
1044|2900004 | Profile is not supported.                |
1045|2900099 | Operation failed.                        |
1046
1047**示例:**
1048
1049```js
1050let serverNumber = -1;
1051function serverSocket(code, number) {
1052  console.log('bluetooth error code: ' + code.code);
1053  if (code.code == 0) {
1054    console.log('bluetooth serverSocket Number: ' + number);
1055    serverNumber = number;
1056  }
1057}
1058let clientNumber = -1;
1059function acceptClientSocket(code, number) {
1060  console.log('bluetooth error code: ' + code.code);
1061  if (code.code == 0) {
1062    console.log('bluetooth clientSocket Number: ' + number);
1063    // 获取的clientNumber用作服务端后续读/写操作socket的id。
1064    clientNumber = number;
1065  }
1066}
1067try {
1068    bluetoothManager.sppAccept(serverNumber, acceptClientSocket);
1069} catch (err) {
1070    console.error("errCode:" + err.code + ",errMessage:" + err.message);
1071}
1072```
1073
1074
1075## bluetoothManager.sppConnect<a name="sppConnect"></a>
1076
1077sppConnect(device: string, option: SppOption, callback: AsyncCallback&lt;number&gt;): void
1078
1079客户端向远端设备发起spp连接。
1080
1081**需要权限**:ohos.permission.USE_BLUETOOTH
1082
1083**系统能力**:SystemCapability.Communication.Bluetooth.Core1084
1085**参数:**
1086
1087| 参数名      | 类型                          | 必填   | 说明                             |
1088| -------- | --------------------------- | ---- | ------------------------------ |
1089| device   | string                      | 是    | 对端设备地址,例如:"XX:XX:XX:XX:XX:XX"。 |
1090| option   | [SppOption](#sppoption)     | 是    | spp客户端连接配置参数。                  |
1091| callback | AsyncCallback&lt;number&gt; | 是    | 表示回调函数的入参,客户端socket的id。        |
1092
1093**错误码**:
1094
1095以下错误码的详细介绍请参见[蓝牙服务子系统错误码](../errorcodes/errorcode-bluetoothManager.md)。
1096
1097| 错误码ID | 错误信息 |
1098| -------- | ---------------------------- |
1099|2900001 | Service stopped.                         |
1100|2900003 | Bluetooth switch is off.                 |
1101|2900004 | Profile is not supported.                |
1102|2900099 | Operation failed.                        |
1103
1104**示例:**
1105
1106```js
1107
1108let clientNumber = -1;
1109function clientSocket(code, number) {
1110  if (code.code != 0) {
1111    return;
1112  }
1113  console.log('bluetooth serverSocket Number: ' + number);
1114  // 获取的clientNumber用作客户端后续读/写操作socket的id。
1115  clientNumber = number;
1116}
1117let sppOption = {uuid: '00001810-0000-1000-8000-00805F9B34FB', secure: false, type: 0};
1118try {
1119    bluetoothManager.sppConnect('XX:XX:XX:XX:XX:XX', sppOption, clientSocket);
1120} catch (err) {
1121    console.error("errCode:" + err.code + ",errMessage:" + err.message);
1122}
1123```
1124
1125
1126## bluetoothManager.sppCloseServerSocket<a name="sppCloseServerSocket"></a>
1127
1128sppCloseServerSocket(socket: number): void
1129
1130关闭服务端监听Socket,入参socket由sppListen接口返回。
1131
1132**系统能力**:SystemCapability.Communication.Bluetooth.Core1133
1134**参数:**
1135
1136| 参数名    | 类型     | 必填   | 说明              |
1137| ------ | ------ | ---- | --------------- |
1138| socket | number | 是    | 服务端监听socket的id。 |
1139
1140**错误码**:
1141
1142以下错误码的详细介绍请参见[蓝牙服务子系统错误码](../errorcodes/errorcode-bluetoothManager.md)。
1143
1144| 错误码ID | 错误信息 |
1145| -------- | ---------------------------- |
1146|2900001 | Service stopped.                         |
1147|2900099 | Operation failed.                        |
1148
1149**示例:**
1150
1151```js
1152let serverNumber = -1;
1153function serverSocket(code, number) {
1154  console.log('bluetooth error code: ' + code.code);
1155  if (code.code == 0) {
1156    console.log('bluetooth serverSocket Number: ' + number);
1157    serverNumber = number;
1158  }
1159}
1160try {
1161    bluetoothManager.sppCloseServerSocket(serverNumber);
1162} catch (err) {
1163    console.error("errCode:" + err.code + ",errMessage:" + err.message);
1164}
1165```
1166
1167
1168## bluetoothManager.sppCloseClientSocket<a name="sppCloseClientSocket"></a>
1169
1170sppCloseClientSocket(socket: number): void
1171
1172关闭客户端socket,入参socket由sppAccept或sppConnect接口获取。
1173
1174**系统能力**:SystemCapability.Communication.Bluetooth.Core1175
1176**参数:**
1177
1178| 参数名    | 类型     | 必填   | 说明            |
1179| ------ | ------ | ---- | ------------- |
1180| 参数名    | 类型     | 必填   | 说明            |
1181| socket | number | 是    | 客户端socket的id。 |
1182
1183**错误码**:
1184
1185以下错误码的详细介绍请参见[蓝牙服务子系统错误码](../errorcodes/errorcode-bluetoothManager.md)。
1186
1187| 错误码ID | 错误信息 |
1188| -------- | ---------------------------- |
1189|2900001 | Service stopped.                         |
1190|2900099 | Operation failed.                        |
1191
1192**示例:**
1193
1194```js
1195let clientNumber = -1;
1196function clientSocket(code, number) {
1197  if (code.code != 0) {
1198    return;
1199  }
1200  console.log('bluetooth serverSocket Number: ' + number);
1201  // 获取的clientNumber用作客户端后续读/写操作socket的id。
1202  clientNumber = number;
1203}
1204try {
1205    bluetoothManager.sppCloseClientSocket(clientNumber);
1206} catch (err) {
1207    console.error("errCode:" + err.code + ",errMessage:" + err.message);
1208}
1209```
1210
1211
1212## bluetoothManager.sppWrite<a name="sppWrite"></a>
1213
1214sppWrite(clientSocket: number, data: ArrayBuffer): void
1215
1216通过socket向远端发送数据,入参clientSocket由sppAccept或sppConnect接口获取 。
1217
1218**系统能力**:SystemCapability.Communication.Bluetooth.Core1219
1220**参数:**
1221
1222| 参数名          | 类型          | 必填   | 说明            |
1223| ------------ | ----------- | ---- | ------------- |
1224| clientSocket | number      | 是    | 客户端socket的id。 |
1225| data         | ArrayBuffer | 是    | 写入的数据。        |
1226
1227**错误码**:
1228
1229以下错误码的详细介绍请参见[蓝牙服务子系统错误码](../errorcodes/errorcode-bluetoothManager.md)。
1230
1231| 错误码ID | 错误信息 |
1232| -------- | ---------------------------- |
1233|2901054 | IO error.                                |
1234|2900099 | Operation failed.                        |
1235
1236**示例:**
1237
1238```js
1239let clientNumber = -1;
1240function clientSocket(code, number) {
1241  if (code.code != 0) {
1242    return;
1243  }
1244  console.log('bluetooth serverSocket Number: ' + number);
1245  // 获取的clientNumber用作客户端后续读/写操作socket的id。
1246  clientNumber = number;
1247}
1248let arrayBuffer = new ArrayBuffer(8);
1249let data = new Uint8Array(arrayBuffer);
1250data[0] = 123;
1251try {
1252    bluetoothManager.sppWrite(clientNumber, arrayBuffer);
1253} catch (err) {
1254    console.error("errCode:" + err.code + ",errMessage:" + err.message);
1255}
1256```
1257
1258
1259## bluetoothManager.on('sppRead')
1260
1261on(type: "sppRead", clientSocket: number, callback: Callback&lt;ArrayBuffer&gt;): void
1262
1263订阅spp读请求事件,入参clientSocket由sppAccept或sppConnect接口获取。
1264
1265**系统能力**:SystemCapability.Communication.Bluetooth.Core1266
1267**参数:**
1268
1269| 参数名          | 类型                          | 必填   | 说明                         |
1270| ------------ | --------------------------- | ---- | -------------------------- |
1271| type         | string                      | 是    | 填写"sppRead"字符串,表示spp读请求事件。 |
1272| clientSocket | number                      | 是    | 客户端socket的id。              |
1273| callback     | Callback&lt;ArrayBuffer&gt; | 是    | 表示回调函数的入参,读取到的数据。          |
1274
1275**错误码**:
1276
1277以下错误码的详细介绍请参见[蓝牙服务子系统错误码](../errorcodes/errorcode-bluetoothManager.md)。
1278
1279| 错误码ID | 错误信息 |
1280| -------- | ---------------------------- |
1281|2901054 | IO error.                                |
1282|2900099 | Operation failed.                        |
1283
1284**示例:**
1285
1286```js
1287let clientNumber = -1;
1288function clientSocket(code, number) {
1289  if (code.code != 0) {
1290    return;
1291  }
1292  console.log('bluetooth serverSocket Number: ' + number);
1293  // 获取的clientNumber用作客户端后续读/写操作socket的id。
1294  clientNumber = number;
1295}
1296function dataRead(dataBuffer) {
1297  let data = new Uint8Array(dataBuffer);
1298  console.log('bluetooth data is: ' + data[0]);
1299}
1300try {
1301    bluetoothManager.on('sppRead', clientNumber, dataRead);
1302} catch (err) {
1303    console.error("errCode:" + err.code + ",errMessage:" + err.message);
1304}
1305```
1306
1307
1308## bluetoothManager.off('sppRead')
1309
1310off(type: "sppRead", clientSocket: number, callback?: Callback&lt;ArrayBuffer&gt;): void
1311
1312取消订阅spp读请求事件,入参clientSocket由sppAccept或sppConnect接口获取。
1313
1314**系统能力**:SystemCapability.Communication.Bluetooth.Core1315
1316**参数:**
1317
1318| 参数名          | 类型                          | 必填   | 说明                                       |
1319| ------------ | --------------------------- | ---- | ---------------------------------------- |
1320| type         | string                      | 是    | 填写"sppRead"字符串,表示spp读请求事件。               |
1321| clientSocket | number                      | 是    | 客户端Socket的id。                            |
1322| callback     | Callback&lt;ArrayBuffer&gt; | 否    | 表示取消订阅spp读请求事件上报。不填该参数则取消订阅该type对应的所有回调。 |
1323
1324**示例:**
1325
1326```js
1327let clientNumber = -1;
1328function clientSocket(code, number) {
1329  if (code.code != 0) {
1330    return;
1331  }
1332  console.log('bluetooth serverSocket Number: ' + number);
1333  // 获取的clientNumber用作客户端后续读/写操作socket的id。
1334  clientNumber = number;
1335}
1336try {
1337    bluetoothManager.off('sppRead', clientNumber);
1338} catch (err) {
1339    console.error("errCode:" + err.code + ",errMessage:" + err.message);
1340}
1341```
1342
1343## bluetoothManager.getProfileInstance<a name="getProfileInstance"></a>
1344
1345getProfileInstance(profileId: ProfileId): A2dpSourceProfile | HandsFreeAudioGatewayProfile | HidHostProfile | PanProfile
1346
1347通过ProfileId,获取profile的对象实例,API9新增了HidHostProfile,PanProfile。
1348
1349**系统能力**:SystemCapability.Communication.Bluetooth.Core1350
1351**参数:**
1352
1353| 参数名       | 类型        | 必填   | 说明                                    |
1354| --------- | --------- | ---- | ------------------------------------- |
1355| profileId | [ProfileId](#ProfileId) | 是    | 表示profile的枚举值,例如:PROFILE_A2DP_SOURCE。 |
1356
1357**返回值:**
1358
1359| 类型                                                         | 说明                                                         |
1360| ------------------------------------------------------------ | ------------------------------------------------------------ |
1361| [A2dpSourceProfile](#a2dpsourceprofile)或 [HandsFreeAudioGatewayProfile](#handsfreeaudiogatewayprofile)或[HidHostProfile](#hidhostprofile)或[PanProfile](#panprofile) | 对应的profile的对象实例,当前支持A2dpSourceProfile/HandsFreeAudioGatewayProfile/HidHostProfile/PanProfile。 |
1362
1363**示例:**
1364
1365```js
1366try {
1367    let hidHost = bluetoothManager.getProfileInstance(bluetoothManager.ProfileId.PROFILE_HID_HOST);
1368} catch (err) {
1369    console.error("errCode:" + err.code + ",errMessage:" + err.message);
1370}
1371```
1372
1373
1374## bluetoothManager.BLE
1375
1376### bluetoothManager.BLE.createGattServer
1377
1378createGattServer(): GattServer
1379
1380创建一个可使用的GattServer实例。
1381
1382**系统能力**:SystemCapability.Communication.Bluetooth.Core1383
1384**返回值:**
1385
1386| 类型                        | 说明                                   |
1387| ------------------------- | ------------------------------------ |
1388| [GattServer](#gattserver) | server端类,使用server端方法之前需要创建该类的实例进行操作。 |
1389
1390**示例:**
1391
1392```js
1393let gattServer = bluetoothManager.BLE.createGattServer();
1394```
1395
1396
1397### bluetoothManager.BLE.createGattClientDevice
1398
1399createGattClientDevice(deviceId: string): GattClientDevice
1400
1401创建一个可使用的GattClientDevice实例。
1402
1403**系统能力**:SystemCapability.Communication.Bluetooth.Core1404
1405**参数:**
1406
1407| 参数名      | 类型     | 必填   | 说明                                   |
1408| -------- | ------ | ---- | ------------------------------------ |
1409| deviceId | string | 是    | 对端设备地址,&nbsp;例如:"XX:XX:XX:XX:XX:XX"。 |
1410
1411**返回值:**
1412
1413| 类型                                    | 说明                                   |
1414| ------------------------------------- | ------------------------------------ |
1415| [GattClientDevice](#gattclientdevice) | client端类,使用client端方法之前需要创建该类的实例进行操作。 |
1416
1417**示例:**
1418
1419```js
1420try {
1421    let device = bluetoothManager.BLE.createGattClientDevice('XX:XX:XX:XX:XX:XX');
1422} catch (err) {
1423    console.error("errCode:" + err.code + ",errMessage:" + err.message);
1424}
1425```
1426
1427
1428### bluetoothManager.BLE.getConnectedBLEDevices
1429
1430getConnectedBLEDevices(): Array&lt;string&gt;
1431
1432获取和当前设备连接的BLE设备。
1433
1434**需要权限**:ohos.permission.USE_BLUETOOTH
1435
1436**系统能力**:SystemCapability.Communication.Bluetooth.Core1437
1438**返回值:**
1439
1440| 类型                  | 说明                  |
1441| ------------------- | ------------------- |
1442| Array&lt;string&gt; | 返回当前设备作为Server端时连接BLE设备地址集合。 |
1443
1444**错误码**:
1445
1446以下错误码的详细介绍请参见[蓝牙服务子系统错误码](../errorcodes/errorcode-bluetoothManager.md)。
1447
1448| 错误码ID | 错误信息 |
1449| -------- | ---------------------------- |
1450|2900001 | Service stopped.                         |
1451|2900003 | Bluetooth switch is off.                 |
1452|2900099 | Operation failed.                        |
1453
1454**示例:**
1455
1456```js
1457try {
1458    let result = bluetoothManager.BLE.getConnectedBLEDevices();
1459} catch (err) {
1460    console.error("errCode:" + err.code + ",errMessage:" + err.message);
1461}
1462```
1463
1464
1465### bluetoothManager.BLE.startBLEScan
1466
1467startBLEScan(filters: Array&lt;ScanFilter&gt;, options?: ScanOptions): void
1468
1469发起BLE扫描流程。
1470
1471**需要权限**:ohos.permission.DISCOVER_BLUETOOTHohos.permission.MANAGE_BLUETOOTHohos.permission.LOCATIONohos.permission.APPROXIMATELY_LOCATION
1472
1473**系统能力**:SystemCapability.Communication.Bluetooth.Core1474
1475**参数:**
1476
1477| 参数名     | 类型                                     | 必填   | 说明                                  |
1478| ------- | -------------------------------------- | ---- | ----------------------------------- |
1479| filters | Array&lt;[ScanFilter](#scanfilter)&gt; | 是    | 表示扫描结果过滤策略集合,如果不使用过滤的方式,该参数设置为null。 |
1480| options | [ScanOptions](#scanoptions)            | 否    | 表示扫描的参数配置,可选参数。                     |
1481
1482**错误码**:
1483
1484以下错误码的详细介绍请参见[蓝牙服务子系统错误码](../errorcodes/errorcode-bluetoothManager.md)。
1485
1486| 错误码ID | 错误信息 |
1487| -------- | ---------------------------- |
1488|2900001 | Service stopped.                         |
1489|2900003 | Bluetooth switch is off.                 |
1490|2900099 | Operation failed.                        |
1491
1492**示例:**
1493
1494```js
1495function onReceiveEvent(data) {
1496    console.info('BLE scan device find result = '+ JSON.stringify(data));
1497}
1498try {
1499    bluetoothManager.BLE.on("BLEDeviceFind", onReceiveEvent);
1500    bluetoothManager.BLE.startBLEScan(
1501        [{
1502            deviceId:"XX:XX:XX:XX:XX:XX",
1503            name:"test",
1504            serviceUuid:"00001888-0000-1000-8000-00805f9b34fb"
1505        }],
1506        {
1507            interval: 500,
1508            dutyMode: bluetoothManager.ScanDuty.SCAN_MODE_LOW_POWER,
1509            matchMode: bluetoothManager.MatchMode.MATCH_MODE_AGGRESSIVE,
1510        }
1511    );
1512} catch (err) {
1513    console.error("errCode:" + err.code + ",errMessage:" + err.message);
1514}
1515```
1516
1517
1518### bluetoothManager.BLE.stopBLEScan
1519
1520stopBLEScan(): void
1521
1522停止BLE扫描流程。
1523
1524**需要权限**:ohos.permission.DISCOVER_BLUETOOTH
1525
1526**系统能力**:SystemCapability.Communication.Bluetooth.Core1527
1528**错误码**:
1529
1530以下错误码的详细介绍请参见[蓝牙服务子系统错误码](../errorcodes/errorcode-bluetoothManager.md)。
1531
1532| 错误码ID | 错误信息 |
1533| -------- | ---------------------------- |
1534|2900001 | Service stopped.                         |
1535|2900003 | Bluetooth switch is off.                 |
1536|2900099 | Operation failed.                        |
1537
1538**示例:**
1539
1540```js
1541try {
1542    bluetoothManager.BLE.stopBLEScan();
1543} catch (err) {
1544    console.error("errCode:" + err.code + ",errMessage:" + err.message);
1545}
1546```
1547
1548
1549### bluetoothManager.BLE.on('BLEDeviceFind')
1550
1551on(type: "BLEDeviceFind", callback: Callback&lt;Array&lt;ScanResult&gt;&gt;): void
1552
1553订阅BLE设备发现上报事件。
1554
1555**需要权限**:ohos.permission.USE_BLUETOOTH
1556
1557**系统能力**:SystemCapability.Communication.Bluetooth.Core1558
1559**参数:**
1560
1561| 参数名      | 类型                                       | 必填   | 说明                                  |
1562| -------- | ---------------------------------------- | ---- | ----------------------------------- |
1563| type     | string                                   | 是    | 填写"BLEDeviceFind"字符串,表示BLE设备发现事件。   |
1564| callback | Callback&lt;Array&lt;[ScanResult](#scanresult)&gt;&gt; | 是    | 表示回调函数的入参,发现的设备集合。回调函数由用户创建通过该接口注册。 |
1565
1566**错误码**:
1567
1568以下错误码的详细介绍请参见[蓝牙服务子系统错误码](../errorcodes/errorcode-bluetoothManager.md)。
1569
1570| 错误码ID | 错误信息 |
1571| -------- | ---------------------------- |
1572|2900099 | Operation failed.                        |
1573
1574**示例:**
1575
1576```js
1577function onReceiveEvent(data) {
1578    console.info('bluetooth device find = '+ JSON.stringify(data));
1579}
1580try {
1581    bluetoothManager.BLE.on('BLEDeviceFind', onReceiveEvent);
1582} catch (err) {
1583    console.error("errCode:" + err.code + ",errMessage:" + err.message);
1584}
1585```
1586
1587
1588### bluetoothManager.BLE.off('BLEDeviceFind')
1589
1590off(type: "BLEDeviceFind", callback?: Callback&lt;Array&lt;ScanResult&gt;&gt;): void
1591
1592取消订阅BLE设备发现上报事件。
1593
1594**需要权限**:ohos.permission.USE_BLUETOOTH
1595
1596**系统能力**:SystemCapability.Communication.Bluetooth.Core1597
1598**参数:**
1599
1600| 参数名      | 类型                                       | 必填   | 说明                                       |
1601| -------- | ---------------------------------------- | ---- | ---------------------------------------- |
1602| type     | string                                   | 是    | 填写"BLEDeviceFind"字符串,表示BLE设备发现事件。        |
1603| callback | Callback&lt;Array&lt;[ScanResult](#scanresult)&gt;&gt; | 否    | 表示取消订阅BLE设备发现事件上报。不填该参数则取消订阅该type对应的所有回调。 |
1604
1605**错误码**:
1606
1607以下错误码的详细介绍请参见[蓝牙服务子系统错误码](../errorcodes/errorcode-bluetoothManager.md)。
1608
1609| 错误码ID | 错误信息 |
1610| -------- | ---------------------------- |
1611|2900099 | Operation failed.                        |
1612
1613**示例:**
1614
1615```js
1616function onReceiveEvent(data) {
1617    console.info('bluetooth device find = '+ JSON.stringify(data));
1618}
1619try {
1620    bluetoothManager.BLE.on('BLEDeviceFind', onReceiveEvent);
1621    bluetoothManager.BLE.off('BLEDeviceFind', onReceiveEvent);
1622} catch (err) {
1623    console.error("errCode:" + err.code + ",errMessage:" + err.message);
1624}
1625```
1626
1627
1628## BaseProfile
1629
1630profile基类。
1631
1632
1633### getConnectionDevices<a name="getConnectionDevices"></a>
1634
1635getConnectionDevices(): Array&lt;string&gt;
1636
1637获取已连接设备列表。
1638
1639**需要权限**:ohos.permission.USE_BLUETOOTH
1640
1641**系统能力**:SystemCapability.Communication.Bluetooth.Core1642
1643**返回值:**
1644
1645| 类型                  | 说明            |
1646| ------------------- | ------------- |
1647| Array&lt;string&gt; | 返回已连接设备的地址列表。 |
1648
1649**错误码**:
1650
1651以下错误码的详细介绍请参见[蓝牙服务子系统错误码](../errorcodes/errorcode-bluetoothManager.md)。
1652
1653| 错误码ID | 错误信息 |
1654| -------- | ---------------------------- |
1655|2900001 | Service stopped.                         |
1656|2900003 | Bluetooth switch is off.                 |
1657|2900004 | Profile is not supported.                |
1658|2900099 | Operation failed.                        |
1659
1660**示例:**
1661
1662```js
1663try {
1664    let a2dpSrc = bluetoothManager.getProfileInstance(bluetoothManager.ProfileId.PROFILE_A2DP_SOURCE) as bluetoothManager.A2dpSourceProfile;
1665    let retArray = a2dpSrc.getConnectionDevices();
1666} catch (err) {
1667    console.error("errCode:" + err.code + ",errMessage:" + err.message);
1668}
1669```
1670
1671### getDeviceState<a name="getDeviceState"></a>
1672
1673getDeviceState(device: string): ProfileConnectionState
1674
1675获取设备profile的连接状态。
1676
1677**需要权限**:ohos.permission.USE_BLUETOOTH
1678
1679**系统能力**:SystemCapability.Communication.Bluetooth.Core1680
1681**参数:**
1682
1683| 参数名    | 类型     | 必填   | 说明      |
1684| ------ | ------ | ---- | ------- |
1685| device | string | 是    | 远端设备地址。 |
1686
1687**返回值:**
1688
1689| 类型                                              | 说明                    |
1690| ------------------------------------------------- | ----------------------- |
1691| [ProfileConnectionState](#profileconnectionstate) | 返回profile的连接状态。 |
1692
1693**错误码**:
1694
1695以下错误码的详细介绍请参见[蓝牙服务子系统错误码](../errorcodes/errorcode-bluetoothManager.md)。
1696
1697| 错误码ID | 错误信息 |
1698| -------- | ---------------------------- |
1699|2900001 | Service stopped.                         |
1700|2900003 | Bluetooth switch is off.                 |
1701|2900004 | Profile is not supported.                |
1702|2900099 | Operation failed.                        |
1703
1704**示例:**
1705
1706```js
1707try {
1708    let a2dpSrc = bluetoothManager.getProfileInstance(bluetoothManager.ProfileId.PROFILE_A2DP_SOURCE) as bluetoothManager.A2dpSourceProfile;
1709    let ret = a2dpSrc.getDeviceState('XX:XX:XX:XX:XX:XX');
1710} catch (err) {
1711    console.error("errCode:" + err.code + ",errMessage:" + err.message);
1712}
1713```
1714
1715## A2dpSourceProfile
1716
1717使用A2dpSourceProfile方法之前需要创建该类的实例进行操作,通过getProfile()方法构造此实例。
1718
1719
1720### connect<a name="a2dp-connect"></a>
1721
1722connect(device: string): void
1723
1724发起设备的A2dp服务连接请求。
1725
1726**需要权限**:ohos.permission.DISCOVER_BLUETOOTH
1727
1728**系统能力**:SystemCapability.Communication.Bluetooth.Core1729
1730**参数:**
1731
1732| 参数名    | 类型     | 必填   | 说明      |
1733| ------ | ------ | ---- | ------- |
1734| device | string | 是    | 远端设备地址。 |
1735
1736**错误码**:
1737
1738以下错误码的详细介绍请参见[蓝牙服务子系统错误码](../errorcodes/errorcode-bluetoothManager.md)。
1739
1740| 错误码ID | 错误信息 |
1741| -------- | ---------------------------- |
1742|2900001 | Service stopped.                         |
1743|2900003 | Bluetooth switch is off.                 |
1744|2900004 | Profile is not supported.                |
1745|2900099 | Operation failed.                        |
1746
1747**示例:**
1748
1749```js
1750try {
1751    let a2dpSrc = bluetoothManager.getProfileInstance(bluetoothManager.ProfileId.PROFILE_A2DP_SOURCE) as bluetoothManager.A2dpSourceProfile;
1752    a2dpSrc.connect('XX:XX:XX:XX:XX:XX');
1753} catch (err) {
1754    console.error("errCode:" + err.code + ",errMessage:" + err.message);
1755}
1756```
1757
1758
1759### disconnect<a name="a2dp-disconnect"></a>
1760
1761disconnect(device: string): void
1762
1763断开设备的a2dp服务连接。
1764
1765**需要权限**:ohos.permission.DISCOVER_BLUETOOTH
1766
1767**系统能力**:SystemCapability.Communication.Bluetooth.Core1768
1769**参数:**
1770
1771| 参数名    | 类型     | 必填   | 说明      |
1772| ------ | ------ | ---- | ------- |
1773| device | string | 是    | 远端设备地址。 |
1774
1775**错误码**:
1776
1777以下错误码的详细介绍请参见[蓝牙服务子系统错误码](../errorcodes/errorcode-bluetoothManager.md)。
1778
1779| 错误码ID | 错误信息 |
1780| -------- | ---------------------------- |
1781|2900001 | Service stopped.                         |
1782|2900003 | Bluetooth switch is off.                 |
1783|2900004 | Profile is not supported.                |
1784|2900099 | Operation failed.                        |
1785
1786**示例:**
1787
1788```js
1789try {
1790    let a2dpSrc = bluetoothManager.getProfileInstance(bluetoothManager.ProfileId.PROFILE_A2DP_SOURCE) as bluetoothManager.A2dpSourceProfile;
1791    a2dpSrc.disconnect('XX:XX:XX:XX:XX:XX');
1792} catch (err) {
1793    console.error("errCode:" + err.code + ",errMessage:" + err.message);
1794}
1795```
1796
1797
1798### on('connectionStateChange')
1799
1800on(type: "connectionStateChange", callback: Callback&lt;[StateChangeParam](#StateChangeParam)&gt;): void
1801
1802订阅a2dp连接状态变化事件。
1803
1804**系统能力**:SystemCapability.Communication.Bluetooth.Core1805
1806**参数:**
1807
1808| 参数名      | 类型                                       | 必填   | 说明                                       |
1809| -------- | ---------------------------------------- | ---- | ---------------------------------------- |
1810| type     | string                                   | 是    | 填写"connectionStateChange"字符串,表示连接状态变化事件。 |
1811| callback | Callback&lt;[StateChangeParam](#StateChangeParam)&gt; | 是    | 表示回调函数的入参。                               |
1812
1813**返回值:**
1814
18151816
1817**示例:**
1818
1819```js
1820function onReceiveEvent(data) {
1821    console.info('a2dp state = '+ JSON.stringify(data));
1822}
1823let a2dpSrc = bluetoothManager.getProfileInstance(bluetoothManager.ProfileId.PROFILE_A2DP_SOURCE) as bluetoothManager.A2dpSourceProfile;
1824a2dpSrc.on('connectionStateChange', onReceiveEvent);
1825```
1826
1827
1828### off('connectionStateChange')
1829
1830off(type: "connectionStateChange", callback?: Callback&lt;[StateChangeParam](#StateChangeParam)&gt;): void
1831
1832取消订阅a2dp连接状态变化事件。
1833
1834**系统能力**:SystemCapability.Communication.Bluetooth.Core1835
1836**参数:**
1837
1838| 参数名      | 类型                                       | 必填   | 说明                                       |
1839| -------- | ---------------------------------------- | ---- | ---------------------------------------- |
1840| type     | string                                   | 是    | 填写"connectionStateChange"字符串,表示连接状态变化事件。 |
1841| callback | Callback&lt;[StateChangeParam](#StateChangeParam)&gt; | 否    | 表示回调函数的入参。                               |
1842
1843**返回值:**
1844
18451846
1847**示例:**
1848
1849```js
1850function onReceiveEvent(data) {
1851    console.info('a2dp state = '+ JSON.stringify(data));
1852}
1853let a2dpSrc = bluetoothManager.getProfileInstance(bluetoothManager.ProfileId.PROFILE_A2DP_SOURCE) as bluetoothManager.A2dpSourceProfile;
1854a2dpSrc.on('connectionStateChange', onReceiveEvent);
1855a2dpSrc.off('connectionStateChange', onReceiveEvent);
1856```
1857
1858
1859### getPlayingState
1860
1861getPlayingState(device: string): PlayingState
1862
1863获取设备的播放状态。
1864
1865**系统能力**:SystemCapability.Communication.Bluetooth.Core1866
1867**参数:**
1868
1869| 参数名    | 类型     | 必填   | 说明      |
1870| ------ | ------ | ---- | ------- |
1871| device | string | 是    | 远端设备地址。 |
1872
1873**返回值:**
1874
1875| 类型                            | 说明         |
1876| ----------------------------- | ---------- |
1877| [PlayingState](#PlayingState) | 远端设备的播放状态。 |
1878
1879**错误码**:
1880
1881以下错误码的详细介绍请参见[蓝牙服务子系统错误码](../errorcodes/errorcode-bluetoothManager.md)。
1882
1883| 错误码ID | 错误信息 |
1884| -------- | ---------------------------- |
1885|2900001 | Service stopped.                         |
1886|2900003 | Bluetooth switch is off.                 |
1887|2900004 | Profile is not supported.                |
1888|2900099 | Operation failed.                        |
1889
1890**示例:**
1891
1892```js
1893try {
1894    let a2dpSrc = bluetoothManager.getProfileInstance(bluetoothManager.ProfileId.PROFILE_A2DP_SOURCE) as bluetoothManager.A2dpSourceProfile;
1895    let state = a2dpSrc.getPlayingState('XX:XX:XX:XX:XX:XX');
1896} catch (err) {
1897    console.error("errCode:" + err.code + ",errMessage:" + err.message);
1898}
1899```
1900
1901
1902## HandsFreeAudioGatewayProfile
1903
1904使用HandsFreeAudioGatewayProfile方法之前需要创建该类的实例进行操作,通过getProfile()方法构造此实例。
1905
1906
1907### connect<a name="hfp-connect"></a>
1908
1909connect(device: string): void
1910
1911连接设备的HFP服务。
1912
1913**需要权限**:ohos.permission.DISCOVER_BLUETOOTH
1914
1915**系统能力**:SystemCapability.Communication.Bluetooth.Core1916
1917**参数:**
1918
1919| 参数名    | 类型     | 必填   | 说明      |
1920| ------ | ------ | ---- | ------- |
1921| device | string | 是    | 远端设备地址。 |
1922
1923**错误码**:
1924
1925以下错误码的详细介绍请参见[蓝牙服务子系统错误码](../errorcodes/errorcode-bluetoothManager.md)。
1926
1927| 错误码ID | 错误信息 |
1928| -------- | ---------------------------- |
1929|2900001 | Service stopped.                         |
1930|2900003 | Bluetooth switch is off.                 |
1931|2900004 | Profile is not supported.                |
1932|2900099 | Operation failed.                        |
1933
1934**示例:**
1935
1936```js
1937try {
1938    let hfpAg = bluetoothManager.getProfileInstance(bluetoothManager.ProfileId.PROFILE_HANDS_FREE_AUDIO_GATEWAY) as bluetoothManager.HandsFreeAudioGatewayProfile;
1939    hfpAg.connect('XX:XX:XX:XX:XX:XX');
1940} catch (err) {
1941    console.error("errCode:" + err.code + ",errMessage:" + err.message);
1942}
1943```
1944
1945
1946### disconnect<a name="hfp-disconnect"></a>
1947
1948disconnect(device: string): void
1949
1950断开连接设备的HFP服务。
1951
1952**需要权限**:ohos.permission.DISCOVER_BLUETOOTH
1953
1954**系统能力**:SystemCapability.Communication.Bluetooth.Core1955
1956**参数:**
1957
1958| 参数名    | 类型     | 必填   | 说明      |
1959| ------ | ------ | ---- | ------- |
1960| device | string | 是    | 远端设备地址。 |
1961
1962**错误码**:
1963
1964以下错误码的详细介绍请参见[蓝牙服务子系统错误码](../errorcodes/errorcode-bluetoothManager.md)。
1965
1966| 错误码ID | 错误信息 |
1967| -------- | ---------------------------- |
1968|2900001 | Service stopped.                         |
1969|2900003 | Bluetooth switch is off.                 |
1970|2900004 | Profile is not supported.                |
1971|2900099 | Operation failed.                        |
1972
1973**示例:**
1974
1975```js
1976try {
1977    let hfpAg = bluetoothManager.getProfileInstance(bluetoothManager.ProfileId.PROFILE_HANDS_FREE_AUDIO_GATEWAY) as bluetoothManager.HandsFreeAudioGatewayProfile;
1978    hfpAg.disconnect('XX:XX:XX:XX:XX:XX');
1979} catch (err) {
1980    console.error("errCode:" + err.code + ",errMessage:" + err.message);
1981}
1982```
1983
1984
1985### on('connectionStateChange')
1986
1987on(type: "connectionStateChange", callback: Callback&lt;[StateChangeParam](#StateChangeParam)&gt;): void
1988
1989订阅HFP连接状态变化事件。
1990
1991**系统能力**:SystemCapability.Communication.Bluetooth.Core1992
1993**参数:**
1994
1995| 参数名      | 类型                                       | 必填   | 说明                                       |
1996| -------- | ---------------------------------------- | ---- | ---------------------------------------- |
1997| type     | string                                   | 是    | 填写"connectionStateChange"字符串,表示连接状态变化事件。 |
1998| callback | Callback&lt;[StateChangeParam](#StateChangeParam)&gt; | 是    | 表示回调函数的入参。                               |
1999
2000**示例:**
2001
2002```js
2003function onReceiveEvent(data) {
2004    console.info('hfp state = '+ JSON.stringify(data));
2005}
2006let hfpAg = bluetoothManager.getProfileInstance(bluetoothManager.ProfileId.PROFILE_HANDS_FREE_AUDIO_GATEWAY) as
2007  bluetoothManager.HandsFreeAudioGatewayProfile;
2008hfpAg.on('connectionStateChange', onReceiveEvent);
2009```
2010
2011
2012### off('connectionStateChange')
2013
2014off(type: "connectionStateChange", callback?: Callback&lt;[StateChangeParam](#StateChangeParam)&gt;): void
2015
2016取消订阅HFP连接状态变化事件。
2017
2018**系统能力**:SystemCapability.Communication.Bluetooth.Core2019
2020**参数:**
2021
2022| 参数名      | 类型                                       | 必填   | 说明                                       |
2023| -------- | ---------------------------------------- | ---- | ---------------------------------------- |
2024| type     | string                                   | 是    | 填写"connectionStateChange"字符串,表示连接状态变化事件。 |
2025| callback | Callback&lt;[StateChangeParam](#StateChangeParam)&gt; | 否    | 表示回调函数的入参。                               |
2026
2027**示例:**
2028
2029```js
2030function onReceiveEvent(data) {
2031    console.info('hfp state = '+ JSON.stringify(data));
2032}
2033let hfpAg = bluetoothManager.getProfileInstance(bluetoothManager.ProfileId.PROFILE_HANDS_FREE_AUDIO_GATEWAY) as
2034  bluetoothManager.HandsFreeAudioGatewayProfile;
2035hfpAg.on('connectionStateChange', onReceiveEvent);
2036hfpAg.off('connectionStateChange', onReceiveEvent);
2037```
2038
2039
2040## HidHostProfile
2041
2042使用HidHostProfile方法之前需要创建该类的实例进行操作,通过getProfile()方法构造此实例。
2043
2044
2045### connect<a name="HidHost-connect"></a>
2046
2047connect(device: string): void
2048
2049连接设备的HidHost服务。
2050
2051**系统接口**:此接口为系统接口。
2052
2053**需要权限**:ohos.permission.DISCOVER_BLUETOOTH
2054
2055**系统能力**:SystemCapability.Communication.Bluetooth.Core2056
2057**参数:**
2058
2059| 参数名    | 类型     | 必填   | 说明      |
2060| ------ | ------ | ---- | ------- |
2061| device | string | 是    | 远端设备地址。 |
2062
2063**错误码**:
2064
2065以下错误码的详细介绍请参见[蓝牙服务子系统错误码](../errorcodes/errorcode-bluetoothManager.md)。
2066
2067| 错误码ID | 错误信息 |
2068| -------- | ---------------------------- |
2069|2900001 | Service stopped.                         |
2070|2900003 | Bluetooth switch is off.                 |
2071|2900004 | Profile is not supported.                |
2072|2900099 | Operation failed.                        |
2073
2074**示例:**
2075
2076```js
2077try {
2078    let hidHostProfile = bluetoothManager.getProfileInst(bluetoothManager.ProfileId.PROFILE_HID_HOST) as bluetoothManager.HidHostProfile;
2079    hidHostProfile.connect('XX:XX:XX:XX:XX:XX');
2080} catch (err) {
2081    console.error("errCode:" + err.code + ",errMessage:" + err.message);
2082}
2083```
2084
2085
2086### disconnect<a name="HidHost-disconnect"></a>
2087
2088disconnect(device: string): void
2089
2090断开连接设备的HidHost服务。
2091
2092**系统接口**:此接口为系统接口。
2093
2094**需要权限**:ohos.permission.DISCOVER_BLUETOOTH
2095
2096**系统能力**:SystemCapability.Communication.Bluetooth.Core2097
2098**参数:**
2099
2100| 参数名    | 类型     | 必填   | 说明      |
2101| ------ | ------ | ---- | ------- |
2102| device | string | 是    | 远端设备地址。 |
2103
2104**错误码**:
2105
2106以下错误码的详细介绍请参见[蓝牙服务子系统错误码](../errorcodes/errorcode-bluetoothManager.md)。
2107
2108| 错误码ID | 错误信息 |
2109| -------- | ---------------------------- |
2110|2900001 | Service stopped.                         |
2111|2900003 | Bluetooth switch is off.                 |
2112|2900004 | Profile is not supported.                |
2113|2900099 | Operation failed.                        |
2114
2115**示例:**
2116
2117```js
2118try {
2119    let hidHostProfile = bluetoothManager.getProfileInst(bluetoothManager.ProfileId.PROFILE_HID_HOST) as bluetoothManager.HidHostProfile;
2120    hidHostProfile.disconnect('XX:XX:XX:XX:XX:XX');
2121} catch (err) {
2122    console.error("errCode:" + err.code + ",errMessage:" + err.message);
2123}
2124```
2125
2126
2127### on('connectionStateChange')
2128
2129on(type: "connectionStateChange", callback: Callback&lt;[StateChangeParam](#StateChangeParam)&gt;): void
2130
2131订阅HidHost连接状态变化事件。
2132
2133**系统能力**:SystemCapability.Communication.Bluetooth.Core2134
2135**参数:**
2136
2137| 参数名      | 类型                                       | 必填   | 说明                                       |
2138| -------- | ---------------------------------------- | ---- | ---------------------------------------- |
2139| type     | string                                   | 是    | 填写"connectionStateChange"字符串,表示连接状态变化事件。 |
2140| callback | Callback&lt;[StateChangeParam](#StateChangeParam)&gt; | 是    | 表示回调函数的入参。                               |
2141
2142**示例:**
2143
2144```js
2145function onReceiveEvent(data) {
2146    console.info('hidHost state = '+ JSON.stringify(data));
2147}
2148let hidHost = bluetoothManager.getProfileInst(bluetoothManager.ProfileId.PROFILE_HID_HOST) as bluetoothManager.HidHostProfile;
2149hidHost.on('connectionStateChange', onReceiveEvent);
2150```
2151
2152
2153### off('connectionStateChange')
2154
2155off(type: "connectionStateChange", callback?: Callback&lt;[StateChangeParam](#StateChangeParam)&gt;): void
2156
2157取消订阅HidHost连接状态变化事件。
2158
2159**系统能力**:SystemCapability.Communication.Bluetooth.Core2160
2161**参数:**
2162
2163| 参数名   | 类型                                                  | 必填 | 说明                                                      |
2164| -------- | ----------------------------------------------------- | ---- | --------------------------------------------------------- |
2165| type     | string                                                | 是   | 填写"connectionStateChange"字符串,表示连接状态变化事件。 |
2166| callback | Callback&lt;[StateChangeParam](#StateChangeParam)&gt; | 否   | 表示回调函数的入参。                                      |
2167
2168**示例:**
2169
2170```js
2171function onReceiveEvent(data) {
2172    console.info('hidHost state = '+ JSON.stringify(data));
2173}
2174let hidHost = bluetoothManager.getProfileInst(bluetoothManager.ProfileId.PROFILE_HID_HOST) as bluetoothManager.HidHostProfile;
2175hidHost.on('connectionStateChange', onReceiveEvent);
2176hidHost.off('connectionStateChange', onReceiveEvent);
2177```
2178
2179
2180## PanProfile
2181
2182使用PanProfile方法之前需要创建该类的实例进行操作,通过getProfile()方法构造此实例。
2183
2184
2185### disconnect<a name="PanP-disconnect"></a>
2186
2187disconnect(device: string): void
2188
2189断开连接设备的Pan服务。
2190
2191**系统接口**:此接口为系统接口。
2192
2193**需要权限**:ohos.permission.USE_BLUETOOTH
2194
2195**系统能力**:SystemCapability.Communication.Bluetooth.Core2196
2197**参数:**
2198
2199| 参数名    | 类型     | 必填   | 说明      |
2200| ------ | ------ | ---- | ------- |
2201| device | string | 是    | 远端设备地址。 |
2202
2203**错误码**:
2204
2205以下错误码的详细介绍请参见[蓝牙服务子系统错误码](../errorcodes/errorcode-bluetoothManager.md)。
2206
2207| 错误码ID | 错误信息 |
2208| -------- | ---------------------------- |
2209|2900001 | Service stopped.                         |
2210|2900003 | Bluetooth switch is off.                 |
2211|2900004 | Profile is not supported.                |
2212|2900099 | Operation failed.                        |
2213
2214**示例:**
2215
2216```js
2217try {
2218    let panProfile = bluetoothManager.getProfileInst(bluetoothManager.ProfileId.PROFILE_PAN_NETWORK) as bluetoothManager.PanProfile;
2219    panProfile.disconnect('XX:XX:XX:XX:XX:XX');
2220} catch (err) {
2221    console.error("errCode:" + err.code + ",errMessage:" + err.message);
2222}
2223```
2224
2225
2226### on('connectionStateChange')
2227
2228on(type: "connectionStateChange", callback: Callback&lt;[StateChangeParam](#StateChangeParam)&gt;): void
2229
2230订阅Pan连接状态变化事件。
2231
2232**系统能力**:SystemCapability.Communication.Bluetooth.Core2233
2234**参数:**
2235
2236| 参数名      | 类型                                       | 必填   | 说明                                       |
2237| -------- | ---------------------------------------- | ---- | ---------------------------------------- |
2238| type     | string                                   | 是    | 填写"connectionStateChange"字符串,表示连接状态变化事件。 |
2239| callback | Callback&lt;[StateChangeParam](#StateChangeParam)&gt; | 是    | 表示回调函数的入参。                               |
2240
2241**示例:**
2242
2243```js
2244function onReceiveEvent(data) {
2245    console.info('pan state = '+ JSON.stringify(data));
2246}
2247let panProfile = bluetoothManager.getProfileInst(bluetoothManager.ProfileId.PROFILE_PAN_NETWORK) as bluetoothManager.PanProfile;
2248panProfile.on('connectionStateChange', onReceiveEvent);
2249```
2250
2251
2252### off('connectionStateChange')
2253
2254off(type: "connectionStateChange", callback?: Callback&lt;[StateChangeParam](#StateChangeParam)&gt;): void
2255
2256取消订阅Pan连接状态变化事件。
2257
2258**系统能力**:SystemCapability.Communication.Bluetooth.Core2259
2260**参数:**
2261
2262| 参数名   | 类型                                                  | 必填 | 说明                                                      |
2263| -------- | ----------------------------------------------------- | ---- | --------------------------------------------------------- |
2264| type     | string                                                | 是   | 填写"connectionStateChange"字符串,表示连接状态变化事件。 |
2265| callback | Callback&lt;[StateChangeParam](#StateChangeParam)&gt; | 否   | 表示回调函数的入参。                                      |
2266
2267**示例:**
2268
2269```js
2270function onReceiveEvent(data) {
2271    console.info('pan state = '+ JSON.stringify(data));
2272}
2273let panProfile = bluetoothManager.getProfileInst(bluetoothManager.ProfileId.PROFILE_PAN_NETWORK) as bluetoothManager.PanProfile;
2274panProfile.on('connectionStateChange', onReceiveEvent);
2275panProfile.off('connectionStateChange', onReceiveEvent);
2276```
2277
2278
2279### setTethering<a name="setTethering"></a>
2280
2281setTethering(enable: boolean): void
2282
2283设置网络共享状态。
2284
2285**系统接口**:此接口为系统接口。
2286
2287**需要权限**:ohos.permission.DISCOVER_BLUETOOTH
2288
2289**系统能力**:SystemCapability.Communication.Bluetooth.Core2290
2291**参数:**
2292
2293| 参数名    | 类型     | 必填   | 说明      |
2294| ------ | ------ | ---- | ------- |
2295| value | boolean | 是    | 是否设置蓝牙共享。 |
2296
2297**错误码**:
2298
2299以下错误码的详细介绍请参见[蓝牙服务子系统错误码](../errorcodes/errorcode-bluetoothManager.md)。
2300
2301| 错误码ID | 错误信息 |
2302| -------- | ---------------------------- |
2303|2900001 | Service stopped.                         |
2304|2900003 | Bluetooth switch is off.                 |
2305|2900004 | Profile is not supported.                |
2306|2900099 | Operation failed.                        |
2307
2308**示例:**
2309
2310```js
2311try {
2312    let panProfile = bluetoothManager.getProfileInst(bluetoothManager.ProfileId.PROFILE_PAN_NETWORK) as bluetoothManager.PanProfile;
2313    panProfile.setTethering(true);
2314} catch (err) {
2315    console.error("errCode:" + err.code + ",errMessage:" + err.message);
2316}
2317```
2318
2319
2320### isTetheringOn<a name="isTetheringOn"></a>
2321
2322isTetheringOn(): boolean
2323
2324获取网络共享状态。
2325
2326**系统接口**:此接口为系统接口。
2327
2328**系统能力**:SystemCapability.Communication.Bluetooth.Core2329
2330**返回值:**
2331
2332| 类型      | 说明                  |
2333| --------------------- | --------------------------------- |
2334| boolean | 网络共享开启返回true,网络共享关闭返回false。 |
2335
2336**示例:**
2337
2338```js
2339try {
2340    let panProfile = bluetoothManager.getProfileInst(bluetoothManager.ProfileId.PROFILE_PAN_NETWORK) as bluetoothManager.PanProfile;
2341    let ret = panProfile.isTetheringOn();
2342} catch (err) {
2343    console.error("errCode:" + err.code + ",errMessage:" + err.message);
2344}
2345```
2346
2347
2348## GattServer
2349
2350server端类,使用server端方法之前需要创建该类的实例进行操作,通过createGattServer()方法构造此实例。
2351
2352
2353### startAdvertising
2354
2355startAdvertising(setting: AdvertiseSetting, advData: AdvertiseData, advResponse?: AdvertiseData): void
2356
2357开始发送BLE广播。
2358
2359**需要权限**:ohos.permission.DISCOVER_BLUETOOTH
2360
2361**系统能力**:SystemCapability.Communication.Bluetooth.Core2362
2363**参数:**
2364
2365| 参数名         | 类型                                    | 必填   | 说明             |
2366| ----------- | ------------------------------------- | ---- | -------------- |
2367| setting     | [AdvertiseSetting](#advertisesetting) | 是    | BLE广播的相关参数。    |
2368| advData     | [AdvertiseData](#advertisedata)       | 是    | BLE广播包内容。      |
2369| advResponse | [AdvertiseData](#advertisedata)       | 否    | BLE回复扫描请求回复响应。 |
2370
2371**错误码**:
2372
2373以下错误码的详细介绍请参见[蓝牙服务子系统错误码](../errorcodes/errorcode-bluetoothManager.md)。
2374
2375| 错误码ID | 错误信息 |
2376| -------- | ---------------------------- |
2377|2900001 | Service stopped.                         |
2378|2900003 | Bluetooth switch is off.                 |
2379|2900099 | Operation failed.                        |
2380
2381**示例:**
2382
2383```js
2384let manufactureValueBuffer = new Uint8Array(4);
2385manufactureValueBuffer[0] = 1;
2386manufactureValueBuffer[1] = 2;
2387manufactureValueBuffer[2] = 3;
2388manufactureValueBuffer[3] = 4;
2389
2390let serviceValueBuffer = new Uint8Array(4);
2391serviceValueBuffer[0] = 4;
2392serviceValueBuffer[1] = 6;
2393serviceValueBuffer[2] = 7;
2394serviceValueBuffer[3] = 8;
2395console.info('manufactureValueBuffer = '+ JSON.stringify(manufactureValueBuffer));
2396console.info('serviceValueBuffer = '+ JSON.stringify(serviceValueBuffer));
2397let gattServer = bluetoothManager.BLE.createGattServer();
2398try {
2399    gattServer.startAdvertising({
2400            interval:150,
2401            txPower:60,
2402            connectable:true,
2403        },{
2404            serviceUuids:["00001888-0000-1000-8000-00805f9b34fb"],
2405            manufactureData:[{
2406                 manufactureId:4567,
2407                 manufactureValue:manufactureValueBuffer.buffer
2408            }],
2409            serviceData:[{
2410                serviceUuid:"00001888-0000-1000-8000-00805f9b34fb",
2411                serviceValue:serviceValueBuffer.buffer
2412            }],
2413        },{
2414            serviceUuids:["00001889-0000-1000-8000-00805f9b34fb"],
2415            manufactureData:[{
2416                manufactureId:1789,
2417                manufactureValue:manufactureValueBuffer.buffer
2418            }],
2419            serviceData:[{
2420                serviceUuid:"00001889-0000-1000-8000-00805f9b34fb",
2421                serviceValue:serviceValueBuffer.buffer
2422            }],
2423    });
2424} catch (err) {
2425    console.error("errCode:" + err.code + ",errMessage:" + err.message);
2426}
2427```
2428
2429
2430### stopAdvertising
2431
2432stopAdvertising(): void
2433
2434停止发送BLE广播。
2435
2436**需要权限**:ohos.permission.DISCOVER_BLUETOOTH
2437
2438**系统能力**:SystemCapability.Communication.Bluetooth.Core2439
2440**错误码**:
2441
2442以下错误码的详细介绍请参见[蓝牙服务子系统错误码](../errorcodes/errorcode-bluetoothManager.md)。
2443
2444| 错误码ID | 错误信息 |
2445| -------- | ---------------------------- |
2446|2900001 | Service stopped.                         |
2447|2900003 | Bluetooth switch is off.                 |
2448|2900099 | Operation failed.                        |
2449
2450**示例:**
2451
2452```js
2453let server = bluetoothManager.BLE.createGattServer();
2454try {
2455    server.stopAdvertising();
2456} catch (err) {
2457    console.error("errCode:" + err.code + ",errMessage:" + err.message);
2458}
2459```
2460
2461
2462### addService
2463
2464addService(service: GattService): void
2465
2466server端添加服务。
2467
2468**需要权限**:ohos.permission.USE_BLUETOOTH
2469
2470**系统能力**:SystemCapability.Communication.Bluetooth.Core2471
2472**参数:**
2473
2474| 参数名     | 类型                          | 必填   | 说明                       |
2475| ------- | --------------------------- | ---- | ------------------------ |
2476| service | [GattService](#gattservice) | 是    | 服务端的service数据。BLE广播的相关参数 |
2477
2478**错误码**:
2479
2480以下错误码的详细介绍请参见[蓝牙服务子系统错误码](../errorcodes/errorcode-bluetoothManager.md)。
2481
2482| 错误码ID | 错误信息 |
2483| -------- | ---------------------------- |
2484|2900001 | Service stopped.                         |
2485|2900003 | Bluetooth switch is off.                 |
2486|2900099 | Operation failed.                        |
2487
2488**示例:**
2489
2490```js
2491// 创建descriptors
2492let descriptors = [];
2493let arrayBuffer = new ArrayBuffer(8);
2494let descV = new Uint8Array(arrayBuffer);
2495descV[0] = 11;
2496let descriptor = {serviceUuid: '00001810-0000-1000-8000-00805F9B34FB',
2497  characteristicUuid: '00001820-0000-1000-8000-00805F9B34FB',
2498  descriptorUuid: '00002902-0000-1000-8000-00805F9B34FB', descriptorValue: arrayBuffer};
2499descriptors[0] = descriptor;
2500
2501// 创建characteristics
2502let characteristics = [];
2503let arrayBufferC = new ArrayBuffer(8);
2504let cccV = new Uint8Array(arrayBufferC);
2505cccV[0] = 1;
2506let characteristic = {serviceUuid: '00001810-0000-1000-8000-00805F9B34FB',
2507  characteristicUuid: '00001820-0000-1000-8000-00805F9B34FB', characteristicValue: arrayBufferC, descriptors:descriptors};
2508let characteristicN = {serviceUuid: '00001810-0000-1000-8000-00805F9B34FB',
2509  characteristicUuid: '00001821-0000-1000-8000-00805F9B34FB', characteristicValue: arrayBufferC, descriptors:descriptors};
2510characteristics[0] = characteristic;
2511
2512// 创建gattService
2513let gattService = {serviceUuid:'00001810-0000-1000-8000-00805F9B34FB', isPrimary: true, characteristics:characteristics, includeServices:[]};
2514
2515let gattServer = bluetoothManager.BLE.createGattServer();
2516try {
2517    gattServer.addService(gattService);
2518} catch (err) {
2519    console.error("errCode:" + err.code + ",errMessage:" + err.message);
2520}
2521```
2522
2523
2524### removeService
2525
2526removeService(serviceUuid: string): void
2527
2528删除已添加的服务。
2529
2530**需要权限**:ohos.permission.USE_BLUETOOTH
2531
2532**系统能力**:SystemCapability.Communication.Bluetooth.Core2533
2534**参数:**
2535
2536| 参数名         | 类型     | 必填   | 说明                                       |
2537| ----------- | ------ | ---- | ---------------------------------------- |
2538| serviceUuid | string | 是    | service的UUID,例如“00001810-0000-1000-8000-00805F9B34FB”。 |
2539
2540**错误码**:
2541
2542以下错误码的详细介绍请参见[蓝牙服务子系统错误码](../errorcodes/errorcode-bluetoothManager.md)。
2543
2544| 错误码ID | 错误信息 |
2545| -------- | ---------------------------- |
2546|2900001 | Service stopped.                         |
2547|2900003 | Bluetooth switch is off.                 |
2548|2900004 | Profile is not supported.                |
2549|2900099 | Operation failed.                        |
2550
2551**示例:**
2552
2553```js
2554let server = bluetoothManager.BLE.createGattServer();
2555try {
2556    server.removeService('00001810-0000-1000-8000-00805F9B34FB');
2557} catch (err) {
2558    console.error("errCode:" + err.code + ",errMessage:" + err.message);
2559}
2560```
2561
2562
2563### close
2564
2565close(): void
2566
2567关闭服务端功能,去注册server在协议栈的注册,调用该接口后[GattServer](#gattserver)实例将不能再使用。
2568
2569**需要权限**:ohos.permission.USE_BLUETOOTH
2570
2571**系统能力**:SystemCapability.Communication.Bluetooth.Core2572
2573**错误码**:
2574
2575以下错误码的详细介绍请参见[蓝牙服务子系统错误码](../errorcodes/errorcode-bluetoothManager.md)。
2576
2577| 错误码ID | 错误信息 |
2578| -------- | ---------------------------- |
2579|2900001 | Service stopped.                         |
2580|2900003 | Bluetooth switch is off.                 |
2581|2900099 | Operation failed.                        |
2582
2583**示例:**
2584
2585```js
2586let server = bluetoothManager.BLE.createGattServer();
2587try {
2588    server.close();
2589} catch (err) {
2590    console.error("errCode:" + err.code + ",errMessage:" + err.message);
2591}
2592```
2593
2594
2595### notifyCharacteristicChanged
2596
2597notifyCharacteristicChanged(deviceId: string, notifyCharacteristic: NotifyCharacteristic): void
2598
2599server端特征值发生变化时,主动通知已连接的client设备。
2600
2601**需要权限**:ohos.permission.USE_BLUETOOTH
2602
2603**系统能力**:SystemCapability.Communication.Bluetooth.Core2604
2605**参数:**
2606
2607| 参数名                  | 类型                                       | 必填   | 说明                                      |
2608| -------------------- | ---------------------------------------- | ---- | --------------------------------------- |
2609| deviceId             | string                                   | 是    | 接收通知的client端设备地址,例如“XX:XX:XX:XX:XX:XX”。 |
2610| notifyCharacteristic | [NotifyCharacteristic](#notifycharacteristic) | 是    | 通知的特征值数据。                               |
2611
2612**错误码**:
2613
2614以下错误码的详细介绍请参见[蓝牙服务子系统错误码](../errorcodes/errorcode-bluetoothManager.md)。
2615
2616| 错误码ID | 错误信息 |
2617| -------- | ---------------------------- |
2618|2900001 | Service stopped.                         |
2619|2900003 | Bluetooth switch is off.                 |
2620|2900099 | Operation failed.                        |
2621
2622**示例:**
2623
2624```js
2625// 创建descriptors
2626let descriptors = [];
2627let arrayBuffer = new ArrayBuffer(8);
2628let descV = new Uint8Array(arrayBuffer);
2629descV[0] = 11;
2630let descriptor = {serviceUuid: '00001810-0000-1000-8000-00805F9B34FB',
2631  characteristicUuid: '00001820-0000-1000-8000-00805F9B34FB',
2632  descriptorUuid: '00002902-0000-1000-8000-00805F9B34FB', descriptorValue: arrayBuffer};
2633descriptors[0] = descriptor;
2634let arrayBufferC = new ArrayBuffer(8);
2635let characteristic = {serviceUuid: '00001810-0000-1000-8000-00805F9B34FB',
2636  characteristicUuid: '00001820-0000-1000-8000-00805F9B34FB', characteristicValue: arrayBufferC, descriptors:descriptors};
2637let notifyCharacteristic = {serviceUuid: '00001810-0000-1000-8000-00805F9B34FB',
2638  characteristicUuid: '00001821-0000-1000-8000-00805F9B34FB', characteristicValue: characteristic.characteristicValue, confirm: false};
2639let server = bluetoothManager.BLE.createGattServer();
2640try {
2641    server.notifyCharacteristicChanged('XX:XX:XX:XX:XX:XX', notifyCharacteristic);
2642} catch (err) {
2643    console.error("errCode:" + err.code + ",errMessage:" + err.message);
2644}
2645```
2646
2647
2648### sendResponse
2649
2650sendResponse(serverResponse: ServerResponse): void
2651
2652server端回复client端的读写请求。
2653
2654**需要权限**:ohos.permission.USE_BLUETOOTH
2655
2656**系统能力**:SystemCapability.Communication.Bluetooth.Core2657
2658**参数:**
2659
2660| 参数名            | 类型                                | 必填   | 说明              |
2661| -------------- | --------------------------------- | ---- | --------------- |
2662| serverResponse | [ServerResponse](#serverresponse) | 是    | server端回复的响应数据。 |
2663
2664**错误码**:
2665
2666以下错误码的详细介绍请参见[蓝牙服务子系统错误码](../errorcodes/errorcode-bluetoothManager.md)。
2667
2668| 错误码ID | 错误信息 |
2669| -------- | ---------------------------- |
2670|2900001 | Service stopped.                         |
2671|2900003 | Bluetooth switch is off.                 |
2672|2900099 | Operation failed.                        |
2673
2674**示例:**
2675
2676```js
2677/* send response */
2678let arrayBufferCCC = new ArrayBuffer(8);
2679let cccValue = new Uint8Array(arrayBufferCCC);
2680cccValue[0] = 1123;
2681let serverResponse = {
2682    "deviceId": "XX:XX:XX:XX:XX:XX",
2683    "transId": 0,
2684    "status": 0,
2685    "offset": 0,
2686    "value": arrayBufferCCC,
2687};
2688
2689let gattServer = bluetoothManager.BLE.createGattServer();
2690try {
2691    gattServer.sendResponse(serverResponse);
2692} catch (err) {
2693    console.error("errCode:" + err.code + ",errMessage:" + err.message);
2694}
2695```
2696
2697
2698### on('characteristicRead')
2699
2700on(type: "characteristicRead", callback: Callback&lt;CharacteristicReadRequest&gt;): void
2701
2702server端订阅特征值读请求事件。
2703
2704**需要权限**:ohos.permission.USE_BLUETOOTH
2705
2706**系统能力**:SystemCapability.Communication.Bluetooth.Core2707
2708**参数:**
2709
2710| 参数名      | 类型                                       | 必填   | 说明                                    |
2711| -------- | ---------------------------------------- | ---- | ------------------------------------- |
2712| type     | string                                   | 是    | 填写"characteristicRead"字符串,表示特征值读请求事件。 |
2713| callback | Callback&lt;[CharacteristicReadRequest](#characteristicreadrequest)&gt; | 是    | 表示回调函数的入参,client端发送的读请求数据。            |
2714
2715**示例:**
2716
2717```js
2718let arrayBufferCCC = new ArrayBuffer(8);
2719let cccValue = new Uint8Array(arrayBufferCCC);
2720cccValue[0] = 1123;
2721function ReadCharacteristicReq(CharacteristicReadRequest) {
2722    let deviceId = CharacteristicReadRequest.deviceId;
2723    let transId = CharacteristicReadRequest.transId;
2724    let offset = CharacteristicReadRequest.offset;
2725    let characteristicUuid = CharacteristicReadRequest.characteristicUuid;
2726
2727    let serverResponse = {deviceId: deviceId, transId: transId, status: 0, offset: offset, value:arrayBufferCCC};
2728
2729    try {
2730        gattServer.sendResponse(serverResponse);
2731    } catch (err) {
2732        console.error("errCode:" + err.code + ",errMessage:" + err.message);
2733    }
2734}
2735
2736let gattServer = bluetoothManager.BLE.createGattServer();
2737gattServer.on("characteristicRead", ReadCharacteristicReq);
2738```
2739
2740
2741### off('characteristicRead')
2742
2743off(type: "characteristicRead", callback?: Callback&lt;CharacteristicReadRequest&gt;): void
2744
2745server端取消订阅特征值读请求事件。
2746
2747**需要权限**:ohos.permission.USE_BLUETOOTH
2748
2749**系统能力**:SystemCapability.Communication.Bluetooth.Core2750
2751**参数:**
2752
2753| 参数名      | 类型                                       | 必填   | 说明                                       |
2754| -------- | ---------------------------------------- | ---- | ---------------------------------------- |
2755| type     | string                                   | 是    | 填写"characteristicRead"字符串,表示特征值读请求事件。    |
2756| callback | Callback&lt;[CharacteristicReadRequest](#characteristicreadrequest)&gt; | 否    | 表示取消订阅特征值读请求事件上报。不填该参数则取消订阅该type对应的所有回调。 |
2757
2758**示例:**
2759
2760```js
2761let gattServer = bluetoothManager.BLE.createGattServer();
2762gattServer.off("characteristicRead");
2763```
2764
2765
2766### on('characteristicWrite')
2767
2768on(type: "characteristicWrite", callback: Callback&lt;CharacteristicWriteRequest&gt;): void
2769
2770server端订阅特征值写请求事件。
2771
2772**需要权限**:ohos.permission.USE_BLUETOOTH
2773
2774**系统能力**:SystemCapability.Communication.Bluetooth.Core2775
2776**参数:**
2777
2778| 参数名      | 类型                                       | 必填   | 说明                                     |
2779| -------- | ---------------------------------------- | ---- | -------------------------------------- |
2780| type     | string                                   | 是    | 填写"characteristicWrite"字符串,表示特征值写请求事件。 |
2781| callback | Callback&lt;[CharacteristicWriteRequest](#characteristicwriterequest)&gt; | 是    | 表示回调函数的入参,client端发送的写请求数据。             |
2782
2783**示例:**
2784
2785```js
2786let arrayBufferCCC = new ArrayBuffer(8);
2787let cccValue = new Uint8Array(arrayBufferCCC);
2788function WriteCharacteristicReq(CharacteristicWriteRequest) {
2789    let deviceId = CharacteristicWriteRequest.deviceId;
2790    let transId = CharacteristicWriteRequest.transId;
2791    let offset = CharacteristicWriteRequest.offset;
2792    let isPrep = CharacteristicWriteRequest.isPrep;
2793    let needRsp = CharacteristicWriteRequest.needRsp;
2794    let value =  new Uint8Array(CharacteristicWriteRequest.value);
2795    let characteristicUuid = CharacteristicWriteRequest.characteristicUuid;
2796
2797    cccValue[0] = value[0];
2798    let serverResponse = {deviceId: deviceId, transId: transId, status: 0, offset: offset, value:arrayBufferCCC};
2799
2800    try {
2801        gattServer.sendResponse(serverResponse);
2802    } catch (err) {
2803        console.error("errCode:" + err.code + ",errMessage:" + err.message);
2804    }
2805}
2806
2807let gattServer = bluetoothManager.BLE.createGattServer();
2808gattServer.on("characteristicWrite", WriteCharacteristicReq);
2809```
2810
2811
2812### off('characteristicWrite')
2813
2814off(type: "characteristicWrite", callback?: Callback&lt;CharacteristicWriteRequest&gt;): void
2815
2816server端取消订阅特征值写请求事件。
2817
2818**需要权限**:ohos.permission.USE_BLUETOOTH
2819
2820**系统能力**:SystemCapability.Communication.Bluetooth.Core2821
2822**参数:**
2823
2824| 参数名      | 类型                                       | 必填   | 说明                                       |
2825| -------- | ---------------------------------------- | ---- | ---------------------------------------- |
2826| type     | string                                   | 是    | 填写"characteristicWrite"字符串,表示特征值写请求事件。   |
2827| callback | Callback&lt;[CharacteristicWriteRequest](#characteristicwriterequest)&gt; | 否    | 表示取消订阅特征值写请求事件上报。不填该参数则取消订阅该type对应的所有回调。 |
2828
2829**示例:**
2830
2831```js
2832let gattServer = bluetoothManager.BLE.createGattServer();
2833gattServer.off("characteristicWrite");
2834```
2835
2836
2837### on('descriptorRead')
2838
2839on(type: "descriptorRead", callback: Callback&lt;DescriptorReadRequest&gt;): void
2840
2841server端订阅描述符读请求事件。
2842
2843**需要权限**:ohos.permission.USE_BLUETOOTH
2844
2845**系统能力**:SystemCapability.Communication.Bluetooth.Core2846
2847**参数:**
2848
2849| 参数名      | 类型                                       | 必填   | 说明                                |
2850| -------- | ---------------------------------------- | ---- | --------------------------------- |
2851| type     | string                                   | 是    | 填写"descriptorRead"字符串,表示描述符读请求事件。 |
2852| callback | Callback&lt;[DescriptorReadRequest](#descriptorreadrequest)&gt; | 是    | 表示回调函数的入参,client端发送的读请求数据。        |
2853
2854**示例:**
2855
2856```js
2857let arrayBufferDesc = new ArrayBuffer(8);
2858let descValue = new Uint8Array(arrayBufferDesc);
2859descValue[0] = 1101;
2860function ReadDescriptorReq(DescriptorReadRequest) {
2861    let deviceId = DescriptorReadRequest.deviceId;
2862    let transId = DescriptorReadRequest.transId;
2863    let offset = DescriptorReadRequest.offset;
2864    let descriptorUuid = DescriptorReadRequest.descriptorUuid;
2865
2866    let serverResponse = {deviceId: deviceId, transId: transId, status: 0, offset: offset, value:arrayBufferDesc};
2867
2868    try {
2869        gattServer.sendResponse(serverResponse);
2870    } catch (err) {
2871        console.error("errCode:" + err.code + ",errMessage:" + err.message);
2872    }
2873}
2874
2875let gattServer = bluetoothManager.BLE.createGattServer();
2876gattServer.on("descriptorRead", ReadDescriptorReq);
2877```
2878
2879
2880### off('descriptorRead')
2881
2882off(type: "descriptorRead", callback?: Callback&lt;DescriptorReadRequest&gt;): void
2883
2884server端取消订阅描述符读请求事件。
2885
2886**需要权限**:ohos.permission.USE_BLUETOOTH
2887
2888**系统能力**:SystemCapability.Communication.Bluetooth.Core2889
2890**参数:**
2891
2892| 参数名      | 类型                                       | 必填   | 说明                                       |
2893| -------- | ---------------------------------------- | ---- | ---------------------------------------- |
2894| type     | string                                   | 是    | 填写"descriptorRead"字符串,表示描述符读请求事件。        |
2895| callback | Callback&lt;[DescriptorReadRequest](#descriptorreadrequest)&gt; | 否    | 表示取消订阅描述符读请求事件上报。不填该参数则取消订阅该type对应的所有回调。 |
2896
2897**示例:**
2898
2899```js
2900let gattServer = bluetoothManager.BLE.createGattServer();
2901gattServer.off("descriptorRead");
2902```
2903
2904
2905### on('descriptorWrite')
2906
2907on(type: "descriptorWrite", callback: Callback&lt;DescriptorWriteRequest&gt;): void
2908
2909server端订阅描述符写请求事件。
2910
2911**需要权限**:ohos.permission.USE_BLUETOOTH
2912
2913**系统能力**:SystemCapability.Communication.Bluetooth.Core2914
2915**参数:**
2916
2917| 参数名      | 类型                                       | 必填   | 说明                                 |
2918| -------- | ---------------------------------------- | ---- | ---------------------------------- |
2919| type     | string                                   | 是    | 填写"descriptorWrite"字符串,表示描述符写请求事件。 |
2920| callback | Callback&lt;[DescriptorWriteRequest](#descriptorwriterequest)&gt; | 是    | 表示回调函数的入参,client端发送的写请求数据。         |
2921
2922**示例:**
2923
2924```js
2925let arrayBufferDesc = new ArrayBuffer(8);
2926let descValue = new Uint8Array(arrayBufferDesc);
2927function WriteDescriptorReq(DescriptorWriteRequest) {
2928    let deviceId = DescriptorWriteRequest.deviceId;
2929    let transId = DescriptorWriteRequest.transId;
2930    let offset = DescriptorWriteRequest.offset;
2931    let isPrep = DescriptorWriteRequest.isPrep;
2932    let needRsp = DescriptorWriteRequest.needRsp;
2933    let value = new Uint8Array(DescriptorWriteRequest.value);
2934    let descriptorUuid = DescriptorWriteRequest.descriptorUuid;
2935
2936    descValue[0] = value[0];
2937    let serverResponse = {deviceId: deviceId, transId: transId, status: 0, offset: offset, value:arrayBufferDesc};
2938
2939    try {
2940        gattServer.sendResponse(serverResponse);
2941    } catch (err) {
2942        console.error("errCode:" + err.code + ",errMessage:" + err.message);
2943    }
2944}
2945
2946let gattServer = bluetoothManager.BLE.createGattServer();
2947gattServer.on("descriptorRead", WriteDescriptorReq);
2948```
2949
2950
2951### off('descriptorWrite')
2952
2953off(type: "descriptorWrite", callback?: Callback&lt;DescriptorWriteRequest&gt;): void
2954
2955server端取消订阅描述符写请求事件。
2956
2957**需要权限**:ohos.permission.USE_BLUETOOTH
2958
2959**系统能力**:SystemCapability.Communication.Bluetooth.Core2960
2961**参数:**
2962
2963| 参数名      | 类型                                       | 必填   | 说明                                       |
2964| -------- | ---------------------------------------- | ---- | ---------------------------------------- |
2965| type     | string                                   | 是    | 填写"descriptorWrite"字符串,表示描述符写请求事件。       |
2966| callback | Callback&lt;[DescriptorWriteRequest](#descriptorwriterequest)&gt; | 否    | 表示取消订阅描述符写请求事件上报。不填该参数则取消订阅该type对应的所有回调。 |
2967
2968**示例:**
2969
2970```js
2971let gattServer = bluetoothManager.BLE.createGattServer();
2972gattServer.off("descriptorWrite");
2973```
2974
2975
2976### on('connectStateChange')
2977
2978on(type: "connectStateChange", callback: Callback&lt;BLEConnectChangedState&gt;): void
2979
2980server端订阅BLE连接状态变化事件。
2981
2982**需要权限**:ohos.permission.USE_BLUETOOTH
2983
2984**系统能力**:SystemCapability.Communication.Bluetooth.Core2985
2986**参数:**
2987
2988| 参数名      | 类型                                       | 必填   | 说明                                       |
2989| -------- | ---------------------------------------- | ---- | ---------------------------------------- |
2990| type     | string                                   | 是    | 填写"connectStateChange"字符串,表示BLE连接状态变化事件。 |
2991| callback | Callback&lt;[BLEConnectChangedState](#bleconnectchangedstate)&gt; | 是    | 表示回调函数的入参,连接状态。                          |
2992
2993**示例:**
2994
2995```js
2996function Connected(BLEConnectChangedState) {
2997  let deviceId = BLEConnectChangedState.deviceId;
2998  let status = BLEConnectChangedState.state;
2999}
3000
3001let gattServer = bluetoothManager.BLE.createGattServer();
3002gattServer.on("connectStateChange", Connected);
3003```
3004
3005
3006### off('connectStateChange')
3007
3008off(type: "connectStateChange", callback?: Callback&lt;BLEConnectChangedState&gt;): void
3009
3010server端取消订阅BLE连接状态变化事件。
3011
3012**需要权限**:ohos.permission.USE_BLUETOOTH
3013
3014**系统能力**:SystemCapability.Communication.Bluetooth.Core3015
3016**参数:**
3017
3018| 参数名      | 类型                                       | 必填   | 说明                                       |
3019| -------- | ---------------------------------------- | ---- | ---------------------------------------- |
3020| type     | string                                   | 是    | 填写"connectStateChange"字符串,表示BLE连接状态变化事件。 |
3021| callback | Callback&lt;[BLEConnectChangedState](#bleconnectchangedstate)&gt; | 否    | 表示取消订阅BLE连接状态变化事件。不填该参数则取消订阅该type对应的所有回调。 |
3022
3023**示例:**
3024
3025```js
3026let gattServer = bluetoothManager.BLE.createGattServer();
3027gattServer.off("connectStateChange");
3028```
3029
3030
3031## GattClientDevice
3032
3033client端类,使用client端方法之前需要创建该类的实例进行操作,通过createGattClientDevice(deviceId: string)方法构造此实例。
3034
3035
3036### connect
3037
3038connect(): void
3039
3040client端发起连接远端蓝牙低功耗设备。
3041
3042**需要权限**:ohos.permission.USE_BLUETOOTH
3043
3044**系统能力**:SystemCapability.Communication.Bluetooth.Core3045
3046**错误码**:
3047
3048以下错误码的详细介绍请参见[蓝牙服务子系统错误码](../errorcodes/errorcode-bluetoothManager.md)。
3049
3050| 错误码ID | 错误信息 |
3051| -------- | ---------------------------- |
3052|2900001 | Service stopped.                         |
3053|2900003 | Bluetooth switch is off.                 |
3054|2900099 | Operation failed.                        |
3055
3056**示例:**
3057
3058```js
3059try {
3060    let device = bluetoothManager.BLE.createGattClientDevice('XX:XX:XX:XX:XX:XX');
3061    device.connect();
3062} catch (err) {
3063    console.error("errCode:" + err.code + ",errMessage:" + err.message);
3064}
3065```
3066
3067
3068### disconnect
3069
3070disconnect(): void
3071
3072client端断开与远端蓝牙低功耗设备的连接。
3073
3074**需要权限**:ohos.permission.USE_BLUETOOTH
3075
3076**系统能力**:SystemCapability.Communication.Bluetooth.Core3077
3078**错误码**:
3079
3080以下错误码的详细介绍请参见[蓝牙服务子系统错误码](../errorcodes/errorcode-bluetoothManager.md)。
3081
3082| 错误码ID | 错误信息 |
3083| -------- | ---------------------------- |
3084|2900001 | Service stopped.                         |
3085|2900003 | Bluetooth switch is off.                 |
3086|2900099 | Operation failed.                        |
3087
3088**示例:**
3089
3090```js
3091try {
3092    let device = bluetoothManager.BLE.createGattClientDevice('XX:XX:XX:XX:XX:XX');
3093    device.disconnect();
3094} catch (err) {
3095    console.error("errCode:" + err.code + ",errMessage:" + err.message);
3096}
3097```
3098
3099
3100### close
3101
3102close(): void
3103
3104关闭客户端功能,注销client在协议栈的注册,调用该接口后[GattClientDevice](#gattclientdevice)实例将不能再使用。
3105
3106**需要权限**:ohos.permission.USE_BLUETOOTH
3107
3108**系统能力**:SystemCapability.Communication.Bluetooth.Core3109
3110**错误码**:
3111
3112以下错误码的详细介绍请参见[蓝牙服务子系统错误码](../errorcodes/errorcode-bluetoothManager.md)。
3113
3114| 错误码ID | 错误信息 |
3115| -------- | ---------------------------- |
3116|2900001 | Service stopped.                         |
3117|2900003 | Bluetooth switch is off.                 |
3118|2900099 | Operation failed.                        |
3119
3120**示例:**
3121
3122```js
3123try {
3124    let device = bluetoothManager.BLE.createGattClientDevice('XX:XX:XX:XX:XX:XX');
3125    device.close();
3126} catch (err) {
3127    console.error("errCode:" + err.code + ",errMessage:" + err.message);
3128}
3129```
3130
3131
3132
3133
3134### getServices
3135
3136getServices(callback: AsyncCallback&lt;Array&lt;GattService&gt;&gt;): void
3137
3138client端获取蓝牙低功耗设备的所有服务,即服务发现 。
3139
3140**需要权限**:ohos.permission.USE_BLUETOOTH
3141
3142**系统能力**:SystemCapability.Communication.Bluetooth.Core3143
3144**参数:**
3145
3146| 参数名      | 类型                                       | 必填   | 说明                       |
3147| -------- | ---------------------------------------- | ---- | ------------------------ |
3148| callback | AsyncCallback&lt;Array&lt;[GattService](#gattservice)&gt;&gt; | 是    | client进行服务发现,通过注册回调函数获取。 |
3149
3150**错误码**:
3151
3152以下错误码的详细介绍请参见[蓝牙服务子系统错误码](../errorcodes/errorcode-bluetoothManager.md)。
3153
3154| 错误码ID | 错误信息 |
3155| -------- | ---------------------------- |
3156|2900001 | Service stopped.                         |
3157|2900099 | Operation failed.                        |
3158
3159**示例:**
3160
3161```js
3162// callkback 模式
3163function getServices(code, gattServices) {
3164  if (code.code == 0) {
3165      let services = gattServices;
3166      console.log('bluetooth code is ' + code.code);
3167      console.log("bluetooth services size is ", services.length);
3168
3169      for (let i = 0; i < services.length; i++) {
3170        console.log('bluetooth serviceUuid is ' + services[i].serviceUuid);
3171      }
3172  }
3173}
3174
3175try {
3176    let device = bluetoothManager.BLE.createGattClientDevice('XX:XX:XX:XX:XX:XX');
3177    device.connect();
3178    device.getServices(getServices);
3179} catch (err) {
3180    console.error("errCode:" + err.code + ",errMessage:" + err.message);
3181}
3182```
3183
3184
3185### getServices
3186
3187getServices(): Promise&lt;Array&lt;GattService&gt;&gt;
3188
3189client端获取蓝牙低功耗设备的所有服务,即服务发现。
3190
3191**需要权限**:ohos.permission.USE_BLUETOOTH
3192
3193**系统能力**:SystemCapability.Communication.Bluetooth.Core3194
3195**返回值:**
3196
3197| 类型                                       | 说明                          |
3198| ---------------------------------------- | --------------------------- |
3199| Promise&lt;Array&lt;[GattService](#gattservice)&gt;&gt; | client进行服务发现,通过promise形式获取。 |
3200
3201**错误码**:
3202
3203以下错误码的详细介绍请参见[蓝牙服务子系统错误码](../errorcodes/errorcode-bluetoothManager.md)。
3204
3205| 错误码ID | 错误信息 |
3206| -------- | ---------------------------- |
3207|2900001 | Service stopped.                         |
3208|2900099 | Operation failed.                        |
3209
3210**示例:**
3211
3212```js
3213// Promise 模式
3214try {
3215    let device = bluetoothManager.BLE.createGattClientDevice('XX:XX:XX:XX:XX:XX');
3216    device.connect();
3217    device.getServices().then(result => {
3218        console.info("getServices successfully:" + JSON.stringify(result));
3219    });
3220} catch (err) {
3221    console.error("errCode:" + err.code + ",errMessage:" + err.message);
3222}
3223```
3224
3225
3226### readCharacteristicValue
3227
3228readCharacteristicValue(characteristic: BLECharacteristic, callback: AsyncCallback&lt;BLECharacteristic&gt;): void
3229
3230client端读取蓝牙低功耗设备特定服务的特征值。
3231
3232**需要权限**:ohos.permission.USE_BLUETOOTH
3233
3234**系统能力**:SystemCapability.Communication.Bluetooth.Core3235
3236**参数:**
3237
3238| 参数名            | 类型                                       | 必填   | 说明                      |
3239| -------------- | ---------------------------------------- | ---- | ----------------------- |
3240| characteristic | [BLECharacteristic](#blecharacteristic)  | 是    | 待读取的特征值。                |
3241| callback       | AsyncCallback&lt;[BLECharacteristic](#blecharacteristic)&gt; | 是    | client读取特征值,通过注册回调函数获取。 |
3242
3243**错误码**:
3244
3245以下错误码的详细介绍请参见[蓝牙服务子系统错误码](../errorcodes/errorcode-bluetoothManager.md)。
3246
3247| 错误码ID | 错误信息 |
3248| -------- | ---------------------------- |
3249|2900001 | Service stopped.                         |
3250|2901000 | Read forbidden.                         |
3251|2900099 | Operation failed.                        |
3252
3253**示例:**
3254
3255```js
3256function readCcc(code, BLECharacteristic) {
3257  if (code.code != 0) {
3258      return;
3259  }
3260  console.log('bluetooth characteristic uuid: ' + BLECharacteristic.characteristicUuid);
3261  let value = new Uint8Array(BLECharacteristic.characteristicValue);
3262  console.log('bluetooth characteristic value: ' + value[0] +','+ value[1]+','+ value[2]+','+ value[3]);
3263}
3264
3265let descriptors = [];
3266let bufferDesc = new ArrayBuffer(8);
3267let descV = new Uint8Array(bufferDesc);
3268descV[0] = 11;
3269let descriptor = {serviceUuid: '00001810-0000-1000-8000-00805F9B34FB',
3270characteristicUuid: '00001820-0000-1000-8000-00805F9B34FB',
3271descriptorUuid: '00002903-0000-1000-8000-00805F9B34FB', descriptorValue: bufferDesc};
3272descriptors[0] = descriptor;
3273
3274let bufferCCC = new ArrayBuffer(8);
3275let cccV = new Uint8Array(bufferCCC);
3276cccV[0] = 1;
3277let characteristic = {serviceUuid: '00001810-0000-1000-8000-00805F9B34FB',
3278characteristicUuid: '00001820-0000-1000-8000-00805F9B34FB',
3279characteristicValue: bufferCCC, descriptors:descriptors};
3280
3281try {
3282    let device = bluetoothManager.BLE.createGattClientDevice('XX:XX:XX:XX:XX:XX');
3283    device.readCharacteristicValue(characteristic, readCcc);
3284} catch (err) {
3285    console.error("errCode:" + err.code + ",errMessage:" + err.message);
3286}
3287```
3288
3289
3290### readCharacteristicValue
3291
3292readCharacteristicValue(characteristic: BLECharacteristic): Promise&lt;BLECharacteristic&gt;
3293
3294client端读取蓝牙低功耗设备特定服务的特征值。
3295
3296**需要权限**:ohos.permission.USE_BLUETOOTH
3297
3298**系统能力**:SystemCapability.Communication.Bluetooth.Core3299
3300**参数:**
3301
3302| 参数名            | 类型                                      | 必填   | 说明       |
3303| -------------- | --------------------------------------- | ---- | -------- |
3304| characteristic | [BLECharacteristic](#blecharacteristic) | 是    | 待读取的特征值。 |
3305
3306**返回值:**
3307
3308| 类型                                       | 说明                         |
3309| ---------------------------------------- | -------------------------- |
3310| Promise&lt;[BLECharacteristic](#blecharacteristic)&gt; | client读取特征值,通过promise形式获取。 |
3311
3312**错误码**:
3313
3314以下错误码的详细介绍请参见[蓝牙服务子系统错误码](../errorcodes/errorcode-bluetoothManager.md)。
3315
3316| 错误码ID | 错误信息 |
3317| -------- | ---------------------------- |
3318|2900001 | Service stopped.                         |
3319|2901000 | Read forbidden.                         |
3320|2900099 | Operation failed.                        |
3321
3322**示例:**
3323
3324```js
3325let descriptors = [];
3326let bufferDesc = new ArrayBuffer(8);
3327let descV = new Uint8Array(bufferDesc);
3328descV[0] = 11;
3329let descriptor = {serviceUuid: '00001810-0000-1000-8000-00805F9B34FB',
3330characteristicUuid: '00001820-0000-1000-8000-00805F9B34FB',
3331descriptorUuid: '00002903-0000-1000-8000-00805F9B34FB', descriptorValue: bufferDesc};
3332descriptors[0] = descriptor;
3333
3334let bufferCCC = new ArrayBuffer(8);
3335let cccV = new Uint8Array(bufferCCC);
3336cccV[0] = 1;
3337let characteristic = {serviceUuid: '00001810-0000-1000-8000-00805F9B34FB',
3338characteristicUuid: '00001820-0000-1000-8000-00805F9B34FB',
3339characteristicValue: bufferCCC, descriptors:descriptors};
3340
3341try {
3342    let device = bluetoothManager.BLE.createGattClientDevice('XX:XX:XX:XX:XX:XX');
3343    device.readCharacteristicValue(characteristic);
3344} catch (err) {
3345    console.error("errCode:" + err.code + ",errMessage:" + err.message);
3346}
3347```
3348
3349
3350### readDescriptorValue
3351
3352readDescriptorValue(descriptor: BLEDescriptor, callback: AsyncCallback&lt;BLEDescriptor&gt;): void
3353
3354client端读取蓝牙低功耗设备特定的特征包含的描述符。
3355
3356**需要权限**:ohos.permission.USE_BLUETOOTH
3357
3358**系统能力**:SystemCapability.Communication.Bluetooth.Core3359
3360**参数:**
3361
3362| 参数名        | 类型                                       | 必填   | 说明                      |
3363| ---------- | ---------------------------------------- | ---- | ----------------------- |
3364| descriptor | [BLEDescriptor](#bledescriptor)          | 是    | 待读取的描述符。                |
3365| callback   | AsyncCallback&lt;[BLEDescriptor](#bledescriptor)&gt; | 是    | client读取描述符,通过注册回调函数获取。 |
3366
3367**错误码**:
3368
3369以下错误码的详细介绍请参见[蓝牙服务子系统错误码](../errorcodes/errorcode-bluetoothManager.md)。
3370
3371| 错误码ID | 错误信息 |
3372| -------- | ---------------------------- |
3373|2900001 | Service stopped.                         |
3374|2901000 | Read forbidden.                         |
3375|2900099 | Operation failed.                        |
3376
3377**示例:**
3378
3379```js
3380function readDesc(code, BLEDescriptor) {
3381    if (code.code != 0) {
3382        return;
3383    }
3384    console.log('bluetooth descriptor uuid: ' + BLEDescriptor.descriptorUuid);
3385    let value = new Uint8Array(BLEDescriptor.descriptorValue);
3386    console.log('bluetooth descriptor value: ' + value[0] +','+ value[1]+','+ value[2]+','+ value[3]);
3387}
3388
3389let bufferDesc = new ArrayBuffer(8);
3390let descV = new Uint8Array(bufferDesc);
3391descV[0] = 11;
3392let descriptor = {
3393    serviceUuid: '00001810-0000-1000-8000-00805F9B34FB',
3394    characteristicUuid: '00001820-0000-1000-8000-00805F9B34FB',
3395    descriptorUuid: '00002903-0000-1000-8000-00805F9B34FB',
3396    descriptorValue: bufferDesc
3397};
3398try {
3399    let device = bluetoothManager.BLE.createGattClientDevice('XX:XX:XX:XX:XX:XX');
3400    device.readDescriptorValue(descriptor, readDesc);
3401} catch (err) {
3402    console.error("errCode:" + err.code + ",errMessage:" + err.message);
3403}
3404```
3405
3406
3407### readDescriptorValue
3408
3409readDescriptorValue(descriptor: BLEDescriptor): Promise&lt;BLEDescriptor&gt;
3410
3411client端读取蓝牙低功耗设备特定的特征包含的描述符。
3412
3413**需要权限**:ohos.permission.USE_BLUETOOTH
3414
3415**系统能力**:SystemCapability.Communication.Bluetooth.Core3416
3417**参数:**
3418
3419| 参数名        | 类型                              | 必填   | 说明       |
3420| ---------- | ------------------------------- | ---- | -------- |
3421| descriptor | [BLEDescriptor](#bledescriptor) | 是    | 待读取的描述符。 |
3422
3423**返回值:**
3424
3425| 类型                                       | 说明                         |
3426| ---------------------------------------- | -------------------------- |
3427| Promise&lt;[BLEDescriptor](#bledescriptor)&gt; | client读取描述符,通过promise形式获取。 |
3428
3429**错误码**:
3430
3431以下错误码的详细介绍请参见[蓝牙服务子系统错误码](../errorcodes/errorcode-bluetoothManager.md)。
3432
3433| 错误码ID | 错误信息 |
3434| -------- | ---------------------------- |
3435|2900001 | Service stopped.                         |
3436|2901000 | Read forbidden.                         |
3437|2900099 | Operation failed.                        |
3438
3439**示例:**
3440
3441```js
3442let bufferDesc = new ArrayBuffer(8);
3443let descV = new Uint8Array(bufferDesc);
3444descV[0] = 11;
3445let descriptor = {
3446    serviceUuid: '00001810-0000-1000-8000-00805F9B34FB',
3447    characteristicUuid: '00001820-0000-1000-8000-00805F9B34FB',
3448    descriptorUuid: '00002903-0000-1000-8000-00805F9B34FB',
3449    descriptorValue: bufferDesc
3450};
3451try {
3452    let device = bluetoothManager.BLE.createGattClientDevice('XX:XX:XX:XX:XX:XX');
3453    device.readDescriptorValue(descriptor);
3454} catch (err) {
3455    console.error("errCode:" + err.code + ",errMessage:" + err.message);
3456}
3457```
3458
3459
3460### writeCharacteristicValue
3461
3462writeCharacteristicValue(characteristic: BLECharacteristic): void
3463
3464client端向低功耗蓝牙设备写入特定的特征值。
3465
3466**需要权限**:ohos.permission.USE_BLUETOOTH
3467
3468**系统能力**:SystemCapability.Communication.Bluetooth.Core3469
3470**参数:**
3471
3472| 参数名            | 类型                                      | 必填   | 说明                  |
3473| -------------- | --------------------------------------- | ---- | ------------------- |
3474| characteristic | [BLECharacteristic](#blecharacteristic) | 是    | 蓝牙设备特征对应的二进制值及其它参数。 |
3475
3476**错误码**:
3477
3478以下错误码的详细介绍请参见[蓝牙服务子系统错误码](../errorcodes/errorcode-bluetoothManager.md)。
3479
3480| 错误码ID | 错误信息 |
3481| -------- | ---------------------------- |
3482|2900001 | Service stopped.                         |
3483|2901001 | Write forbidden.                        |
3484|2900099 | Operation failed.                        |
3485
3486**示例:**
3487
3488```js
3489let descriptors = [];
3490let bufferDesc = new ArrayBuffer(8);
3491let descV = new Uint8Array(bufferDesc);
3492descV[0] = 11;
3493let descriptor = {serviceUuid: '00001810-0000-1000-8000-00805F9B34FB',
3494  characteristicUuid: '00001820-0000-1000-8000-00805F9B34FB',
3495  descriptorUuid: '00002903-0000-1000-8000-00805F9B34FB', descriptorValue: bufferDesc};
3496descriptors[0] = descriptor;
3497
3498let bufferCCC = new ArrayBuffer(8);
3499let cccV = new Uint8Array(bufferCCC);
3500cccV[0] = 1;
3501let characteristic = {serviceUuid: '00001810-0000-1000-8000-00805F9B34FB',
3502  characteristicUuid: '00001820-0000-1000-8000-00805F9B34FB',
3503  characteristicValue: bufferCCC, descriptors:descriptors};
3504try {
3505    let device = bluetoothManager.BLE.createGattClientDevice('XX:XX:XX:XX:XX:XX');
3506    device.writeCharacteristicValue(characteristic);
3507} catch (err) {
3508    console.error("errCode:" + err.code + ",errMessage:" + err.message);
3509}
3510```
3511
3512
3513### writeDescriptorValue
3514
3515writeDescriptorValue(descriptor: BLEDescriptor): void
3516
3517client端向低功耗蓝牙设备特定的描述符写入二进制数据。
3518
3519**需要权限**:ohos.permission.USE_BLUETOOTH
3520
3521**系统能力**:SystemCapability.Communication.Bluetooth.Core3522
3523**参数:**
3524
3525| 参数名        | 类型                              | 必填   | 说明                 |
3526| ---------- | ------------------------------- | ---- | ------------------ |
3527| descriptor | [BLEDescriptor](#bledescriptor) | 是    | 蓝牙设备描述符的二进制值及其它参数。 |
3528| boolean | 写描述符操作成功返回true,操作失败返回false。 |
3529
3530**错误码**:
3531
3532以下错误码的详细介绍请参见[蓝牙服务子系统错误码](../errorcodes/errorcode-bluetoothManager.md)。
3533
3534| 错误码ID | 错误信息 |
3535| -------- | ---------------------------- |
3536|2900001 | Service stopped.                         |
3537|2901001 | Write forbidden.                        |
3538|2900099 | Operation failed.                        |
3539
3540**示例:**
3541
3542```js
3543let bufferDesc = new ArrayBuffer(8);
3544let descV = new Uint8Array(bufferDesc);
3545descV[0] = 22;
3546let descriptor = {
3547    serviceUuid: '00001810-0000-1000-8000-00805F9B34FB',
3548    characteristicUuid: '00001820-0000-1000-8000-00805F9B34FB',
3549    descriptorUuid: '00002903-0000-1000-8000-00805F9B34FB',
3550    descriptorValue: bufferDesc
3551};
3552try {
3553    let device = bluetoothManager.BLE.createGattClientDevice('XX:XX:XX:XX:XX:XX');
3554    device.writeDescriptorValue(descriptor);
3555} catch (err) {
3556    console.error("errCode:" + err.code + ",errMessage:" + err.message);
3557}
3558```
3559
3560
3561### setBLEMtuSize
3562
3563setBLEMtuSize(mtu: number): void
3564
3565client协商远端蓝牙低功耗设备的最大传输单元(Maximum Transmission Unit, MTU),调用[connect](#connect)接口连接成功后才能使用。
3566
3567**需要权限**:ohos.permission.USE_BLUETOOTH
3568
3569**系统能力**:SystemCapability.Communication.Bluetooth.Core3570
3571**参数:**
3572
3573| 参数名  | 类型     | 必填   | 说明             |
3574| ---- | ------ | ---- | -------------- |
3575| mtu  | number | 是    | 设置范围为22~512字节。 |
3576
3577**错误码**:
3578
3579以下错误码的详细介绍请参见[蓝牙服务子系统错误码](../errorcodes/errorcode-bluetoothManager.md)。
3580
3581| 错误码ID | 错误信息 |
3582| -------- | ---------------------------- |
3583|2900001 | Service stopped.                         |
3584|2900099 | Operation failed.                        |
3585
3586**示例:**
3587
3588```js
3589try {
3590    let device = bluetoothManager.BLE.createGattClientDevice('XX:XX:XX:XX:XX:XX');
3591    device.setBLEMtuSize(128);
3592} catch (err) {
3593    console.error("errCode:" + err.code + ",errMessage:" + err.message);
3594}
3595```
3596
3597
3598### setNotifyCharacteristicChanged
3599
3600setNotifyCharacteristicChanged(characteristic: BLECharacteristic, enable: boolean): void
3601
3602向服务端发送设置通知此特征值请求。
3603
3604**需要权限**:ohos.permission.USE_BLUETOOTH
3605
3606**系统能力**:SystemCapability.Communication.Bluetooth.Core3607
3608**参数:**
3609
3610| 参数名            | 类型                                      | 必填   | 说明                            |
3611| -------------- | --------------------------------------- | ---- | ----------------------------- |
3612| characteristic | [BLECharacteristic](#blecharacteristic) | 是    | 蓝牙低功耗特征。                      |
3613| enable         | boolean                                 | 是    | 启用接收notify设置为true,否则设置为false。 |
3614
3615**错误码**:
3616
3617以下错误码的详细介绍请参见[蓝牙服务子系统错误码](../errorcodes/errorcode-bluetoothManager.md)。
3618
3619| 错误码ID | 错误信息 |
3620| -------- | ---------------------------- |
3621|2900001 | Service stopped.                         |
3622|2900099 | Operation failed.                        |
3623
3624**示例:**
3625
3626```js
3627// 创建descriptors
3628let descriptors = [];
3629let arrayBuffer = new ArrayBuffer(8);
3630let descV = new Uint8Array(arrayBuffer);
3631descV[0] = 11;
3632let descriptor = {serviceUuid: '00001810-0000-1000-8000-00805F9B34FB',
3633  characteristicUuid: '00001820-0000-1000-8000-00805F9B34FB',
3634  descriptorUuid: '00002902-0000-1000-8000-00805F9B34FB', descriptorValue: arrayBuffer};
3635descriptors[0] = descriptor;
3636let arrayBufferC = new ArrayBuffer(8);
3637let characteristic = {serviceUuid: '00001810-0000-1000-8000-00805F9B34FB',
3638  characteristicUuid: '00001820-0000-1000-8000-00805F9B34FB', characteristicValue: arrayBufferC, descriptors:descriptors};
3639try {
3640    let device = bluetoothManager.BLE.createGattClientDevice('XX:XX:XX:XX:XX:XX');
3641    device.setNotifyCharacteristicChanged(characteristic, false);
3642} catch (err) {
3643    console.error("errCode:" + err.code + ",errMessage:" + err.message);
3644}
3645
3646```
3647
3648
3649### on('BLECharacteristicChange')
3650
3651on(type: "BLECharacteristicChange", callback: Callback&lt;BLECharacteristic&gt;): void
3652
3653订阅蓝牙低功耗设备的特征值变化事件。需要先调用setNotifyCharacteristicChanged接口才能接收server端的通知。
3654
3655**需要权限**:ohos.permission.USE_BLUETOOTH
3656
3657**系统能力**:SystemCapability.Communication.Bluetooth.Core3658
3659**参数:**
3660
3661| 参数名      | 类型                                       | 必填   | 说明                                       |
3662| -------- | ---------------------------------------- | ---- | ---------------------------------------- |
3663| type     | string                                   | 是    | 填写"BLECharacteristicChange"字符串,表示特征值变化事件。 |
3664| callback | Callback&lt;[BLECharacteristic](#blecharacteristic)&gt; | 是    | 表示蓝牙低功耗设备的特征值变化事件的回调函数。                  |
3665
3666**示例:**
3667
3668```js
3669function CharacteristicChange(CharacteristicChangeReq) {
3670    let serviceUuid = CharacteristicChangeReq.serviceUuid;
3671    let characteristicUuid = CharacteristicChangeReq.characteristicUuid;
3672    let value = new Uint8Array(CharacteristicChangeReq.characteristicValue);
3673}
3674try {
3675    let device = bluetoothManager.BLE.createGattClientDevice('XX:XX:XX:XX:XX:XX');
3676    device.on('BLECharacteristicChange', CharacteristicChange);
3677} catch (err) {
3678    console.error("errCode:" + err.code + ",errMessage:" + err.message);
3679}
3680```
3681
3682
3683### off('BLECharacteristicChange')
3684
3685off(type: "BLECharacteristicChange", callback?: Callback&lt;BLECharacteristic&gt;): void
3686
3687取消订阅蓝牙低功耗设备的特征值变化事件。
3688
3689**需要权限**:ohos.permission.USE_BLUETOOTH
3690
3691**系统能力**:SystemCapability.Communication.Bluetooth.Core3692
3693**参数:**
3694
3695| 参数名      | 类型                                       | 必填   | 说明                                       |
3696| -------- | ---------------------------------------- | ---- | ---------------------------------------- |
3697| type     | string                                   | 是    | 填写"BLECharacteristicChange"字符串,表示特征值变化事件。 |
3698| callback | Callback&lt;[BLECharacteristic](#blecharacteristic)&gt; | 否    | 表示取消订阅蓝牙低功耗设备的特征值变化事件。不填该参数则取消订阅该type对应的所有回调。 |
3699
3700**示例:**
3701
3702```js
3703try {
3704    let device = bluetoothManager.BLE.createGattClientDevice('XX:XX:XX:XX:XX:XX');
3705    device.off('BLECharacteristicChange');
3706} catch (err) {
3707    console.error("errCode:" + err.code + ",errMessage:" + err.message);
3708}
3709```
3710
3711
3712### on('BLEConnectionStateChange')
3713
3714on(type: "BLEConnectionStateChange", callback: Callback&lt;BLEConnectChangedState&gt;): void
3715
3716client端订阅蓝牙低功耗设备的连接状态变化事件。
3717
3718**需要权限**:ohos.permission.USE_BLUETOOTH
3719
3720**系统能力**:SystemCapability.Communication.Bluetooth.Core3721
3722**参数:**
3723
3724| 参数名      | 类型                                       | 必填   | 说明                                       |
3725| -------- | ---------------------------------------- | ---- | ---------------------------------------- |
3726| type     | string                                   | 是    | 填写"BLEConnectionStateChange"字符串,表示连接状态变化事件。 |
3727| callback | Callback&lt;[BLEConnectChangedState](#bleconnectchangedstate)&gt; | 是    | 表示连接状态,已连接或断开。                           |
3728
3729**示例:**
3730
3731```js
3732function ConnectStateChanged(state) {
3733  console.log('bluetooth connect state changed');
3734  let connectState = state.state;
3735}
3736try {
3737    let device = bluetoothManager.BLE.createGattClientDevice('XX:XX:XX:XX:XX:XX');
3738    device.on('BLEConnectionStateChange', ConnectStateChanged);
3739} catch (err) {
3740    console.error("errCode:" + err.code + ",errMessage:" + err.message);
3741}
3742```
3743
3744
3745### off('BLEConnectionStateChange')
3746
3747off(type: "BLEConnectionStateChange", callback?: Callback&lt;BLEConnectChangedState&gt;): void
3748
3749取消订阅蓝牙低功耗设备的连接状态变化事件。
3750
3751**需要权限**:ohos.permission.USE_BLUETOOTH
3752
3753**系统能力**:SystemCapability.Communication.Bluetooth.Core3754
3755**参数:**
3756
3757| 参数名      | 类型                                       | 必填   | 说明                                       |
3758| -------- | ---------------------------------------- | ---- | ---------------------------------------- |
3759| type     | string                                   | 是    | 填写"BLEConnectionStateChange"字符串,表示连接状态变化事件。 |
3760| callback | Callback&lt;[BLEConnectChangedState](#bleconnectchangedstate)&gt; | 否    | 表示取消订阅蓝牙低功耗设备的连接状态变化事件。不填该参数则取消订阅该type对应的所有回调。 |
3761
3762**示例:**
3763
3764```js
3765try {
3766    let device = bluetoothManager.BLE.createGattClientDevice('XX:XX:XX:XX:XX:XX');
3767    device.off('BLEConnectionStateChange');
3768} catch (err) {
3769    console.error("errCode:" + err.code + ",errMessage:" + err.message);
3770}
3771```
3772
3773
3774### getDeviceName
3775
3776getDeviceName(callback: AsyncCallback&lt;string&gt;): void
3777
3778client获取远端蓝牙低功耗设备名。
3779
3780**需要权限**:ohos.permission.USE_BLUETOOTH
3781
3782**系统能力**:SystemCapability.Communication.Bluetooth.Core3783
3784**参数:**
3785
3786| 参数名      | 类型                          | 必填   | 说明                              |
3787| -------- | --------------------------- | ---- | ------------------------------- |
3788| callback | AsyncCallback&lt;string&gt; | 是    | client获取对端server设备名,通过注册回调函数获取。 |
3789
3790**错误码**:
3791
3792以下错误码的详细介绍请参见[蓝牙服务子系统错误码](../errorcodes/errorcode-bluetoothManager.md)。
3793
3794| 错误码ID | 错误信息 |
3795| -------- | ---------------------------- |
3796|2900001 | Service stopped.                         |
3797|2900099 | Operation failed.                        |
3798
3799**示例:**
3800
3801```js
3802// callback
3803try {
3804    let gattClient = bluetoothManager.BLE.createGattClientDevice("XX:XX:XX:XX:XX:XX");
3805    gattClient.connect();
3806    let deviceName = gattClient.getDeviceName((err, data)=> {
3807        console.info('device name err ' + JSON.stringify(err));
3808        console.info('device name' + JSON.stringify(data));
3809    })
3810} catch (err) {
3811    console.error("errCode:" + err.code + ",errMessage:" + err.message);
3812}
3813```
3814
3815
3816### getDeviceName
3817
3818getDeviceName(): Promise&lt;string&gt;
3819
3820client获取远端蓝牙低功耗设备名。
3821
3822**需要权限**:ohos.permission.USE_BLUETOOTH
3823
3824**系统能力**:SystemCapability.Communication.Bluetooth.Core3825
3826**返回值:**
3827
3828| 类型                    | 说明                                 |
3829| --------------------- | ---------------------------------- |
3830| Promise&lt;string&gt; | client获取对端server设备名,通过promise形式获取。 |
3831
3832**错误码**:
3833
3834以下错误码的详细介绍请参见[蓝牙服务子系统错误码](../errorcodes/errorcode-bluetoothManager.md)。
3835
3836| 错误码ID | 错误信息 |
3837| -------- | ---------------------------- |
3838|2900001 | Service stopped.                         |
3839|2900099 | Operation failed.                        |
3840
3841**示例:**
3842
3843```js
3844// promise
3845try {
3846    let gattClient = bluetoothManager.BLE.createGattClientDevice("XX:XX:XX:XX:XX:XX");
3847    gattClient.connect();
3848    let deviceName = gattClient.getDeviceName().then((data) => {
3849        console.info('device name' + JSON.stringify(data));
3850    })
3851} catch (err) {
3852    console.error("errCode:" + err.code + ",errMessage:" + err.message);
3853}
3854```
3855
3856
3857### getRssiValue
3858
3859getRssiValue(callback: AsyncCallback&lt;number&gt;): void
3860
3861client获取远端蓝牙低功耗设备的信号强度 (Received Signal Strength Indication, RSSI),调用[connect](#connect)接口连接成功后才能使用。
3862
3863**需要权限**:ohos.permission.USE_BLUETOOTH
3864
3865**系统能力**:SystemCapability.Communication.Bluetooth.Core3866
3867**参数:**
3868
3869| 参数名      | 类型                          | 必填   | 说明                             |
3870| -------- | --------------------------- | ---- | ------------------------------ |
3871| callback | AsyncCallback&lt;number&gt; | 是    | 返回信号强度,单位&nbsp;dBm,通过注册回调函数获取。 |
3872
3873**错误码**:
3874
3875以下错误码的详细介绍请参见[蓝牙服务子系统错误码](../errorcodes/errorcode-bluetoothManager.md)。
3876
3877| 错误码ID | 错误信息 |
3878| -------- | ---------------------------- |
3879|2900099 | Operation failed.                        |
3880
3881**示例:**
3882
3883```js
3884// callback
3885try {
3886    let gattClient = bluetoothManager.BLE.createGattClientDevice("XX:XX:XX:XX:XX:XX");
3887    gattClient.connect();
3888    let rssi = gattClient.getRssiValue((err, data)=> {
3889        console.info('rssi err ' + JSON.stringify(err));
3890        console.info('rssi value' + JSON.stringify(data));
3891    })
3892} catch (err) {
3893    console.error("errCode:" + err.code + ",errMessage:" + err.message);
3894}
3895```
3896
3897
3898### getRssiValue
3899
3900getRssiValue(): Promise&lt;number&gt;
3901
3902client获取远端蓝牙低功耗设备的信号强度 (Received Signal Strength Indication, RSSI),调用[connect](#connect)接口连接成功后才能使用。
3903
3904**需要权限**:ohos.permission.USE_BLUETOOTH
3905
3906**系统能力**:SystemCapability.Communication.Bluetooth.Core3907
3908**返回值:**
3909
3910| 类型                    | 说明                                |
3911| --------------------- | --------------------------------- |
3912| Promise&lt;number&gt; | 返回信号强度,单位&nbsp;dBm,通过promise形式获取。 |
3913
3914**错误码**:
3915
3916以下错误码的详细介绍请参见[蓝牙服务子系统错误码](../errorcodes/errorcode-bluetoothManager.md)。
3917
3918| 错误码ID | 错误信息 |
3919| -------- | ---------------------------- |
3920|2900099 | Operation failed.                        |
3921
3922**示例:**
3923
3924```js
3925// promise
3926try {
3927    let gattClient = bluetoothManager.BLE.createGattClientDevice("XX:XX:XX:XX:XX:XX");
3928    let rssi = gattClient.getRssiValue().then((data) => {
3929        console.info('rssi' + JSON.stringify(data));
3930    })
3931} catch (err) {
3932    console.error("errCode:" + err.code + ",errMessage:" + err.message);
3933}
3934```
3935
3936## ScanMode<a name="ScanMode"></a>
3937
3938枚举,扫描模式。
3939
3940**系统能力**:SystemCapability.Communication.Bluetooth.Core3941
3942| 名称                                       | 值  | 说明              |
3943| ---------------------------------------- | ---- | --------------- |
3944| SCAN_MODE_NONE                           | 0    | 没有扫描模式。         |
3945| SCAN_MODE_CONNECTABLE                    | 1    | 可连接扫描模式。        |
3946| SCAN_MODE_GENERAL_DISCOVERABLE           | 2    | general发现模式。    |
3947| SCAN_MODE_LIMITED_DISCOVERABLE           | 3    | limited发现模式。    |
3948| SCAN_MODE_CONNECTABLE_GENERAL_DISCOVERABLE | 4    | 可连接general发现模式。 |
3949| SCAN_MODE_CONNECTABLE_LIMITED_DISCOVERABLE | 5    | 可连接limited发现模式。 |
3950
3951## BondState<a name="BondState"></a>
3952
3953枚举,配对状态。
3954
3955**系统能力**:SystemCapability.Communication.Bluetooth.Core3956
3957| 名称                 | 值  | 说明     |
3958| ------------------ | ---- | ------ |
3959| BOND_STATE_INVALID | 0    | 无效的配对。 |
3960| BOND_STATE_BONDING | 1    | 正在配对。  |
3961| BOND_STATE_BONDED  | 2    | 已配对。   |
3962
3963
3964## SppOption<a name="SppOption"></a>
3965
3966描述spp的配置参数。
3967
3968**系统能力**:SystemCapability.Communication.Bluetooth.Core3969
3970| 名称     | 类型                | 可读   | 可写   | 说明          |
3971| ------ | ------------------- | ---- | ---- | ----------- |
3972| uuid   | string              | 是    | 是    | spp单据的uuid。 |
3973| secure | boolean             | 是    | 是    | 是否是安全通道。    |
3974| type   | [SppType](#spptype) | 是    | 是    | Spp链路类型。    |
3975
3976
3977## SppType<a name="SppType"></a>
3978
3979枚举,Spp链路类型。
3980
3981**系统能力**:SystemCapability.Communication.Bluetooth.Core3982
3983| 名称         | 值  | 说明            |
3984| ---------- | ---- | ------------- |
3985| SPP_RFCOMM | 0    | 表示rfcomm链路类型。 |
3986
3987
3988## GattService
3989
3990描述service的接口参数定义。
3991
3992**系统能力**:SystemCapability.Communication.Bluetooth.Core3993
3994| 名称              | 类型                                     | 可读   | 可写   | 说明                                       |
3995| --------------- | ---------------------------------------- | ---- | ---- | ---------------------------------------- |
3996| serviceUuid     | string                                   | 是    | 是    | 特定服务(service)的UUID,例如:00001888-0000-1000-8000-00805f9b34fb。 |
3997| isPrimary       | boolean                                  | 是    | 是    | 如果是主服务设置为true,否则设置为false。                |
3998| characteristics | Array&lt;[BLECharacteristic](#blecharacteristic)&gt; | 是    | 是    | 当前服务包含的特征列表。                             |
3999| includeServices | Array&lt;[GattService](#gattservice)&gt; | 是    | 是    | 当前服务依赖的其它服务。                             |
4000
4001
4002## BLECharacteristic
4003
4004描述characteristic的接口参数定义 。
4005
4006**系统能力**:SystemCapability.Communication.Bluetooth.Core4007
4008| 名称                  | 类型                                     | 可读   | 可写   | 说明                                       |
4009| ------------------- | ---------------------------------------- | ---- | ---- | ---------------------------------------- |
4010| serviceUuid         | string                                   | 是    | 是    | 特定服务(service)的UUID,例如:00001888-0000-1000-8000-00805f9b34fb。 |
4011| characteristicUuid  | string                                   | 是    | 是    | 特定特征(characteristic)的UUID,例如:00002a11-0000-1000-8000-00805f9b34fb。 |
4012| characteristicValue | ArrayBuffer                              | 是    | 是    | 特征对应的二进制值。                               |
4013| descriptors         | Array&lt;[BLEDescriptor](#bledescriptor)&gt; | 是    | 是    | 特定特征的描述符列表。                              |
4014
4015
4016## BLEDescriptor
4017
4018描述descriptor的接口参数定义 。
4019
4020**系统能力**:SystemCapability.Communication.Bluetooth.Core4021
4022| 名称                 | 类型        | 可读   | 可写   | 说明                                       |
4023| ------------------ | ----------- | ---- | ---- | ---------------------------------------- |
4024| serviceUuid        | string      | 是    | 是    | 特定服务(service)的UUID,例如:00001888-0000-1000-8000-00805f9b34fb。 |
4025| characteristicUuid | string      | 是    | 是    | 特定特征(characteristic)的UUID,例如:00002a11-0000-1000-8000-00805f9b34fb。 |
4026| descriptorUuid     | string      | 是    | 是    | 描述符(descriptor)的UUID,例如:00002902-0000-1000-8000-00805f9b34fb。 |
4027| descriptorValue    | ArrayBuffer | 是    | 是    | 描述符对应的二进制值。                              |
4028
4029
4030## NotifyCharacteristic
4031
4032描述server端特征值变化时发送的特征通知参数定义。
4033
4034**系统能力**:SystemCapability.Communication.Bluetooth.Core4035
4036| 名称                  | 类型        | 可读   | 可写   | 说明                                       |
4037| ------------------- | ----------- | ---- | ---- | ---------------------------------------- |
4038| serviceUuid         | string      | 是    | 是    | 特定服务(service)的UUID,例如:00001888-0000-1000-8000-00805f9b34fb。 |
4039| characteristicUuid  | string      | 是    | 是    | 特定特征(characteristic)的UUID,例如:00002a11-0000-1000-8000-00805f9b34fb。 |
4040| characteristicValue | ArrayBuffer | 是    | 是    | 特征对应的二进制值。                               |
4041| confirm             | boolean     | 是    | 是    | 如果是notification则对端回复确认设置为true,如果是indication则对端不需要回复确认设置为false。 |
4042
4043
4044## CharacteristicReadRequest
4045
4046描述server端订阅后收到的特征值读请求事件参数结构。
4047
4048**系统能力**:SystemCapability.Communication.Bluetooth.Core4049
4050| 名称                 | 类型   | 可读   | 可写   | 说明                                       |
4051| ------------------ | ------ | ---- | ---- | ---------------------------------------- |
4052| deviceId           | string | 是    | 否    | 表示发送特征值读请求的远端设备地址,例如:"XX:XX:XX:XX:XX:XX"。 |
4053| transId            | number | 是    | 否    | 表示读请求的传输ID,server端回复响应时需填写相同的传输ID。       |
4054| offset             | number | 是    | 否    | 表示读特征值数据的起始位置。例如:k表示从第k个字节开始读,server端回复响应时需填写相同的offset。 |
4055| characteristicUuid | string | 是    | 否    | 特定特征(characteristic)的UUID,例如:00002a11-0000-1000-8000-00805f9b34fb。 |
4056| serviceUuid        | string | 是    | 否    | 特定服务(service)的UUID,例如:00001888-0000-1000-8000-00805f9b34fb。 |
4057
4058
4059## CharacteristicWriteRequest
4060
4061描述server端订阅后收到的特征值写请求事件参数结构。
4062
4063**系统能力**:SystemCapability.Communication.Bluetooth.Core4064
4065| 名称                 | 类型   | 可读   | 可写   | 说明                                       |
4066| ------------------ | ------ | ---- | ---- | ---------------------------------------- |
4067| deviceId           | string | 是    | 否    | 表示发送特征值写请求的远端设备地址,例如:"XX:XX:XX:XX:XX:XX"。 |
4068| transId            | number | 是    | 否    | 表示写请求的传输ID,server端回复响应时需填写相同的传输ID。       |
4069| offset             | number | 是    | 否    | 表示写特征值数据的起始位置。例如:k表示从第k个字节开始写,server端回复响应时需填写相同的offset。 |
4070| descriptorUuid     | string | 是    | 否    | 表示描述符(descriptor)的UUID,例如:00002902-0000-1000-8000-00805f9b34fb。 |
4071| characteristicUuid | string | 是    | 否    | 特定特征(characteristic)的UUID,例如:00002a11-0000-1000-8000-00805f9b34fb。 |
4072| serviceUuid        | string | 是    | 否    | 特定服务(service)的UUID,例如:00001888-0000-1000-8000-00805f9b34fb。 |
4073
4074
4075## DescriptorReadRequest
4076
4077描述server端订阅后收到的描述符读请求事件参数结构。
4078
4079**系统能力**:SystemCapability.Communication.Bluetooth.Core4080
4081| 名称                 | 类型   | 可读   | 可写   | 说明                                       |
4082| ------------------ | ------ | ---- | ---- | ---------------------------------------- |
4083| deviceId           | string | 是    | 否    | 表示发送描述符读请求的远端设备地址,例如:"XX:XX:XX:XX:XX:XX"。 |
4084| transId            | number | 是    | 否    | 表示读请求的传输ID,server端回复响应时需填写相同的传输ID。       |
4085| offset             | number | 是    | 否    | 表示读描述符数据的起始位置。例如:k表示从第k个字节开始读,server端回复响应时需填写相同的offset。 |
4086| descriptorUuid     | string | 是    | 否    | 表示描述符(descriptor)的UUID,例如:00002902-0000-1000-8000-00805f9b34fb。 |
4087| characteristicUuid | string | 是    | 否    | 特定特征(characteristic)的UUID,例如:00002a11-0000-1000-8000-00805f9b34fb。 |
4088| serviceUuid        | string | 是    | 否    | 特定服务(service)的UUID,例如:00001888-0000-1000-8000-00805f9b34fb。 |
4089
4090
4091## DescriptorWriteRequest
4092
4093描述server端订阅后收到的描述符写请求事件参数结构。
4094
4095**系统能力**:SystemCapability.Communication.Bluetooth.Core4096
4097| 名称                 | 类型        | 可读   | 可写   | 说明                                       |
4098| ------------------ | ----------- | ---- | ---- | ---------------------------------------- |
4099| deviceId           | string      | 是    | 否    | 表示发送描述符写请求的远端设备地址,例如:"XX:XX:XX:XX:XX:XX"。 |
4100| transId            | number      | 是    | 否    | 表示写请求的传输ID,server端回复响应时需填写相同的传输ID。       |
4101| offset             | number      | 是    | 否    | 表示写描述符数据的起始位置。例如:k表示从第k个字节开始写,server端回复响应时需填写相同的offset。 |
4102| isPrep             | boolean     | 是    | 否    | 表示写请求是否立即执行。                             |
4103| needRsp            | boolean     | 是    | 否    | 表示是否要给client端回复响应。                       |
4104| value              | ArrayBuffer | 是    | 否    | 表示写入的描述符二进制数据。                           |
4105| descriptorUuid     | string      | 是    | 否    | 表示描述符(descriptor)的UUID,例如:00002902-0000-1000-8000-00805f9b34fb。 |
4106| characteristicUuid | string      | 是    | 否    | 特定特征(characteristic)的UUID,例如:00002a11-0000-1000-8000-00805f9b34fb。 |
4107| serviceUuid        | string      | 是    | 否    | 特定服务(service)的UUID,例如:00001888-0000-1000-8000-00805f9b34fb。 |
4108
4109
4110## ServerResponse
4111
4112描述server端回复client端读/写请求的响应参数结构。
4113
4114**系统能力**:SystemCapability.Communication.Bluetooth.Core4115
4116| 名称       | 类型        | 可读   | 可写   | 说明                                     |
4117| -------- | ----------- | ---- | ---- | -------------------------------------- |
4118| deviceId | string      | 是    | 否    | 表示远端设备地址,例如:"XX:XX:XX:XX:XX:XX"。       |
4119| transId  | number      | 是    | 否    | 表示请求的传输ID,与订阅的读/写请求事件携带的ID保持一致。        |
4120| status   | number      | 是    | 否    | 表示响应的状态,设置为0即可,表示正常。                   |
4121| offset   | number      | 是    | 否    | 表示请求的读/写起始位置,与订阅的读/写请求事件携带的offset保持一致。 |
4122| value    | ArrayBuffer | 是    | 否    | 表示回复响应的二进制数据。                          |
4123
4124
4125## BLEConnectChangedState
4126
4127描述Gatt profile连接状态 。
4128
4129**系统能力**:SystemCapability.Communication.Bluetooth.Core4130
4131| 名称     | 类型                                          | 可读 | 可写 | 说明                                          |
4132| -------- | ------------------------------------------------- | ---- | ---- | --------------------------------------------- |
4133| deviceId | string                                            | 是   | 否   | 表示远端设备地址,例如:"XX:XX:XX:XX:XX:XX"。 |
4134| state    | [ProfileConnectionState](#profileconnectionstate) | 是   | 是   | 表示BLE连接状态的枚举。                       |
4135
4136
4137## ProfileConnectionState
4138
4139枚举,蓝牙设备的profile连接状态。
4140
4141**系统能力**:SystemCapability.Communication.Bluetooth.Core4142
4143| 名称                  | 值  | 说明             |
4144| ------------------- | ---- | -------------- |
4145| STATE_DISCONNECTED  | 0    | 表示profile已断连。  |
4146| STATE_CONNECTING    | 1    | 表示profile正在连接。 |
4147| STATE_CONNECTED     | 2    | 表示profile已连接。  |
4148| STATE_DISCONNECTING | 3    | 表示profile正在断连。 |
4149
4150
4151## ScanFilter
4152
4153扫描过滤参数。
4154
4155**系统能力**:SystemCapability.Communication.Bluetooth.Core4156
4157| 名称                                     | 类型    | 可读 | 可写 | 说明                                                         |
4158| ---------------------------------------- | ----------- | ---- | ---- | ------------------------------------------------------------ |
4159| deviceId                                 | string      | 是   | 是   | 表示过滤的BLE设备地址,例如:"XX:XX:XX:XX:XX:XX"。           |
4160| name                                     | string      | 是   | 是   | 表示过滤的BLE设备名。                                        |
4161| serviceUuid                              | string      | 是   | 是   | 表示过滤包含该UUID服务的设备,例如:00001888-0000-1000-8000-00805f9b34fb。 |
4162| serviceUuidMask             | string      | 是   | 是   | 表示过滤包含该UUID服务掩码的设备,例如:FFFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFFF。 |
4163| serviceSolicitationUuid     | string      | 是   | 是   | 表示过滤包含该UUID服务请求的设备,例如:00001888-0000-1000-8000-00805F9B34FB。 |
4164| serviceSolicitationUuidMask | string      | 是   | 是   | 表示过滤包含该UUID服务请求掩码的设备,例如:FFFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFFF。 |
4165| serviceData                 | ArrayBuffer | 是   | 是   | 表示过滤包含该服务相关数据的设备,例如:[0x90,0x00,0xF1,0xF2]。 |
4166| serviceDataMask             | ArrayBuffer | 是   | 是   | 表示过滤包含该服务相关数据掩码的设备,例如:[0xFF,0xFF,0xFF,0xFF]。 |
4167| manufactureId               | number      | 是   | 是   | 表示过滤包含该制造商ID的设备,例如:0x0006。                 |
4168| manufactureData             | ArrayBuffer | 是   | 是   | 表示过滤包含该制造商相关数据的设备,例如:[0x1F,0x2F,0x3F]。 |
4169| manufactureDataMask         | ArrayBuffer | 是   | 是   | 表示过滤包含该制造商相关数据掩码的设备,例如:[0xFF,0xFF,0xFF]。 |
4170
4171
4172## ScanOptions
4173
4174扫描的配置参数。
4175
4176**系统能力**:SystemCapability.Communication.Bluetooth.Core4177
4178| 名称        | 类型                    | 可读   | 可写   | 说明                                     |
4179| --------- | ----------------------- | ---- | ---- | -------------------------------------- |
4180| interval  | number                  | 是    | 是    | 表示扫描结果上报延迟时间,默认值为0。                    |
4181| dutyMode  | [ScanDuty](#scanduty)   | 是    | 是    | 表示扫描模式,默认值为SCAN_MODE_LOW_POWER。        |
4182| matchMode | [MatchMode](#matchmode) | 是    | 是    | 表示硬件的过滤匹配模式,默认值为MATCH_MODE_AGGRESSIVE。 |
4183
4184
4185## ScanDuty
4186
4187枚举,扫描模式。
4188
4189**系统能力**:SystemCapability.Communication.Bluetooth.Core4190
4191| 名称                    | 值  | 说明           |
4192| --------------------- | ---- | ------------ |
4193| SCAN_MODE_LOW_POWER   | 0    | 表示低功耗模式,默认值。 |
4194| SCAN_MODE_BALANCED    | 1    | 表示均衡模式。      |
4195| SCAN_MODE_LOW_LATENCY | 2    | 表示低延迟模式。     |
4196
4197
4198## MatchMode
4199
4200枚举,硬件过滤匹配模式。
4201
4202**系统能力**:SystemCapability.Communication.Bluetooth.Core4203
4204| 名称                    | 值  | 说明                                       |
4205| --------------------- | ---- | ---------------------------------------- |
4206| MATCH_MODE_AGGRESSIVE | 1    | 表示硬件上报扫描结果门限较低,比如扫描到的功率较低或者一段时间扫描到的次数较少也触发上报,默认值。 |
4207| MATCH_MODE_STICKY     | 2    | 表示硬件上报扫描结果门限较高,更高的功率门限以及扫描到多次才会上报。       |
4208
4209
4210## ScanResult
4211
4212扫描结果上报数据。
4213
4214**系统能力**:SystemCapability.Communication.Bluetooth.Core4215
4216| 名称       | 类型        | 可读   | 可写   | 说明                                 |
4217| -------- | ----------- | ---- | ---- | ---------------------------------- |
4218| deviceId | string      | 是    | 否    | 表示扫描到的设备地址,例如:"XX:XX:XX:XX:XX:XX"。 |
4219| rssi     | number      | 是    | 否    | 表示扫描到的设备的rssi值。                    |
4220| data     | ArrayBuffer | 是    | 否    | 表示扫描到的设备发送的广播包。                    |
4221
4222
4223## BluetoothState
4224
4225枚举,蓝牙开关状态。
4226
4227**系统能力**:SystemCapability.Communication.Bluetooth.Core4228
4229| 名称                    | 值  | 说明                 |
4230| --------------------- | ---- | ------------------ |
4231| STATE_OFF             | 0    | 表示蓝牙已关闭。           |
4232| STATE_TURNING_ON      | 1    | 表示蓝牙正在打开。          |
4233| STATE_ON              | 2    | 表示蓝牙已打开。           |
4234| STATE_TURNING_OFF     | 3    | 表示蓝牙正在关闭。          |
4235| STATE_BLE_TURNING_ON  | 4    | 表示蓝牙正在打开LE-only模式。 |
4236| STATE_BLE_ON          | 5    | 表示蓝牙正处于LE-only模式。  |
4237| STATE_BLE_TURNING_OFF | 6    | 表示蓝牙正在关闭LE-only模式。 |
4238
4239
4240## AdvertiseSetting
4241
4242描述蓝牙低功耗设备发送广播的参数。
4243
4244**系统能力**:SystemCapability.Communication.Bluetooth.Core4245
4246| 名称          | 类型    | 可读   | 可写   | 说明                                       |
4247| ----------- | ------- | ---- | ---- | ---------------------------------------- |
4248| interval    | number  | 是    | 是    | 表示广播间隔,最小值设置32个slot表示20ms,最大值设置16384个slot,默认值设置为1600个slot表示1s。 |
4249| txPower     | number  | 是    | 是    | 表示发送功率,最小值设置-127,最大值设置1,默认值设置-7,单位dbm。   |
4250| connectable | boolean | 是    | 是    | 表示是否是可连接广播,默认值设置为true。                   |
4251
4252
4253## AdvertiseData
4254
4255描述BLE广播数据包的内容。
4256
4257**系统能力**:SystemCapability.Communication.Bluetooth.Core4258
4259| 名称              | 类型                                     | 可读   | 可写   | 说明                          |
4260| --------------- | ---------------------------------------- | ---- | ---- | --------------------------- |
4261| serviceUuids    | Array&lt;string&gt;                      | 是    | 是    | 表示要广播的服务&nbsp;UUID&nbsp;列表。 |
4262| manufactureData | Array&lt;[ManufactureData](#manufacturedata)&gt; | 是    | 是    | 表示要广播的广播的制造商信息列表。           |
4263| serviceData     | Array&lt;[ServiceData](#servicedata)&gt; | 是    | 是    | 表示要广播的服务数据列表。               |
4264
4265
4266## ManufactureData
4267
4268描述BLE广播数据包的内容。
4269
4270**系统能力**:SystemCapability.Communication.Bluetooth.Core4271
4272| 名称               | 类型                | 可读   | 可写   | 说明                 |
4273| ---------------- | ------------------- | ---- | ---- | ------------------ |
4274| manufactureId    | number  | 是    | 是    | 表示制造商的ID,由蓝牙SIG分配。 |
4275| manufactureValue | ArrayBuffer         | 是    | 是    | 表示制造商发送的制造商数据。     |
4276
4277
4278## ServiceData
4279
4280描述广播包中服务数据内容。
4281
4282**系统能力**:SystemCapability.Communication.Bluetooth.Core4283
4284| 名称           | 类型        | 可读   | 可写   | 说明         |
4285| ------------ | ----------- | ---- | ---- | ---------- |
4286| serviceUuid  | string      | 是    | 是    | 表示服务的UUID。 |
4287| serviceValue | ArrayBuffer | 是    | 是    | 表示服务数据。    |
4288
4289
4290## PinRequiredParam<a name="PinRequiredParam"></a>
4291
4292描述配对请求参数。
4293
4294**系统能力**:SystemCapability.Communication.Bluetooth.Core4295
4296| 名称       | 类型   | 可读   | 可写   | 说明          |
4297| -------- | ------ | ---- | ---- | ----------- |
4298| deviceId | string | 是    | 否    | 表示要配对的设备ID。 |
4299| pinCode  | string | 是    | 否    | 表示要配对的密钥。   |
4300
4301
4302## BondStateParam<a name="BondStateParam"></a>
4303
4304描述配对状态参数。
4305
4306**系统能力**:SystemCapability.Communication.Bluetooth.Core4307
4308| 名称       | 类型   | 可读   | 可写   | 说明          |
4309| -------- | ------ | ---- | ---- | ----------- |
4310| deviceId | string      | 是    | 否    | 表示要配对的设备ID。 |
4311| state    | BondState   | 是    | 否    | 表示配对设备的状态。 |
4312
4313
4314## StateChangeParam<a name="StateChangeParam"></a>
4315
4316描述profile状态改变参数。
4317
4318**系统能力**:SystemCapability.Communication.Bluetooth.Core4319
4320| 名称     | 类型                                          | 可读 | 可写 | 说明                            |
4321| -------- | ------------------------------------------------- | ---- | ---- | ------------------------------- |
4322| deviceId | string                                            | 是   | 否   | 表示蓝牙设备地址。              |
4323| state    | [ProfileConnectionState](#profileconnectionstate) | 是   | 否   | 表示蓝牙设备的profile连接状态。 |
4324
4325
4326## DeviceClass<a name="DeviceClass"></a>
4327
4328描述蓝牙设备的类别。
4329
4330**系统能力**:SystemCapability.Communication.Bluetooth.Core4331
4332| 名称              | 类型                                | 可读   | 可写   | 说明               |
4333| --------------- | ----------------------------------- | ---- | ---- | ---------------- |
4334| majorClass      | [MajorClass](#majorclass)           | 是    | 否    | 表示蓝牙设备主要类别的枚举。   |
4335| majorMinorClass | [MajorMinorClass](#majorminorclass) | 是    | 否    | 表示主要次要蓝牙设备类别的枚举。 |
4336| classOfDevice   | number                              | 是    | 否    | 表示设备类别。          |
4337
4338
4339
4340## MajorClass<a name="MajorClass"></a>
4341
4342枚举,蓝牙设备主要类别。
4343
4344**系统能力**:SystemCapability.Communication.Bluetooth.Core4345
4346| 名称                  | 值    | 说明         |
4347| ------------------- | ------ | ---------- |
4348| MAJOR_MISC          | 0x0000 | 表示杂项设备。    |
4349| MAJOR_COMPUTER      | 0x0100 | 表示计算机设备。   |
4350| MAJOR_PHONE         | 0x0200 | 表示手机设备。    |
4351| MAJOR_NETWORKING    | 0x0300 | 表示网络设备。    |
4352| MAJOR_AUDIO_VIDEO   | 0x0400 | 表示音频和视频设备。 |
4353| MAJOR_PERIPHERAL    | 0x0500 | 表示外围设备。    |
4354| MAJOR_IMAGING       | 0x0600 | 表示成像设备。    |
4355| MAJOR_WEARABLE      | 0x0700 | 表示可穿戴设备。   |
4356| MAJOR_TOY           | 0x0800 | 表示玩具设备。    |
4357| MAJOR_HEALTH        | 0x0900 | 表示健康设备。    |
4358| MAJOR_UNCATEGORIZED | 0x1F00 | 表示未分类设备。   |
4359
4360
4361## MajorMinorClass<a name="MajorMinorClass"></a>
4362
4363枚举,主要次要蓝牙设备类别。
4364
4365**系统能力**:SystemCapability.Communication.Bluetooth.Core4366
4367| 名称                                       | 值    | 说明              |
4368| ---------------------------------------- | ------ | --------------- |
4369| COMPUTER_UNCATEGORIZED                   | 0x0100 | 表示未分类计算机设备。     |
4370| COMPUTER_DESKTOP                         | 0x0104 | 表示台式计算机设备。      |
4371| COMPUTER_SERVER                          | 0x0108 | 表示服务器设备。        |
4372| COMPUTER_LAPTOP                          | 0x010C | 表示便携式计算机设备。     |
4373| COMPUTER_HANDHELD_PC_PDA                 | 0x0110 | 表示手持式计算机设备。     |
4374| COMPUTER_PALM_SIZE_PC_PDA                | 0x0114 | 表示掌上电脑设备。       |
4375| COMPUTER_WEARABLE                        | 0x0118 | 表示可穿戴计算机设备。     |
4376| COMPUTER_TABLET                          | 0x011C | 表示平板电脑设备。       |
4377| PHONE_UNCATEGORIZED                      | 0x0200 | 表示未分类手机设备。      |
4378| PHONE_CELLULAR                           | 0x0204 | 表示便携式手机设备。      |
4379| PHONE_CORDLESS                           | 0x0208 | 表示无线电话设备。       |
4380| PHONE_SMART                              | 0x020C | 表示智能手机设备。       |
4381| PHONE_MODEM_OR_GATEWAY                   | 0x0210 | 表示调制解调器或网关手机设备。 |
4382| PHONE_ISDN                               | 0x0214 | 表示ISDN手机设备。     |
4383| NETWORK_FULLY_AVAILABLE                  | 0x0300 | 表示网络完全可用设备。     |
4384| NETWORK_1_TO_17_UTILIZED                 | 0x0320 | 表示使用网络1到17设备。   |
4385| NETWORK_17_TO_33_UTILIZED                | 0x0340 | 表示使用网络17到33设备。  |
4386| NETWORK_33_TO_50_UTILIZED                | 0x0360 | 表示使用网络33到50设备。  |
4387| NETWORK_60_TO_67_UTILIZED                | 0x0380 | 表示使用网络60到67设备。  |
4388| NETWORK_67_TO_83_UTILIZED                | 0x03A0 | 表示使用网络67到83设备。  |
4389| NETWORK_83_TO_99_UTILIZED                | 0x03C0 | 表示使用网络83到99设备。  |
4390| NETWORK_NO_SERVICE                       | 0x03E0 | 表示网络无服务设备。      |
4391| AUDIO_VIDEO_UNCATEGORIZED                | 0x0400 | 表示未分类音频视频设备。    |
4392| AUDIO_VIDEO_WEARABLE_HEADSET             | 0x0404 | 表示可穿戴式音频视频设备。   |
4393| AUDIO_VIDEO_HANDSFREE                    | 0x0408 | 表示免提音频视频设备。     |
4394| AUDIO_VIDEO_MICROPHONE                   | 0x0410 | 表示麦克风音频视频设备。    |
4395| AUDIO_VIDEO_LOUDSPEAKER                  | 0x0414 | 表示扬声器音频视频设备。    |
4396| AUDIO_VIDEO_HEADPHONES                   | 0x0418 | 表示头戴式音频视频设备。    |
4397| AUDIO_VIDEO_PORTABLE_AUDIO               | 0x041C | 表示便携式音频视频设备。    |
4398| AUDIO_VIDEO_CAR_AUDIO                    | 0x0420 | 表示汽车音频视频设备。     |
4399| AUDIO_VIDEO_SET_TOP_BOX                  | 0x0424 | 表示机顶盒音频视频设备。    |
4400| AUDIO_VIDEO_HIFI_AUDIO                   | 0x0428 | 表示高保真音响设备。      |
4401| AUDIO_VIDEO_VCR                          | 0x042C | 表示录像机音频视频设备。    |
4402| AUDIO_VIDEO_VIDEO_CAMERA                 | 0x0430 | 表示照相机音频视频设备。    |
4403| AUDIO_VIDEO_CAMCORDER                    | 0x0434 | 表示摄像机音频视频设备。    |
4404| AUDIO_VIDEO_VIDEO_MONITOR                | 0x0438 | 表示监视器音频视频设备。    |
4405| AUDIO_VIDEO_VIDEO_DISPLAY_AND_LOUDSPEAKER | 0x043C | 表示视频显示器和扬声器设备。  |
4406| AUDIO_VIDEO_VIDEO_CONFERENCING           | 0x0440 | 表示音频视频会议设备。     |
4407| AUDIO_VIDEO_VIDEO_GAMING_TOY             | 0x0448 | 表示游戏玩具音频视频设备。   |
4408| PERIPHERAL_NON_KEYBOARD_NON_POINTING     | 0x0500 | 表示非键盘非指向外围设备。   |
4409| PERIPHERAL_KEYBOARD                      | 0x0540 | 表示外设键盘设备。       |
4410| PERIPHERAL_POINTING_DEVICE               | 0x0580 | 表示定点装置外围设备。     |
4411| PERIPHERAL_KEYBOARD_POINTING             | 0x05C0 | 表示键盘指向外围设备。     |
4412| PERIPHERAL_UNCATEGORIZED                 | 0x0500 | 表示未分类外围设备。      |
4413| PERIPHERAL_JOYSTICK                      | 0x0504 | 表示周边操纵杆设备。      |
4414| PERIPHERAL_GAMEPAD                       | 0x0508 | 表示周边游戏板设备。      |
4415| PERIPHERAL_REMOTE_CONTROL                | 0x05C0 | 表示远程控制外围设备。     |
4416| PERIPHERAL_SENSING_DEVICE                | 0x0510 | 表示外围传感设备设备。     |
4417| PERIPHERAL_DIGITIZER_TABLET              | 0x0514 | 表示外围数字化仪平板电脑设备。 |
4418| PERIPHERAL_CARD_READER                   | 0x0518 | 表示外围读卡器设备。      |
4419| PERIPHERAL_DIGITAL_PEN                   | 0x051C | 表示外设数码笔设备。      |
4420| PERIPHERAL_SCANNER_RFID                  | 0x0520 | 表示射频识别扫描仪外围设备。  |
4421| PERIPHERAL_GESTURAL_INPUT                | 0x0522 | 表示手势输入外围设备。     |
4422| IMAGING_UNCATEGORIZED                    | 0x0600 | 表示未分类的图像设备。     |
4423| IMAGING_DISPLAY                          | 0x0610 | 表示图像显示设备。       |
4424| IMAGING_CAMERA                           | 0x0620 | 表示成像照相机设备。      |
4425| IMAGING_SCANNER                          | 0x0640 | 表示成像扫描仪设备。      |
4426| IMAGING_PRINTER                          | 0x0680 | 表示成像打印机设备。      |
4427| WEARABLE_UNCATEGORIZED                   | 0x0700 | 表示未分类的可穿戴设备。    |
4428| WEARABLE_WRIST_WATCH                     | 0x0704 | 表示可穿戴腕表设备。      |
4429| WEARABLE_PAGER                           | 0x0708 | 表示可穿戴寻呼机设备。     |
4430| WEARABLE_JACKET                          | 0x070C | 表示夹克可穿戴设备。      |
4431| WEARABLE_HELMET                          | 0x0710 | 表示可穿戴头盔设备。      |
4432| WEARABLE_GLASSES                         | 0x0714 | 表示可穿戴眼镜设备。      |
4433| TOY_UNCATEGORIZED                        | 0x0800 | 表示未分类的玩具设备。     |
4434| TOY_ROBOT                                | 0x0804 | 表示玩具机器人设备。      |
4435| TOY_VEHICLE                              | 0x0808 | 表示玩具车设备。        |
4436| TOY_DOLL_ACTION_FIGURE                   | 0x080C | 表示人形娃娃玩具设备。     |
4437| TOY_CONTROLLER                           | 0x0810 | 表示玩具控制器设备。      |
4438| TOY_GAME                                 | 0x0814 | 表示玩具游戏设备。       |
4439| HEALTH_UNCATEGORIZED                     | 0x0900 | 表示未分类健康设备。      |
4440| HEALTH_BLOOD_PRESSURE                    | 0x0904 | 表示血压健康设备。       |
4441| HEALTH_THERMOMETER                       | 0x0908 | 表示温度计健康设备。      |
4442| HEALTH_WEIGHING                          | 0x090C | 表示体重健康设备。       |
4443| HEALTH_GLUCOSE                           | 0x0910 | 表示葡萄糖健康设备。      |
4444| HEALTH_PULSE_OXIMETER                    | 0x0914 | 表示脉搏血氧仪健康设备。    |
4445| HEALTH_PULSE_RATE                        | 0x0918 | 表示脉搏率健康设备。      |
4446| HEALTH_DATA_DISPLAY                      | 0x091C | 表示数据显示健康设备。     |
4447| HEALTH_STEP_COUNTER                      | 0x0920 | 表示阶梯计数器健康设备。    |
4448| HEALTH_BODY_COMPOSITION_ANALYZER         | 0x0924 | 表示身体成分分析仪健康设备。  |
4449| HEALTH_PEAK_FLOW_MONITOR                  | 0x0928 | 表示湿度计健康设备。      |
4450| HEALTH_MEDICATION_MONITOR                | 0x092C | 表示药物监视仪健康设备。    |
4451| HEALTH_KNEE_PROSTHESIS                   | 0x0930 | 表示膝盖假肢健康设备。     |
4452| HEALTH_ANKLE_PROSTHESIS                  | 0x0934 | 表示脚踝假肢健康设备。     |
4453| HEALTH_GENERIC_HEALTH_MANAGER            | 0x0938 | 表示通用健康管理设备。     |
4454| HEALTH_PERSONAL_MOBILITY_DEVICE          | 0x093C | 表示个人移动健康设备。     |
4455
4456
4457## PlayingState<a name="PlayingState"></a>
4458
4459枚举,蓝牙A2DP 播放状态。
4460
4461**系统能力**:SystemCapability.Communication.Bluetooth.Core4462
4463| 名称                | 值    | 说明      |
4464| ----------------- | ------ | ------- |
4465| STATE_NOT_PLAYING | 0x0000 | 表示未播放。  |
4466| STATE_PLAYING     | 0x0001 | 表示正在播放。 |
4467
4468
4469## ProfileId<a name="ProfileId"></a>
4470
4471蓝牙profile枚举,API9新增PROFILE_HID_HOST,PROFILE_PAN_NETWORK。
4472
4473**系统能力**:SystemCapability.Communication.Bluetooth.Core4474
4475| 名称                               | 值    | 说明              |
4476| -------------------------------- | ------ | --------------- |
4477| PROFILE_A2DP_SOURCE              | 1 | 表示A2DP profile。 |
4478| PROFILE_HANDS_FREE_AUDIO_GATEWAY | 4 | 表示HFP profile。  |
4479| PROFILE_HID_HOST | 6 | 表示HID profile。  |
4480| PROFILE_PAN_NETWORK | 7 | 表示PAN profile。  |