• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# 蓝牙
2
3> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
4> 本模块首批接口从API version 7开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
5
6蓝牙模块提供了基础的传统蓝牙能力以及BLE的扫描、广播等功能。
7
8
9## 导入模块
10
11```js
12import bluetooth from '@ohos.bluetooth';
13```
14
15
16## bluetooth.enableBluetooth<sup>8+</sup><a name="enableBluetooth"></a>
17
18enableBluetooth(): boolean
19
20开启蓝牙。
21
22**需要权限**:ohos.permission.DISCOVER_BLUETOOTH
23
24**系统能力**:SystemCapability.Communication.Bluetooth.Core25
26**返回值:**
27
28| 类型      | 说明                       |
29| ------- | ------------------------ |
30| boolean | 打开蓝牙,成功返回true,否则返回false。 |
31
32**示例:**
33
34```js
35let enable = bluetooth.enableBluetooth();
36```
37
38
39## bluetooth.disableBluetooth<sup>8+</sup><a name="disableBluetooth"></a>
40
41disableBluetooth(): boolean
42
43关闭蓝牙。
44
45**需要权限**:ohos.permission.DISCOVER_BLUETOOTH
46
47**系统能力**:SystemCapability.Communication.Bluetooth.Core48
49**返回值:**
50
51| 类型      | 说明                       |
52| ------- | ------------------------ |
53| boolean | 关闭蓝牙,成功返回true,否则返回false。 |
54
55**示例:**
56
57```js
58let disable = bluetooth.disableBluetooth();
59```
60
61
62## bluetooth.getLocalName<sup>8+</sup><a name="getLocalName"></a>
63
64getLocalName(): string
65
66获取蓝牙本地设备名称。
67
68**需要权限**:ohos.permission.USE_BLUETOOTH
69
70**系统能力**:SystemCapability.Communication.Bluetooth.Core71
72**返回值:**
73
74| 类型     | 说明        |
75| ------ | --------- |
76| string | 蓝牙本地设备名称。 |
77
78**示例:**
79
80```js
81let localName = bluetooth.getLocalName();
82```
83
84
85## bluetooth.getState
86
87getState(): BluetoothState
88
89获取蓝牙开关状态。
90
91**需要权限**:ohos.permission.USE_BLUETOOTH
92
93**系统能力**:SystemCapability.Communication.Bluetooth.Core94
95**返回值:**
96
97| 类型                                | 说明        |
98| --------------------------------- | --------- |
99| [BluetoothState](#bluetoothstate) | 表示蓝牙开关状态。 |
100
101**示例:**
102
103```js
104let state = bluetooth.getState();
105```
106
107
108## bluetooth.getBtConnectionState
109
110getBtConnectionState(): ProfileConnectionState
111
112获取蓝牙设备的Profile连接状态。
113
114**需要权限**:ohos.permission.USE_BLUETOOTH
115
116**系统能力**:SystemCapability.Communication.Bluetooth.Core117
118**返回值:**
119
120| 类型                                       | 说明                  |
121| ---------------------------------------- | ------------------- |
122| [ProfileConnectionState](#profileconnectionstate) | 表示蓝牙设备的Profile连接状态。 |
123
124**示例:**
125
126```js
127let connectionState = bluetooth.getBtConnectionState();
128```
129
130
131## bluetooth.setLocalName<sup>8+</sup><a name="setLocalName"></a>
132
133setLocalName(name: string): boolean
134
135设置蓝牙本地设备名称。
136
137**需要权限**:ohos.permission.DISCOVER_BLUETOOTH
138
139**系统能力**:SystemCapability.Communication.Bluetooth.Core140
141**参数:**
142
143| 参数名  | 类型     | 必填   | 说明                    |
144| ---- | ------ | ---- | --------------------- |
145| name | string | 是    | 要设置的蓝牙名称,最大长度为248字节数。 |
146
147**返回值:**
148
149| 类型      | 说明                             |
150| ------- | ------------------------------ |
151| boolean | 设置蓝牙本地设备名称,成功返回true,否则返回false。 |
152
153**示例:**
154
155```js
156let ret = bluetooth.setLocalName('device_name');
157```
158
159
160## bluetooth.pairDevice
161
162pairDevice(deviceId: string): boolean
163
164发起蓝牙配对。
165
166**需要权限**:ohos.permission.DISCOVER_BLUETOOTH
167
168**系统能力**:SystemCapability.Communication.Bluetooth.Core169
170**参数:**
171
172| 参数名      | 类型     | 必填   | 说明                                  |
173| -------- | ------ | ---- | ----------------------------------- |
174| deviceId | string | 是    | 表示配对的远端设备地址,例如:"XX:XX:XX:XX:XX:XX"。 |
175
176**返回值:**
177
178| 类型      | 说明                         |
179| ------- | -------------------------- |
180| boolean | 发起蓝牙配对,成功返回true,否则返回false。 |
181
182**示例:**
183
184```js
185// 实际的地址可由扫描流程获取
186let result = bluetooth.pairDevice("XX:XX:XX:XX:XX:XX");
187```
188
189
190## bluetooth.getProfileConnState<sup>8+</sup><a name="getProfileConnState"></a>
191
192getProfileConnState(profileId: ProfileId): ProfileConnectionState
193
194获取profile的连接状态。
195
196**需要权限**:ohos.permission.USE_BLUETOOTH
197
198**系统能力**:SystemCapability.Communication.Bluetooth.Core199
200**参数:**
201
202| 参数名       | 类型        | 必填   | 说明                                    |
203| --------- | --------- | ---- | ------------------------------------- |
204| ProfileId | profileId | 是    | 表示profile的枚举值,例如:PROFILE_A2DP_SOURCE。 |
205
206**返回值:**
207
208| 类型                                              | 说明                |
209| ------------------------------------------------- | ------------------- |
210| [ProfileConnectionState](#profileconnectionstate) | profile的连接状态。 |
211
212**示例:**
213
214```js
215let result = bluetooth.getProfileConnState(bluetooth.ProfileId.PROFILE_A2DP_SOURCE);
216```
217
218
219## bluetooth.cancelPairedDevice<sup>8+</sup><a name="cancelPairedDevice"></a>
220
221cancelPairedDevice(deviceId: string): boolean
222
223删除配对的远程设备。
224
225此接口为系统接口。
226
227**需要权限**:ohos.permission.DISCOVER_BLUETOOTH
228
229**系统能力**:SystemCapability.Communication.Bluetooth.Core230
231**参数:**
232
233| 参数名      | 类型     | 必填   | 说明                                    |
234| -------- | ------ | ---- | ------------------------------------- |
235| deviceId | string | 是    | 表示要删除的远程设备的地址,例如:"XX:XX:XX:XX:XX:XX"。 |
236
237**返回值:**
238
239| 类型      | 说明                         |
240| ------- | -------------------------- |
241| boolean | 启动取消配对,成功返回true,否则返回false。 |
242
243**示例:**
244
245```js
246let result = bluetooth.cancelPairedDevice("XX:XX:XX:XX:XX:XX");
247```
248
249
250## bluetooth.getRemoteDeviceName<sup>8+</sup><a name="getRemoteDeviceName"></a>
251
252getRemoteDeviceName(deviceId: string): string
253
254获取对端蓝牙设备的名称。
255
256**需要权限**:ohos.permission.USE_BLUETOOTH
257
258**系统能力**:SystemCapability.Communication.Bluetooth.Core259
260**参数:**
261
262| 参数名      | 类型     | 必填   | 说明                                |
263| -------- | ------ | ---- | --------------------------------- |
264| deviceId | string | 是    | 表示远程设备的地址,例如:"XX:XX:XX:XX:XX:XX"。 |
265
266**返回值:**
267
268| 类型     | 说明            |
269| ------ | ------------- |
270| string | 以字符串格式返回设备名称。 |
271
272**示例:**
273
274```js
275let remoteDeviceName = bluetooth.getRemoteDeviceName("XX:XX:XX:XX:XX:XX");
276```
277
278
279## bluetooth.getRemoteDeviceClass<sup>8+</sup><a name="getRemoteDeviceClass"></a>
280
281getRemoteDeviceClass(deviceId: string): DeviceClass
282
283获取对端蓝牙设备的类别。
284
285**需要权限**:ohos.permission.USE_BLUETOOTH
286
287**系统能力**:SystemCapability.Communication.Bluetooth.Core288
289**参数:**
290
291| 参数名      | 类型     | 必填   | 说明                                |
292| -------- | ------ | ---- | --------------------------------- |
293| deviceId | string | 是    | 表示远程设备的地址,例如:"XX:XX:XX:XX:XX:XX"。 |
294
295**返回值:**
296
297| 类型                          | 说明       |
298| --------------------------- | -------- |
299| [DeviceClass](#deviceclass) | 远程设备的类别。 |
300
301**示例:**
302
303```js
304let remoteDeviceClass = bluetooth.getRemoteDeviceClass("XX:XX:XX:XX:XX:XX");
305```
306
307
308## bluetooth.getPairedDevices<sup>8+</sup><a name="getPairedDevices"></a>
309
310getPairedDevices(): Array&lt;string&gt;
311
312获取蓝牙配对列表。
313
314**需要权限**:ohos.permission.USE_BLUETOOTH
315
316**系统能力**:SystemCapability.Communication.Bluetooth.Core317
318**返回值:**
319
320| 类型                  | 说明            |
321| ------------------- | ------------- |
322| Array&lt;string&gt; | 已配对蓝牙设备的地址列表。 |
323
324**示例:**
325
326```js
327let devices = bluetooth.getPairedDevices();
328```
329
330
331## bluetooth.setBluetoothScanMode<sup>8+</sup><a name="setBluetoothScanMode"></a>
332
333setBluetoothScanMode(mode: ScanMode, duration: number): boolean
334
335设置蓝牙扫描模式,可以被远端设备发现。
336
337**需要权限**:ohos.permission.USE_BLUETOOTH
338
339**系统能力**:SystemCapability.Communication.Bluetooth.Core340
341**参数:**
342
343| 参数名      | 类型                    | 必填   | 说明                           |
344| -------- | --------------------- | ---- | ---------------------------- |
345| mode     | [ScanMode](#scanmode) | 是    | 蓝牙扫描模式。                      |
346| duration | number                | 是    | 设备可被发现的持续时间,单位为毫秒;设置为0则持续可发现。 |
347
348**返回值:**
349
350| 类型      | 说明                         |
351| ------- | -------------------------- |
352| boolean | 设置蓝牙扫描,成功返回true,否则返回false。 |
353
354**示例:**
355
356```js
357// 设置为可连接可发现才可被远端设备扫描到,可以连接。
358let result = bluetooth.setBluetoothScanMode(bluetooth.ScanMode.SCAN_MODE_CONNECTABLE_GENERAL_DISCOVERABLE, 100);
359```
360
361
362## bluetooth.getBluetoothScanMode<sup>8+</sup><a name="getBluetoothScanMode"></a>
363
364getBluetoothScanMode(): ScanMode
365
366获取蓝牙扫描模式。
367
368**需要权限**:ohos.permission.USE_BLUETOOTH
369
370**系统能力**:SystemCapability.Communication.Bluetooth.Core371
372**返回值:**
373
374| 类型                    | 说明      |
375| --------------------- | ------- |
376| [ScanMode](#scanmode) | 蓝牙扫描模式。 |
377
378**示例:**
379
380```js
381let scanMode = bluetooth.getBluetoothScanMode();
382```
383
384
385## bluetooth.startBluetoothDiscovery<sup>8+</sup><a name="startBluetoothDiscovery"></a>
386
387startBluetoothDiscovery(): boolean
388
389开启蓝牙扫描,可以发现远端设备。
390
391**需要权限**:ohos.permission.DISCOVER_BLUETOOTHohos.permission.LOCATION
392
393**系统能力**:SystemCapability.Communication.Bluetooth.Core394
395**返回值:**
396
397| 类型      | 说明                         |
398| ------- | -------------------------- |
399| boolean | 开启蓝牙扫描,成功返回true,否则返回false。 |
400
401**示例:**
402
403```js
404let deviceId;
405function onReceiveEvent(data) {
406    deviceId = data;
407}
408bluetooth.on('bluetoothDeviceFind', onReceiveEvent);
409let result = bluetooth.startBluetoothDiscovery();
410```
411
412
413## bluetooth.stopBluetoothDiscovery<sup>8+</sup><a name="stopBluetoothDiscovery"></a>
414
415stopBluetoothDiscovery(): boolean
416
417关闭蓝牙扫描。
418
419**需要权限**:ohos.permission.DISCOVER_BLUETOOTH
420
421**系统能力**:SystemCapability.Communication.Bluetooth.Core422
423**返回值:**
424
425| 类型      | 说明                         |
426| ------- | -------------------------- |
427| boolean | 关闭蓝牙扫描,成功返回true,否则返回false。 |
428
429**示例:**
430
431```js
432let result = bluetooth.stopBluetoothDiscovery();
433```
434
435
436## bluetooth.setDevicePairingConfirmation<sup>8+</sup><a name="setDevicePairingConfirmation"></a>
437
438setDevicePairingConfirmation(device: string, accept: boolean): boolean
439
440设置设备配对请求确认。
441
442**需要权限**:ohos.permission.MANAGE_BLUETOOTH
443
444**系统能力**:SystemCapability.Communication.Bluetooth.Core445
446**参数:**
447
448| 参数名    | 类型      | 必填   | 说明                               |
449| ------ | ------- | ---- | -------------------------------- |
450| device | string  | 是    | 表示远端设备地址,例如:"XX:XX:XX:XX:XX:XX"。 |
451| accept | boolean | 是    | 接受配对请求设置为true,否则设置为false。        |
452
453**返回值:**
454
455| 类型      | 说明                           |
456| ------- | ---------------------------- |
457| boolean | 设置设备配对确认,成功返回true,否则返回false。 |
458
459**示例:**
460
461```js
462// 订阅“pinRequired”配对请求事件,收到远端配对请求后设置配对确认
463function onReceivePinRequiredEvent(data) { // data为配对请求的入参,配对请求参数
464    console.info('pin required  = '+ JSON.stringify(data));
465    bluetooth.setDevicePairingConfirmation(data.deviceId, true);
466}
467bluetooth.on("pinRequired", onReceivePinRequiredEvent);
468```
469
470
471## bluetooth.on('bluetoothDeviceFind')<sup>8+</sup>
472
473on(type: "bluetoothDeviceFind", callback: Callback&lt;Array&lt;string&gt;&gt;): void
474
475订阅蓝牙设备发现上报事件。
476
477**需要权限**:ohos.permission.USE_BLUETOOTH
478
479**系统能力**:SystemCapability.Communication.Bluetooth.Core480
481**参数:**
482
483| 参数名      | 类型                                  | 必填   | 说明                                     |
484| -------- | ----------------------------------- | ---- | -------------------------------------- |
485| type     | string                              | 是    | 填写"bluetoothDeviceFind"字符串,表示蓝牙设备发现事件。 |
486| callback | Callback&lt;Array&lt;string&gt;&gt; | 是    | 表示回调函数的入参,发现的设备集合。回调函数由用户创建通过该接口注册。    |
487
488**返回值:**
489
490491
492**示例:**
493
494```js
495function onReceiveEvent(data) { // data为蓝牙设备地址集合
496    console.info('bluetooth device find = '+ JSON.stringify(data));
497}
498bluetooth.on('bluetoothDeviceFind', onReceiveEvent);
499```
500
501
502## bluetooth.off('bluetoothDeviceFind')<sup>8+</sup>
503
504off(type: "bluetoothDeviceFind", callback?: Callback&lt;Array&lt;string&gt;&gt;): void
505
506取消订阅蓝牙设备发现上报事件。
507
508**需要权限**:ohos.permission.USE_BLUETOOTH
509
510**系统能力**:SystemCapability.Communication.Bluetooth.Core511
512**参数:**
513
514| 参数名      | 类型                                  | 必填   | 说明                                       |
515| -------- | ----------------------------------- | ---- | ---------------------------------------- |
516| type     | string                              | 是    | 填写"bluetoothDeviceFind"字符串,表示蓝牙设备发现事件。   |
517| callback | Callback&lt;Array&lt;string&gt;&gt; | 否    | 表示取消订阅蓝牙设备发现事件上报。不填该参数则取消订阅该type对应的所有回调。 |
518
519**返回值:**
520
521522
523**示例:**
524
525```js
526function onReceiveEvent(data) {
527    console.info('bluetooth device find = '+ JSON.stringify(data));
528}
529bluetooth.on('bluetoothDeviceFind', onReceiveEvent);
530bluetooth.off('bluetoothDeviceFind', onReceiveEvent);
531```
532
533
534## bluetooth.on('pinRequired')<sup>8+</sup>
535
536on(type: "pinRequired", callback: Callback&lt;PinRequiredParam&gt;): void
537
538订阅远端蓝牙设备的配对请求事件。
539
540**需要权限**:ohos.permission.DISCOVER_BLUETOOTH
541
542**系统能力**:SystemCapability.Communication.Bluetooth.Core543
544**参数:**
545
546| 参数名      | 类型                                       | 必填   | 说明                               |
547| -------- | ---------------------------------------- | ---- | -------------------------------- |
548| type     | string                                   | 是    | 填写"pinRequired"字符串,表示配对请求事件。     |
549| callback | Callback&lt;[PinRequiredParam](#pinrequiredparam)&gt; | 是    | 表示回调函数的入参,配对请求。回调函数由用户创建通过该接口注册。 |
550
551**返回值:**
552
553554
555**示例:**
556
557```js
558function onReceiveEvent(data) { // data为配对请求参数
559    console.info('pin required = '+ JSON.stringify(data));
560}
561bluetooth.on('pinRequired', onReceiveEvent);
562```
563
564
565## bluetooth.off('pinRequired')<sup>8+</sup>
566
567off(type: "pinRequired", callback?: Callback&lt;PinRequiredParam&gt;): void
568
569取消订阅远端蓝牙设备的配对请求事件。
570
571**需要权限**:ohos.permission.DISCOVER_BLUETOOTH
572
573**系统能力**:SystemCapability.Communication.Bluetooth.Core574
575**参数:**
576
577| 参数名      | 类型                                       | 必填   | 说明                                       |
578| -------- | ---------------------------------------- | ---- | ---------------------------------------- |
579| type     | string                                   | 是    | 填写"pinRequired"字符串,表示配对请求事件。             |
580| callback | Callback&lt;[PinRequiredParam](#pinrequiredparam)&gt; | 否    | 表示取消订阅蓝牙配对请求事件上报,入参为配对请求参数。不填该参数则取消订阅该type对应的所有回调。 |
581
582**返回值:**
583
584585
586**示例:**
587
588```js
589function onReceiveEvent(data) {
590    console.info('pin required = '+ JSON.stringify(data));
591}
592bluetooth.on('pinRequired', onReceiveEvent);
593bluetooth.off('pinRequired', onReceiveEvent);
594```
595
596
597## bluetooth.on('bondStateChange')<sup>8+</sup>
598
599on(type: "bondStateChange", callback: Callback&lt;BondStateParam&gt;): void
600
601订阅蓝牙配对状态改变事件。
602
603**需要权限**:ohos.permission.USE_BLUETOOTH
604
605**系统能力**:SystemCapability.Communication.Bluetooth.Core606
607**参数:**
608
609| 参数名      | 类型                                       | 必填   | 说明                                   |
610| -------- | ---------------------------------------- | ---- | ------------------------------------ |
611| type     | string                                   | 是    | 填写"bondStateChange"字符串,表示蓝牙配对状态改变事件。 |
612| callback | Callback&lt;[BondStateParam](#BondStateParam)&gt; | 是    | 表示回调函数的入参,配对的状态。回调函数由用户创建通过该接口注册。    |
613
614**返回值:**
615
616617
618**示例:**
619
620```js
621function onReceiveEvent(data) { // data为回调函数入参,表示配对的状态
622    console.info('pair state = '+ JSON.stringify(data));
623}
624bluetooth.on('bondStateChange', onReceiveEvent);
625```
626
627
628## bluetooth.off('bondStateChange')<sup>8+</sup>
629
630off(type: "bondStateChange", callback?: Callback&lt;BondStateParam&gt;): void
631
632取消订阅蓝牙配对状态改变事件。
633
634**需要权限**:ohos.permission.USE_BLUETOOTH
635
636**系统能力**:SystemCapability.Communication.Bluetooth.Core637
638**参数:**
639
640| 参数名      | 类型                                       | 必填   | 说明                                       |
641| -------- | ---------------------------------------- | ---- | ---------------------------------------- |
642| type     | string                                   | 是    | 填写"bondStateChange"字符串,表示蓝牙配对状态改变事件。     |
643| callback | Callback&lt;[BondStateParam](#BondStateParam)&gt; | 否    | 表示取消订阅蓝牙配对状态改变事件上报。不填该参数则取消订阅该type对应的所有回调。 |
644
645**返回值:**
646
647648
649**示例:**
650
651```js
652function onReceiveEvent(data) {
653    console.info('bond state = '+ JSON.stringify(data));
654}
655bluetooth.on('bondStateChange', onReceiveEvent);
656bluetooth.off('bondStateChange', onReceiveEvent);
657```
658
659
660## bluetooth.on('stateChange')<sup>8+</sup>
661
662on(type: "stateChange", callback: Callback&lt;BluetoothState&gt;): void
663
664订阅蓝牙连接状态改变事件。
665
666**需要权限**:ohos.permission.USE_BLUETOOTH
667
668**系统能力**:SystemCapability.Communication.Bluetooth.Core669
670**参数:**
671
672| 参数名      | 类型                                       | 必填   | 说明                               |
673| -------- | ---------------------------------------- | ---- | -------------------------------- |
674| type     | string                                   | 是    | 填写"stateChange"字符串,表示蓝牙状态改变事件。   |
675| callback | Callback&lt;[BluetoothState](#bluetoothstate)&gt; | 是    | 表示回调函数的入参,蓝牙状态。回调函数由用户创建通过该接口注册。 |
676
677**返回值:**
678
679680
681**示例:**
682
683```js
684function onReceiveEvent(data) {
685    console.info('bluetooth state = '+ JSON.stringify(data));
686}
687bluetooth.on('stateChange', onReceiveEvent);
688```
689
690
691## bluetooth.off('stateChange')<sup>8+</sup>
692
693off(type: "stateChange", callback?: Callback&lt;BluetoothState&gt;): void
694
695取消订阅蓝牙连接状态改变事件。
696
697**需要权限**:ohos.permission.USE_BLUETOOTH
698
699**系统能力**:SystemCapability.Communication.Bluetooth.Core700
701**参数:**
702
703| 参数名      | 类型                                       | 必填   | 说明                                       |
704| -------- | ---------------------------------------- | ---- | ---------------------------------------- |
705| type     | string                                   | 是    | 填写"stateChange"字符串,表示蓝牙状态改变事件。           |
706| callback | Callback&lt;[BluetoothState](#bluetoothstate)&gt; | 否    | 表示取消订阅蓝牙状态改变事件上报。不填该参数则取消订阅该type对应的所有回调。 |
707
708**返回值:**
709
710711
712**示例:**
713
714```js
715function onReceiveEvent(data) {
716    console.info('bluetooth state = '+ JSON.stringify(data));
717}
718bluetooth.on('stateChange', onReceiveEvent);
719bluetooth.off('stateChange', onReceiveEvent);
720```
721
722
723## bluetooth.sppListen<sup>8+</sup><a name="sppListen"></a>
724
725sppListen(name: string, option: SppOption, callback: AsyncCallback&lt;number&gt;): void
726
727创建一个服务端监听Socket。
728
729**需要权限**:ohos.permission.USE_BLUETOOTH
730
731**系统能力**:SystemCapability.Communication.Bluetooth.Core732
733**参数:**
734
735| 参数名      | 类型                          | 必填   | 说明                      |
736| -------- | --------------------------- | ---- | ----------------------- |
737| name     | string                      | 是    | 服务的名称。                  |
738| option   | [SppOption](#sppoption)     | 是    | spp监听配置参数。              |
739| callback | AsyncCallback&lt;number&gt; | 是    | 表示回调函数的入参,服务端Socket的id。 |
740
741**示例:**
742
743```js
744let serverNumber = -1;
745function serverSocket(code, number) {
746  console.log('bluetooth error code: ' + code.code);
747  if (code.code == 0) {
748    console.log('bluetooth serverSocket Number: ' + number);
749    serverNumber = number;
750  }
751}
752
753let sppOption = {uuid: '00001810-0000-1000-8000-00805F9B34FB', secure: false, type: 0};
754bluetooth.sppListen('server1', sppOption, serverSocket);
755```
756
757
758## bluetooth.sppAccept<sup>8+</sup><a name="sppAccept"></a>
759
760sppAccept(serverSocket: number, callback: AsyncCallback&lt;number&gt;): void
761
762服务端监听socket等待客户端连接。
763
764**系统能力**:SystemCapability.Communication.Bluetooth.Core765
766**参数:**
767
768| 参数名          | 类型                          | 必填   | 说明                      |
769| ------------ | --------------------------- | ---- | ----------------------- |
770| serverSocket | number                      | 是    | 服务端socket的id。           |
771| callback     | AsyncCallback&lt;number&gt; | 是    | 表示回调函数的入参,客户端socket的id。 |
772
773**示例:**
774
775```js
776let serverNumber = -1;
777function serverSocket(code, number) {
778  console.log('bluetooth error code: ' + code.code);
779  if (code.code == 0) {
780    console.log('bluetooth serverSocket Number: ' + number);
781    serverNumber = number;
782  }
783}
784let clientNumber = -1;
785function acceptClientSocket(code, number) {
786  console.log('bluetooth error code: ' + code.code);
787  if (code.code == 0) {
788    console.log('bluetooth clientSocket Number: ' + number);
789    // 获取的clientNumber用作服务端后续读/写操作socket的id。
790    clientNumber = number;
791  }
792}
793bluetooth.sppAccept(serverNumber, acceptClientSocket);
794```
795
796
797## bluetooth.sppConnect<sup>8+</sup><a name="sppConnect"></a>
798
799sppConnect(device: string, option: SppOption, callback: AsyncCallback&lt;number&gt;): void
800
801客户端向远端设备发起spp连接。
802
803**需要权限**:ohos.permission.USE_BLUETOOTH
804
805**系统能力**:SystemCapability.Communication.Bluetooth.Core806
807**参数:**
808
809| 参数名      | 类型                          | 必填   | 说明                             |
810| -------- | --------------------------- | ---- | ------------------------------ |
811| device   | string                      | 是    | 对端设备地址,例如:"XX:XX:XX:XX:XX:XX"。 |
812| option   | [SppOption](#sppoption)     | 是    | spp客户端连接配置参数。                  |
813| callback | AsyncCallback&lt;number&gt; | 是    | 表示回调函数的入参,客户端socket的id。        |
814
815**示例:**
816
817```js
818let clientNumber = -1;
819function clientSocket(code, number) {
820  if (code.code != 0) {
821    return;
822  }
823  console.log('bluetooth serverSocket Number: ' + number);
824  // 获取的clientNumber用作客户端后续读/写操作socket的id。
825  clientNumber = number;
826}
827let sppOption = {uuid: '00001810-0000-1000-8000-00805F9B34FB', secure: false, type: 0};
828bluetooth.sppConnect('XX:XX:XX:XX:XX:XX', sppOption, clientSocket);
829```
830
831
832## bluetooth.sppCloseServerSocket<sup>8+</sup><a name="sppCloseServerSocket"></a>
833
834sppCloseServerSocket(socket: number): void
835
836关闭服务端监听Socket,入参socket由sppListen接口返回。
837
838**系统能力**:SystemCapability.Communication.Bluetooth.Core839
840**参数:**
841
842| 参数名    | 类型     | 必填   | 说明              |
843| ------ | ------ | ---- | --------------- |
844| socket | number | 是    | 服务端监听socket的id。 |
845
846**示例:**
847
848```js
849let serverNumber = -1;
850function serverSocket(code, number) {
851  console.log('bluetooth error code: ' + code.code);
852  if (code.code == 0) {
853    console.log('bluetooth serverSocket Number: ' + number);
854    serverNumber = number;
855  }
856}
857bluetooth.sppCloseServerSocket(serverNumber);
858```
859
860
861## bluetooth.sppCloseClientSocket<sup>8+</sup><a name="sppCloseClientSocket"></a>
862
863sppCloseClientSocket(socket: number): void
864
865关闭客户端socket,入参socket由sppAccept或sppConnect接口获取。
866
867**系统能力**:SystemCapability.Communication.Bluetooth.Core868
869**参数:**
870
871| 参数名    | 类型     | 必填   | 说明            |
872| ------ | ------ | ---- | ------------- |
873| 参数名    | 类型     | 必填   | 说明            |
874| socket | number | 是    | 客户端socket的id。 |
875
876**示例:**
877
878```js
879let clientNumber = -1;
880function clientSocket(code, number) {
881  if (code.code != 0) {
882    return;
883  }
884  console.log('bluetooth serverSocket Number: ' + number);
885  // 获取的clientNumber用作客户端后续读/写操作socket的id。
886  clientNumber = number;
887}
888bluetooth.sppCloseClientSocket(clientNumber);
889```
890
891
892## bluetooth.sppWrite<sup>8+</sup><a name="sppWrite"></a>
893
894sppWrite(clientSocket: number, data: ArrayBuffer): boolean
895
896通过socket向远端发送数据,入参clientSocket由sppAccept或sppConnect接口获取 。
897
898**系统能力**:SystemCapability.Communication.Bluetooth.Core899
900**参数:**
901
902| 参数名          | 类型          | 必填   | 说明            |
903| ------------ | ----------- | ---- | ------------- |
904| clientSocket | number      | 是    | 客户端socket的id。 |
905| data         | ArrayBuffer | 是    | 写入的数据。        |
906
907**返回值:**
908
909| 类型      | 说明                        |
910| ------- | ------------------------- |
911| boolean | 写数据操作,成功返回true,否则返回false。 |
912
913**示例:**
914
915```js
916let clientNumber = -1;
917function clientSocket(code, number) {
918  if (code.code != 0) {
919    return;
920  }
921  console.log('bluetooth serverSocket Number: ' + number);
922  // 获取的clientNumber用作客户端后续读/写操作socket的id。
923  clientNumber = number;
924}
925let arrayBuffer = new ArrayBuffer(8);
926let data = new Uint8Array(arrayBuffer);
927data[0] = 123;
928let ret = bluetooth.sppWrite(clientNumber, arrayBuffer);
929if (ret) {
930  console.log('spp write successfully');
931} else {
932  console.log('spp write failed');
933}
934```
935
936
937## bluetooth.on('sppRead')<sup>8+</sup>
938
939on(type: "sppRead", clientSocket: number, callback: Callback&lt;ArrayBuffer&gt;): void
940
941订阅spp读请求事件,入参clientSocket由sppAccept或sppConnect接口获取。
942
943**系统能力**:SystemCapability.Communication.Bluetooth.Core944
945**参数:**
946
947| 参数名          | 类型                          | 必填   | 说明                         |
948| ------------ | --------------------------- | ---- | -------------------------- |
949| type         | string                      | 是    | 填写"sppRead"字符串,表示spp读请求事件。 |
950| clientSocket | number                      | 是    | 客户端socket的id。              |
951| callback     | Callback&lt;ArrayBuffer&gt; | 是    | 表示回调函数的入参,读取到的数据。          |
952
953**返回值:**
954
955956
957**示例:**
958
959```js
960let clientNumber = -1;
961function clientSocket(code, number) {
962  if (code.code != 0) {
963    return;
964  }
965  console.log('bluetooth serverSocket Number: ' + number);
966  // 获取的clientNumber用作客户端后续读/写操作socket的id。
967  clientNumber = number;
968}
969function dataRead(dataBuffer) {
970  let data = new Uint8Array(dataBuffer);
971  console.log('bluetooth data is: ' + data[0]);
972}
973bluetooth.on('sppRead', clientNumber, dataRead);
974```
975
976
977## bluetooth.off('sppRead')<sup>8+</sup>
978
979off(type: "sppRead", clientSocket: number, callback?: Callback&lt;ArrayBuffer&gt;): void
980
981取消订阅spp读请求事件,入参clientSocket由sppAccept或sppConnect接口获取。
982
983**系统能力**:SystemCapability.Communication.Bluetooth.Core984
985**参数:**
986
987| 参数名          | 类型                          | 必填   | 说明                                       |
988| ------------ | --------------------------- | ---- | ---------------------------------------- |
989| type         | string                      | 是    | 填写"sppRead"字符串,表示spp读请求事件。               |
990| clientSocket | number                      | 是    | 客户端Socket的id。                            |
991| callback     | Callback&lt;ArrayBuffer&gt; | 否    | 表示取消订阅spp读请求事件上报。不填该参数则取消订阅该type对应的所有回调。 |
992
993**返回值:**
994
995996
997**示例:**
998
999```js
1000let clientNumber = -1;
1001function clientSocket(code, number) {
1002  if (code.code != 0) {
1003    return;
1004  }
1005  console.log('bluetooth serverSocket Number: ' + number);
1006  // 获取的clientNumber用作客户端后续读/写操作socket的id。
1007  clientNumber = number;
1008}
1009bluetooth.off('sppRead', clientNumber);
1010```
1011
1012
1013## bluetooth.getProfile<sup>8+</sup><a name="getProfile"></a>
1014
1015getProfile(profileId: ProfileId): A2dpSourceProfile | HandsFreeAudioGatewayProfile
1016
1017通过ProfileId,获取profile的对象实例。
1018
1019**系统能力**:SystemCapability.Communication.Bluetooth.Core1020
1021**参数:**
1022
1023| 参数名       | 类型        | 必填   | 说明                                    |
1024| --------- | --------- | ---- | ------------------------------------- |
1025| ProfileId | profileId | 是    | 表示profile的枚举值,例如:PROFILE_A2DP_SOURCE。 |
1026
1027**返回值:**
1028
1029| 类型                                       | 说明                                       |
1030| ---------------------------------------- | ---------------------------------------- |
1031| A2dpSourceProfile 或者 HandsFreeAudioGatewayProfile | 对应的profile的对象实例,当前支持A2dpSourceProfile, HandsFreeAudioGatewayProfile。 |
1032
1033**示例:**
1034
1035```js
1036let a2dpSrc = bluetooth.getProfile(PROFILE_A2DP_SOURCE);
1037```
1038
1039
1040## bluetooth.BLE
1041
1042### bluetooth.BLE.createGattServer
1043
1044createGattServer(): GattServer
1045
1046创建一个可使用的GattServer实例。
1047
1048**系统能力**:SystemCapability.Communication.Bluetooth.Core1049
1050**返回值:**
1051
1052| 类型                        | 说明                                   |
1053| ------------------------- | ------------------------------------ |
1054| [GattServer](#gattserver) | server端类,使用server端方法之前需要创建该类的实例进行操作。 |
1055
1056**示例:**
1057
1058```js
1059let gattServer = bluetooth.BLE.createGattServer();
1060```
1061
1062
1063### bluetooth.BLE.createGattClientDevice
1064
1065createGattClientDevice(deviceId: string): GattClientDevice
1066
1067创建一个可使用的GattClientDevice实例。
1068
1069**系统能力**:SystemCapability.Communication.Bluetooth.Core1070
1071**参数:**
1072
1073| 参数名      | 类型     | 必填   | 说明                                   |
1074| -------- | ------ | ---- | ------------------------------------ |
1075| deviceId | string | 是    | 对端设备地址,&nbsp;例如:"XX:XX:XX:XX:XX:XX"。 |
1076
1077**返回值:**
1078
1079| 类型                                    | 说明                                   |
1080| ------------------------------------- | ------------------------------------ |
1081| [GattClientDevice](#gattclientdevice) | client端类,使用client端方法之前需要创建该类的实例进行操作。 |
1082
1083**示例:**
1084
1085```js
1086let device = bluetooth.BLE.createGattClientDevice('XX:XX:XX:XX:XX:XX');
1087```
1088
1089
1090### bluetooth.BLE.getConnectedBLEDevices
1091
1092getConnectedBLEDevices(): Array&lt;string&gt;
1093
1094获取和当前设备连接的BLE设备。
1095
1096**需要权限**:ohos.permission.USE_BLUETOOTH
1097
1098**系统能力**:SystemCapability.Communication.Bluetooth.Core1099
1100**返回值:**
1101
1102| 类型                  | 说明                  |
1103| ------------------- | ------------------- |
1104| Array&lt;string&gt; | 返回当前设备作为Server端时连接BLE设备地址集合。 |
1105
1106**示例:**
1107
1108```js
1109let result = bluetooth.BLE.getConnectedBLEDevices();
1110```
1111
1112
1113### bluetooth.BLE.startBLEScan
1114
1115startBLEScan(filters: Array&lt;ScanFilter&gt;, options?: ScanOptions): void
1116
1117发起BLE扫描流程。
1118
1119**需要权限**:ohos.permission.DISCOVER_BLUETOOTHohos.permission.MANAGE_BLUETOOTHohos.permission.LOCATION
1120
1121**系统能力**:SystemCapability.Communication.Bluetooth.Core1122
1123**参数:**
1124
1125| 参数名     | 类型                                     | 必填   | 说明                                  |
1126| ------- | -------------------------------------- | ---- | ----------------------------------- |
1127| filters | Array&lt;[ScanFilter](#scanfilter)&gt; | 是    | 表示扫描结果过滤策略集合,如果不使用过滤的方式,该参数设置为null。 |
1128| options | [ScanOptions](#scanoptions)            | 否    | 表示扫描的参数配置,可选参数。                     |
1129
1130**返回值:**
1131
11321133
1134**示例:**
1135
1136```js
1137function onReceiveEvent(data) {
1138    console.info('BLE scan device find result = '+ JSON.stringify(data));
1139}
1140bluetooth.BLE.on("BLEDeviceFind", onReceiveEvent);
1141bluetooth.BLE.startBLEScan(
1142    [{
1143        deviceId:"XX:XX:XX:XX:XX:XX",
1144        name:"test",
1145        serviceUuid:"00001888-0000-1000-8000-00805f9b34fb"
1146    }],
1147    {
1148        interval: 500,
1149        dutyMode: bluetooth.ScanDuty.SCAN_MODE_LOW_POWER,
1150        matchMode: bluetooth.MatchMode.MATCH_MODE_AGGRESSIVE,
1151    }
1152);
1153```
1154
1155
1156### bluetooth.BLE.stopBLEScan
1157
1158stopBLEScan(): void
1159
1160停止BLE扫描流程。
1161
1162**需要权限**:ohos.permission.DISCOVER_BLUETOOTH
1163
1164**系统能力**:SystemCapability.Communication.Bluetooth.Core1165
1166**返回值:**
1167
11681169
1170**示例:**
1171
1172```js
1173bluetooth.BLE.stopBLEScan();
1174```
1175
1176
1177### bluetooth.BLE.on('BLEDeviceFind')
1178
1179on(type: "BLEDeviceFind", callback: Callback&lt;Array&lt;ScanResult&gt;&gt;): void
1180
1181订阅BLE设备发现上报事件。
1182
1183**需要权限**:ohos.permission.USE_BLUETOOTH
1184
1185**系统能力**:SystemCapability.Communication.Bluetooth.Core1186
1187**参数:**
1188
1189| 参数名      | 类型                                       | 必填   | 说明                                  |
1190| -------- | ---------------------------------------- | ---- | ----------------------------------- |
1191| type     | string                                   | 是    | 填写"BLEDeviceFind"字符串,表示BLE设备发现事件。   |
1192| callback | Callback&lt;Array&lt;[ScanResult](#scanresult)&gt;&gt; | 是    | 表示回调函数的入参,发现的设备集合。回调函数由用户创建通过该接口注册。 |
1193
1194**返回值:**
1195
11961197
1198**示例:**
1199
1200```js
1201function onReceiveEvent(data) {
1202    console.info('bluetooth device find = '+ JSON.stringify(data));
1203}
1204bluetooth.BLE.on('BLEDeviceFind', onReceiveEvent);
1205```
1206
1207
1208### bluetooth.BLE.off('BLEDeviceFind')
1209
1210off(type: "BLEDeviceFind", callback?: Callback&lt;Array&lt;ScanResult&gt;&gt;): void
1211
1212取消订阅BLE设备发现上报事件。
1213
1214**需要权限**:ohos.permission.USE_BLUETOOTH
1215
1216**系统能力**:SystemCapability.Communication.Bluetooth.Core1217
1218**参数:**
1219
1220| 参数名      | 类型                                       | 必填   | 说明                                       |
1221| -------- | ---------------------------------------- | ---- | ---------------------------------------- |
1222| type     | string                                   | 是    | 填写"BLEDeviceFind"字符串,表示BLE设备发现事件。        |
1223| callback | Callback&lt;Array&lt;[ScanResult](#scanresult)&gt;&gt; | 否    | 表示取消订阅BLE设备发现事件上报。不填该参数则取消订阅该type对应的所有回调。 |
1224
1225**返回值:**
1226
12271228
1229**示例:**
1230
1231```js
1232function onReceiveEvent(data) {
1233    console.info('bluetooth device find = '+ JSON.stringify(data));
1234}
1235bluetooth.BLE.on('BLEDeviceFind', onReceiveEvent);
1236bluetooth.BLE.off('BLEDeviceFind', onReceiveEvent);
1237```
1238
1239
1240## BaseProfile
1241
1242profile基类。
1243
1244
1245### getConnectionDevices<sup>8+</sup><a name="getConnectionDevices"></a>
1246
1247getConnectionDevices(): Array&lt;string&gt;
1248
1249获取已连接设备列表。
1250
1251**需要权限**:ohos.permission.USE_BLUETOOTH
1252
1253**系统能力**:SystemCapability.Communication.Bluetooth.Core1254
1255**参数:**
1256
12571258
1259**返回值:**
1260
1261|  类型                   |   说明             |
1262| ------------------- | ------------- |
1263| Array&lt;string&gt; | 返回已连接设备的地址列表。 |
1264
1265
1266### getDeviceState<sup>8+</sup><a name="getDeviceState"></a>
1267
1268getDeviceState(device: string): ProfileConnectionState
1269
1270获取设备profile的连接状态。
1271
1272**需要权限**:ohos.permission.USE_BLUETOOTH
1273
1274**系统能力**:SystemCapability.Communication.Bluetooth.Core1275
1276**参数:**
1277
1278| 参数名    | 类型     | 必填   | 说明      |
1279| ------ | ------ | ---- | ------- |
1280| device | string | 是    | 远端设备地址。 |
1281
1282**返回值:**
1283
1284|   类型                                                | 说明                        |
1285| ------------------------------------------------- | ----------------------- |
1286| [ProfileConnectionState](#profileconnectionstate) | 返回profile的连接状态。 |
1287
1288
1289## A2dpSourceProfile
1290
1291使用A2dpSourceProfile方法之前需要创建该类的实例进行操作,通过getProfile()方法构造此实例。
1292
1293
1294### connect<sup>8+</sup><a name="a2dp-connect"></a>
1295
1296connect(device: string): boolean
1297
1298发起设备的A2dp服务连接请求。
1299
1300**需要权限**:ohos.permission.DISCOVER_BLUETOOTH
1301
1302**系统能力**:SystemCapability.Communication.Bluetooth.Core1303
1304**参数:**
1305
1306| 参数名    | 类型     | 必填   | 说明      |
1307| ------ | ------ | ---- | ------- |
1308| device | string | 是    | 远端设备地址。 |
1309
1310**返回值:**
1311
1312| 类型      | 说明                  |
1313| ------- | ------------------- |
1314| boolean | 成功返回true,失败返回false。 |
1315
1316**示例:**
1317
1318```js
1319let a2dpSrc = bluetooth.getProfile(bluetooth.ProfileId.PROFILE_A2DP_SOURCE)
1320let ret = a2dpSrc.connect('XX:XX:XX:XX:XX:XX');
1321```
1322
1323
1324### disconnect<sup>8+</sup><a name="a2dp-disconnect"></a>
1325
1326disconnect(device: string): boolean
1327
1328断开设备的a2dp服务连接。
1329
1330**需要权限**:ohos.permission.DISCOVER_BLUETOOTH
1331
1332**系统能力**:SystemCapability.Communication.Bluetooth.Core1333
1334**参数:**
1335
1336| 参数名    | 类型     | 必填   | 说明      |
1337| ------ | ------ | ---- | ------- |
1338| device | string | 是    | 远端设备地址。 |
1339
1340
1341**返回值:**
1342
1343| 类型      | 说明                  |
1344| ------- | ------------------- |
1345| boolean | 成功返回true,失败返回false。 |
1346
1347**示例:**
1348
1349```js
1350let a2dpSrc = bluetooth.getProfile(bluetooth.ProfileId.PROFILE_A2DP_SOURCE);
1351let ret = a2dpSrc.disconnect('XX:XX:XX:XX:XX:XX');
1352```
1353
1354
1355### A2dpSourceProfile.on('connectionStateChange')<sup>8+</sup>
1356
1357on(type: "connectionStateChange", callback: Callback&lt;[StateChangeParam](#StateChangeParam)&gt;): void
1358
1359订阅a2dp连接状态变化事件。
1360
1361**系统能力**:SystemCapability.Communication.Bluetooth.Core1362
1363**参数:**
1364
1365| 参数名      | 类型                                       | 必填   | 说明                                       |
1366| -------- | ---------------------------------------- | ---- | ---------------------------------------- |
1367| type     | string                                   | 是    | 填写"connectionStateChange"字符串,表示连接状态变化事件。 |
1368| callback | Callback&lt;[StateChangeParam](#StateChangeParam)&gt; | 是    | 表示回调函数的入参。                               |
1369
1370**返回值:**
1371
13721373
1374**示例:**
1375
1376```js
1377function onReceiveEvent(data) {
1378    console.info('a2dp state = '+ JSON.stringify(data));
1379}
1380A2dpSourceProfile.on('connectionStateChange', onReceiveEvent);
1381```
1382
1383
1384### A2dpSourceProfile.off('connectionStateChange')<sup>8+</sup>
1385
1386off(type: "connectionStateChange", callback?: Callback&lt;[StateChangeParam](#StateChangeParam)&gt;): void
1387
1388取消订阅a2dp连接状态变化事件。
1389
1390**系统能力**:SystemCapability.Communication.Bluetooth.Core1391
1392**参数:**
1393
1394| 参数名      | 类型                                       | 必填   | 说明                                       |
1395| -------- | ---------------------------------------- | ---- | ---------------------------------------- |
1396| type     | string                                   | 是    | 填写"connectionStateChange"字符串,表示连接状态变化事件。 |
1397| callback | Callback&lt;[StateChangeParam](#StateChangeParam)&gt; | 是    | 表示回调函数的入参。                               |
1398
1399**返回值:**
1400
14011402
1403**示例:**
1404
1405```js
1406function onReceiveEvent(data) {
1407    console.info('a2dp state = '+ JSON.stringify(data));
1408}
1409A2dpSourceProfile.off('connectionStateChange', onReceiveEvent);
1410```
1411
1412
1413### getPlayingState<sup>9+</sup>
1414
1415getPlayingState(device: string): PlayingState
1416
1417获取设备的播放状态。
1418
1419**需要权限**:ohos.permission.USE_BLUETOOTH
1420
1421**系统能力**:SystemCapability.Communication.Bluetooth.Core1422
1423**参数:**
1424
1425| 参数名    | 类型     | 必填   | 说明      |
1426| ------ | ------ | ---- | ------- |
1427| device | string | 是    | 远端设备地址。 |
1428
1429**返回值:**
1430
1431| 类型                            | 说明         |
1432| ----------------------------- | ---------- |
1433| [PlayingState](#PlayingState) | 远端设备的播放状态。 |
1434
1435**示例:**
1436
1437```js
1438let a2dpSrc = bluetooth.getProfile(bluetooth.ProfileId.PROFILE_A2DP_SOURCE);
1439let state = a2dpSrc.getPlayingState('XX:XX:XX:XX:XX:XX');
1440```
1441
1442
1443## HandsFreeAudioGatewayProfile
1444
1445使用HandsFreeAudioGatewayProfile方法之前需要创建该类的实例进行操作,通过getProfile()方法构造此实例。
1446
1447
1448### connect<sup>8+</sup><a name="hfp-connect"></a>
1449
1450connect(device: string): boolean
1451
1452连接设备的HFP服务。
1453
1454**需要权限**:ohos.permission.DISCOVER_BLUETOOTH
1455
1456**系统能力**:SystemCapability.Communication.Bluetooth.Core1457
1458**参数:**
1459
1460| 参数名    | 类型     | 必填   | 说明      |
1461| ------ | ------ | ---- | ------- |
1462| device | string | 是    | 远端设备地址。 |
1463
1464
1465**返回值:**
1466
1467| 类型      | 说明                  |
1468| ------- | ------------------- |
1469| boolean | 成功返回true,失败返回false。 |
1470
1471**示例:**
1472
1473```js
1474let hfpAg = bluetooth.getProfile(bluetooth.ProfileId.PROFILE_HANDS_FREE_AUDIO_GATEWAY);
1475let ret = hfpAg.connect('XX:XX:XX:XX:XX:XX');
1476```
1477
1478
1479### disconnect<sup>8+</sup><a name="hfp-disconnect"></a>
1480
1481disconnect(device: string): boolean
1482
1483断开连接设备的HFP服务。
1484
1485**需要权限**:ohos.permission.DISCOVER_BLUETOOTH
1486
1487**系统能力**:SystemCapability.Communication.Bluetooth.Core1488
1489**参数:**
1490
1491| 参数名    | 类型     | 必填   | 说明      |
1492| ------ | ------ | ---- | ------- |
1493| device | string | 是    | 远端设备地址。 |
1494
1495
1496**返回值:**
1497
1498| 类型      | 说明                  |
1499| ------- | ------------------- |
1500| boolean | 成功返回true,失败返回false。 |
1501
1502**示例:**
1503
1504```js
1505let hfpAg = bluetooth.getProfile(bluetooth.ProfileId.PROFILE_HANDS_FREE_AUDIO_GATEWAY);
1506let ret = hfpAg.disconnect('XX:XX:XX:XX:XX:XX');
1507```
1508
1509
1510### HandsFreeAudioGatewayProfile.on('connectionStateChange')<sup>8+</sup>
1511
1512on(type: "connectionStateChange", callback: Callback&lt;[StateChangeParam](#StateChangeParam)&gt;): void
1513
1514订阅HFP连接状态变化事件。
1515
1516**系统能力**:SystemCapability.Communication.Bluetooth.Core1517
1518**参数:**
1519
1520| 参数名      | 类型                                       | 必填   | 说明                                       |
1521| -------- | ---------------------------------------- | ---- | ---------------------------------------- |
1522| type     | string                                   | 是    | 填写"connectionStateChange"字符串,表示连接状态变化事件。 |
1523| callback | Callback&lt;[StateChangeParam](#StateChangeParam)&gt; | 是    | 表示回调函数的入参。                               |
1524
1525**返回值:**
1526
15271528
1529**示例:**
1530
1531```js
1532function onReceiveEvent(data) {
1533    console.info('hfp state = '+ JSON.stringify(data));
1534}
1535HandsFreeAudioGatewayProfile.on('connectionStateChange', onReceiveEvent);
1536```
1537
1538
1539### HandsFreeAudioGatewayProfile.off('connectionStateChange')<sup>8+</sup>
1540
1541off(type: "connectionStateChange", callback?: Callback&lt;[StateChangeParam](#StateChangeParam)&gt;): void
1542
1543取消订阅HFP连接状态变化事件。
1544
1545**系统能力**:SystemCapability.Communication.Bluetooth.Core1546
1547**参数:**
1548
1549| 参数名      | 类型                                       | 必填   | 说明                                       |
1550| -------- | ---------------------------------------- | ---- | ---------------------------------------- |
1551| type     | string                                   | 是    | 填写"connectionStateChange"字符串,表示连接状态变化事件。 |
1552| callback | Callback&lt;[StateChangeParam](#StateChangeParam)&gt; | 是    | 表示回调函数的入参。                               |
1553
1554**返回值:**
1555
15561557
1558**示例:**
1559
1560```js
1561function onReceiveEvent(data) {
1562    console.info('hfp state = '+ JSON.stringify(data));
1563}
1564HandsFreeAudioGatewayProfile.off('connectionStateChange', onReceiveEvent);
1565```
1566
1567
1568## GattServer
1569
1570server端类,使用server端方法之前需要创建该类的实例进行操作,通过createGattServer()方法构造此实例。
1571
1572
1573### startAdvertising
1574
1575startAdvertising(setting: AdvertiseSetting, advData: AdvertiseData, advResponse?: AdvertiseData): void
1576
1577开始发送BLE广播。
1578
1579**需要权限**:ohos.permission.DISCOVER_BLUETOOTH
1580
1581**系统能力**:SystemCapability.Communication.Bluetooth.Core1582
1583**参数:**
1584
1585| 参数名         | 类型                                    | 必填   | 说明             |
1586| ----------- | ------------------------------------- | ---- | -------------- |
1587| setting     | [AdvertiseSetting](#advertisesetting) | 是    | BLE广播的相关参数。    |
1588| advData     | [AdvertiseData](#advertisedata)       | 是    | BLE广播包内容。      |
1589| advResponse | [AdvertiseData](#advertisedata)       | 否    | BLE回复扫描请求回复响应。 |
1590
1591**返回值:**
1592
15931594
1595**示例:**
1596
1597```js
1598let manufactureValueBuffer = new Uint8Array(4);
1599manufactureValueBuffer[0] = 1;
1600manufactureValueBuffer[1] = 2;
1601manufactureValueBuffer[2] = 3;
1602manufactureValueBuffer[3] = 4;
1603
1604let serviceValueBuffer = new Uint8Array(4);
1605serviceValueBuffer[0] = 4;
1606serviceValueBuffer[1] = 6;
1607serviceValueBuffer[2] = 7;
1608serviceValueBuffer[3] = 8;
1609console.info('manufactureValueBuffer = '+ JSON.stringify(manufactureValueBuffer));
1610console.info('serviceValueBuffer = '+ JSON.stringify(serviceValueBuffer));
1611let gattServer = bluetooth.BLE.createGattServer();
1612gattServer.startAdvertising({
1613            interval:150,
1614            txPower:60,
1615            connectable:true,
1616        },{
1617            serviceUuids:["00001888-0000-1000-8000-00805f9b34fb"],
1618            manufactureData:[{
1619                 manufactureId:4567,
1620                 manufactureValue:manufactureValueBuffer.buffer
1621            }],
1622            serviceData:[{
1623                 serviceUuid:"00001888-0000-1000-8000-00805f9b34fb",
1624                 serviceValue:serviceValueBuffer.buffer
1625            }],
1626        },{
1627            serviceUuids:["00001889-0000-1000-8000-00805f9b34fb"],
1628            manufactureData:[{
1629                 manufactureId:1789,
1630                 manufactureValue:manufactureValueBuffer.buffer
1631            }],
1632            serviceData:[{
1633                 serviceUuid:"00001889-0000-1000-8000-00805f9b34fb",
1634                 serviceValue:serviceValueBuffer.buffer
1635            }],
1636});
1637```
1638
1639
1640### stopAdvertising
1641
1642stopAdvertising(): void
1643
1644停止发送BLE广播。
1645
1646**需要权限**:ohos.permission.DISCOVER_BLUETOOTH
1647
1648**系统能力**:SystemCapability.Communication.Bluetooth.Core1649
1650**返回值:**
1651
16521653
1654**示例:**
1655
1656```js
1657let server = bluetooth.BLE.createGattServer();
1658server.stopAdvertising();
1659```
1660
1661
1662### addService
1663
1664addService(service: GattService): boolean
1665
1666server端添加服务。
1667
1668**需要权限**:ohos.permission.USE_BLUETOOTH
1669
1670**系统能力**:SystemCapability.Communication.Bluetooth.Core1671
1672**参数:**
1673
1674| 参数名     | 类型                          | 必填   | 说明                       |
1675| ------- | --------------------------- | ---- | ------------------------ |
1676| service | [GattService](#gattservice) | 是    | 服务端的service数据。BLE广播的相关参数 |
1677
1678**返回值:**
1679
1680| 类型      | 说明                         |
1681| ------- | -------------------------- |
1682| boolean | 添加服务操作,成功返回true,否则返回false。 |
1683
1684**示例:**
1685
1686```js
1687// 创建descriptors
1688let descriptors = [];
1689let arrayBuffer = new ArrayBuffer(8);
1690let descV = new Uint8Array(arrayBuffer);
1691descV[0] = 11;
1692let descriptor = {serviceUuid: '00001810-0000-1000-8000-00805F9B34FB',
1693  characteristicUuid: '00001820-0000-1000-8000-00805F9B34FB',
1694  descriptorUuid: '00002902-0000-1000-8000-00805F9B34FB', descriptorValue: arrayBuffer};
1695descriptors[0] = descriptor;
1696
1697// 创建characteristics
1698let characteristics = [];
1699let arrayBufferC = new ArrayBuffer(8);
1700let cccV = new Uint8Array(arrayBufferC);
1701cccV[0] = 1;
1702let characteristic = {serviceUuid: '00001810-0000-1000-8000-00805F9B34FB',
1703  characteristicUuid: '00001820-0000-1000-8000-00805F9B34FB', characteristicValue: arrayBufferC, descriptors:descriptors};
1704let characteristicN = {serviceUuid: '00001810-0000-1000-8000-00805F9B34FB',
1705  characteristicUuid: '00001821-0000-1000-8000-00805F9B34FB', characteristicValue: arrayBufferC, descriptors:descriptors};
1706characteristics[0] = characteristic;
1707
1708// 创建gattService
1709let gattService = {serviceUuid:'00001810-0000-1000-8000-00805F9B34FB', isPrimary: true, characteristics:characteristics, includeServices:[]};
1710
1711let gattServer = bluetooth.BLE.createGattServer();
1712let ret = gattServer.addService(gattService);
1713if (ret) {
1714   console.log("add service successfully");
1715} else {
1716   console.log("add service failed");
1717}
1718```
1719
1720
1721### removeService
1722
1723removeService(serviceUuid: string): boolean
1724
1725删除已添加的服务。
1726
1727**需要权限**:ohos.permission.USE_BLUETOOTH
1728
1729**系统能力**:SystemCapability.Communication.Bluetooth.Core1730
1731**参数:**
1732
1733| 参数名         | 类型     | 必填   | 说明                                       |
1734| ----------- | ------ | ---- | ---------------------------------------- |
1735| serviceUuid | string | 是    | service的UUID,例如“00001810-0000-1000-8000-00805F9B34FB”。 |
1736
1737**返回值:**
1738
1739| 类型      | 说明                         |
1740| ------- | -------------------------- |
1741| boolean | 删除服务操作,成功返回true,否则返回false。 |
1742
1743**示例:**
1744
1745```js
1746let server = bluetooth.BLE.createGattServer();
1747server.removeService('00001810-0000-1000-8000-00805F9B34FB');
1748```
1749
1750
1751### close
1752
1753close(): void
1754
1755关闭服务端功能,去注册server在协议栈的注册,调用该接口后[GattServer](#gattserver)实例将不能再使用。
1756
1757**需要权限**:ohos.permission.USE_BLUETOOTH
1758
1759**系统能力**:SystemCapability.Communication.Bluetooth.Core1760
1761**示例:**
1762
1763```js
1764let server = bluetooth.BLE.createGattServer();
1765server.close();
1766```
1767
1768
1769### notifyCharacteristicChanged
1770
1771notifyCharacteristicChanged(deviceId: string, notifyCharacteristic: NotifyCharacteristic): boolean
1772
1773server端特征值发生变化时,主动通知已连接的client设备。
1774
1775**需要权限**:ohos.permission.USE_BLUETOOTH
1776
1777**系统能力**:SystemCapability.Communication.Bluetooth.Core1778
1779**参数:**
1780
1781| 参数名                  | 类型                                       | 必填   | 说明                                      |
1782| -------------------- | ---------------------------------------- | ---- | --------------------------------------- |
1783| deviceId             | string                                   | 是    | 接收通知的client端设备地址,例如“XX:XX:XX:XX:XX:XX”。 |
1784| notifyCharacteristic | [NotifyCharacteristic](#notifycharacteristic) | 是    | 通知的特征值数据。                               |
1785
1786**返回值:**
1787
1788| 类型      | 说明                       |
1789| ------- | ------------------------ |
1790| boolean | 通知操作,成功返回true,否则返回false。 |
1791
1792**示例:**
1793
1794```js
1795// 创建descriptors
1796let descriptors = [];
1797let arrayBuffer = new ArrayBuffer(8);
1798let descV = new Uint8Array(arrayBuffer);
1799descV[0] = 11;
1800let descriptor = {serviceUuid: '00001810-0000-1000-8000-00805F9B34FB',
1801  characteristicUuid: '00001820-0000-1000-8000-00805F9B34FB',
1802  descriptorUuid: '00002902-0000-1000-8000-00805F9B34FB', descriptorValue: arrayBuffer};
1803descriptors[0] = descriptor;
1804
1805let arrayBufferC = new ArrayBuffer(8);
1806let characteristic = {serviceUuid: '00001810-0000-1000-8000-00805F9B34FB',
1807characteristicUuid: '00001820-0000-1000-8000-00805F9B34FB', characteristicValue: arrayBufferC, descriptors:descriptors};
1808let notifyCharacteristic = {serviceUuid: '00001810-0000-1000-8000-00805F9B34FB',
1809characteristicUuid: '00001821-0000-1000-8000-00805F9B34FB', characteristicValue: characteristic.characteristicValue, confirm: false};
1810let server = bluetooth.BLE.createGattServer();
1811server.notifyCharacteristicChanged('XX:XX:XX:XX:XX:XX', notifyCharacteristic);
1812```
1813
1814
1815### sendResponse
1816
1817sendResponse(serverResponse: ServerResponse): boolean
1818
1819server端回复client端的读写请求。
1820
1821**需要权限**:ohos.permission.USE_BLUETOOTH
1822
1823**系统能力**:SystemCapability.Communication.Bluetooth.Core1824
1825**参数:**
1826
1827| 参数名            | 类型                                | 必填   | 说明              |
1828| -------------- | --------------------------------- | ---- | --------------- |
1829| serverResponse | [ServerResponse](#serverresponse) | 是    | server端回复的响应数据。 |
1830
1831**返回值:**
1832
1833| 类型      | 说明                         |
1834| ------- | -------------------------- |
1835| boolean | 回复响应操作,成功返回true,否则返回false。 |
1836
1837**示例:**
1838
1839```js
1840/* send response */
1841let arrayBufferCCC = new ArrayBuffer(8);
1842let cccValue = new Uint8Array(arrayBufferCCC);
1843cccValue[0] = 1123;
1844let serverResponse = {
1845    "deviceId": "XX:XX:XX:XX:XX:XX",
1846    "transId": 0,
1847    "status": 0,
1848    "offset": 0,
1849    "value": arrayBufferCCC,
1850};
1851
1852let gattServer = bluetooth.BLE.createGattServer();
1853let ret = gattServer.sendResponse(serverResponse);
1854if (ret) {
1855  console.log('bluetooth sendResponse successfully');
1856} else {
1857  console.log('bluetooth sendResponse failed');
1858}
1859```
1860
1861
1862### on('characteristicRead')
1863
1864on(type: "characteristicRead", callback: Callback&lt;CharacteristicReadReq&gt;): void
1865
1866server端订阅特征值读请求事件。
1867
1868**需要权限**:ohos.permission.USE_BLUETOOTH
1869
1870**系统能力**:SystemCapability.Communication.Bluetooth.Core1871
1872**参数:**
1873
1874| 参数名      | 类型                                       | 必填   | 说明                                    |
1875| -------- | ---------------------------------------- | ---- | ------------------------------------- |
1876| type     | string                                   | 是    | 填写"characteristicRead"字符串,表示特征值读请求事件。 |
1877| callback | Callback&lt;[CharacteristicReadReq](#characteristicreadreq)&gt; | 是    | 表示回调函数的入参,client端发送的读请求数据。            |
1878
1879**返回值:**
1880
18811882
1883**示例:**
1884
1885```js
1886let arrayBufferCCC = new ArrayBuffer(8);
1887let cccValue = new Uint8Array(arrayBufferCCC);
1888cccValue[0] = 1123;
1889function ReadCharacteristicReq(CharacteristicReadReq) {
1890  let deviceId = CharacteristicReadReq.deviceId;
1891  let transId = CharacteristicReadReq.transId;
1892  let offset = CharacteristicReadReq.offset;
1893  let characteristicUuid = CharacteristicReadReq.characteristicUuid;
1894
1895  let serverResponse = {deviceId: deviceId, transId: transId, status: 0, offset: offset, value:arrayBufferCCC};
1896
1897  let ret = gattServer.sendResponse(serverResponse);
1898  if (ret) {
1899    console.log('bluetooth sendResponse successfully');
1900  } else {
1901    console.log('bluetooth sendResponse failed');
1902  }
1903}
1904
1905let gattServer = bluetooth.BLE.createGattServer();
1906gattServer.on("characteristicRead", ReadCharacteristicReq);
1907```
1908
1909
1910### off('characteristicRead')
1911
1912off(type: "characteristicRead", callback?: Callback&lt;CharacteristicReadReq&gt;): void
1913
1914server端取消订阅特征值读请求事件。
1915
1916**需要权限**:ohos.permission.USE_BLUETOOTH
1917
1918**系统能力**:SystemCapability.Communication.Bluetooth.Core1919
1920**参数:**
1921
1922| 参数名      | 类型                                       | 必填   | 说明                                       |
1923| -------- | ---------------------------------------- | ---- | ---------------------------------------- |
1924| type     | string                                   | 是    | 填写"characteristicRead"字符串,表示特征值读请求事件。    |
1925| callback | Callback&lt;[CharacteristicReadReq](#characteristicreadreq)&gt; | 否    | 表示取消订阅特征值读请求事件上报。不填该参数则取消订阅该type对应的所有回调。 |
1926
1927**返回值:**
1928
19291930
1931**示例:**
1932
1933```js
1934let gattServer = bluetooth.BLE.createGattServer();
1935gattServer.off("characteristicRead");
1936```
1937
1938
1939### on('characteristicWrite')
1940
1941on(type: "characteristicWrite", callback: Callback&lt;CharacteristicWriteReq&gt;): void
1942
1943server端订阅特征值写请求事件。
1944
1945**需要权限**:ohos.permission.USE_BLUETOOTH
1946
1947**系统能力**:SystemCapability.Communication.Bluetooth.Core1948
1949**参数:**
1950
1951| 参数名      | 类型                                       | 必填   | 说明                                     |
1952| -------- | ---------------------------------------- | ---- | -------------------------------------- |
1953| type     | string                                   | 是    | 填写"characteristicWrite"字符串,表示特征值写请求事件。 |
1954| callback | Callback&lt;[CharacteristicWriteReq](#characteristicwritereq)&gt; | 是    | 表示回调函数的入参,client端发送的写请求数据。             |
1955
1956**返回值:**
1957
19581959
1960**示例:**
1961
1962```js
1963let arrayBufferCCC = new ArrayBuffer(8);
1964let cccValue = new Uint8Array(arrayBufferCCC);
1965function WriteCharacteristicReq(CharacteristicWriteReq) {
1966  let deviceId = CharacteristicWriteReq.deviceId;
1967  let transId = CharacteristicWriteReq.transId;
1968  let offset = CharacteristicWriteReq.offset;
1969  let isPrep = CharacteristicWriteReq.isPrep;
1970  let needRsp = CharacteristicWriteReq.needRsp;
1971  let value =  new Uint8Array(CharacteristicWriteReq.value);
1972  let characteristicUuid = CharacteristicWriteReq.characteristicUuid;
1973
1974  cccValue[0] = value[0];
1975  let serverResponse = {deviceId: deviceId, transId: transId, status: 0, offset: offset, value:arrayBufferCCC};
1976
1977  let ret = gattServer.sendResponse(serverResponse);
1978  if (ret) {
1979    console.log('bluetooth sendResponse successfully');
1980  } else {
1981    console.log('bluetooth sendResponse failed');
1982  }
1983}
1984
1985let gattServer = bluetooth.BLE.createGattServer();
1986gattServer.on("characteristicWrite", WriteCharacteristicReq);
1987```
1988
1989
1990### off('characteristicWrite')
1991
1992off(type: "characteristicWrite", callback?: Callback&lt;CharacteristicWriteReq&gt;): void
1993
1994server端取消订阅特征值写请求事件。
1995
1996**需要权限**:ohos.permission.USE_BLUETOOTH
1997
1998**系统能力**:SystemCapability.Communication.Bluetooth.Core1999
2000**参数:**
2001
2002| 参数名      | 类型                                       | 必填   | 说明                                       |
2003| -------- | ---------------------------------------- | ---- | ---------------------------------------- |
2004| type     | string                                   | 是    | 填写"characteristicWrite"字符串,表示特征值写请求事件。   |
2005| callback | Callback&lt;[CharacteristicWriteReq](#characteristicwritereq)&gt; | 否    | 表示取消订阅特征值写请求事件上报。不填该参数则取消订阅该type对应的所有回调。 |
2006
2007**返回值:**
2008
20092010
2011**示例:**
2012
2013```js
2014let gattServer = bluetooth.BLE.createGattServer();
2015gattServer.off("characteristicWrite");
2016```
2017
2018
2019### on('descriptorRead')
2020
2021on(type: "descriptorRead", callback: Callback&lt;DescriptorReadReq&gt;): void
2022
2023server端订阅描述符读请求事件。
2024
2025**需要权限**:ohos.permission.USE_BLUETOOTH
2026
2027**系统能力**:SystemCapability.Communication.Bluetooth.Core2028
2029**参数:**
2030
2031| 参数名      | 类型                                       | 必填   | 说明                                |
2032| -------- | ---------------------------------------- | ---- | --------------------------------- |
2033| type     | string                                   | 是    | 填写"descriptorRead"字符串,表示描述符读请求事件。 |
2034| callback | Callback&lt;[DescriptorReadReq](#descriptorreadreq)&gt; | 是    | 表示回调函数的入参,client端发送的读请求数据。        |
2035
2036**返回值:**
2037
20382039
2040**示例:**
2041
2042```js
2043let arrayBufferDesc = new ArrayBuffer(8);
2044let descValue = new Uint8Array(arrayBufferDesc);
2045descValue[0] = 1101;
2046function ReadDescriptorReq(DescriptorReadReq) {
2047  let deviceId = DescriptorReadReq.deviceId;
2048  let transId = DescriptorReadReq.transId;
2049  let offset = DescriptorReadReq.offset;
2050  let descriptorUuid = DescriptorReadReq.descriptorUuid;
2051
2052  let serverResponse = {deviceId: deviceId, transId: transId, status: 0, offset: offset, value:arrayBufferDesc};
2053
2054  let ret = gattServer.sendResponse(serverResponse);
2055  if (ret) {
2056    console.log('bluetooth sendResponse successfully');
2057  } else {
2058    console.log('bluetooth sendResponse failed');
2059  }
2060}
2061
2062let gattServer = bluetooth.BLE.createGattServer();
2063gattServer.on("descriptorRead", ReadDescriptorReq);
2064```
2065
2066
2067### off('descriptorRead')
2068
2069off(type: "descriptorRead", callback?: Callback&lt;DescriptorReadReq&gt;): void
2070
2071server端取消订阅描述符读请求事件。
2072
2073**需要权限**:ohos.permission.USE_BLUETOOTH
2074
2075**系统能力**:SystemCapability.Communication.Bluetooth.Core2076
2077**参数:**
2078
2079| 参数名      | 类型                                       | 必填   | 说明                                       |
2080| -------- | ---------------------------------------- | ---- | ---------------------------------------- |
2081| type     | string                                   | 是    | 填写"descriptorRead"字符串,表示描述符读请求事件。        |
2082| callback | Callback&lt;[DescriptorReadReq](#descriptorreadreq)&gt; | 否    | 表示取消订阅描述符读请求事件上报。不填该参数则取消订阅该type对应的所有回调。 |
2083
2084**返回值:**
2085
20862087
2088**示例:**
2089
2090```js
2091let gattServer = bluetooth.BLE.createGattServer();
2092gattServer.off("descriptorRead");
2093```
2094
2095
2096### on('descriptorWrite')
2097
2098on(type: "descriptorWrite", callback: Callback&lt;DescriptorWriteReq&gt;): void
2099
2100server端订阅描述符写请求事件。
2101
2102**需要权限**:ohos.permission.USE_BLUETOOTH
2103
2104**系统能力**:SystemCapability.Communication.Bluetooth.Core2105
2106**参数:**
2107
2108| 参数名      | 类型                                       | 必填   | 说明                                 |
2109| -------- | ---------------------------------------- | ---- | ---------------------------------- |
2110| type     | string                                   | 是    | 填写"descriptorWrite"字符串,表示描述符写请求事件。 |
2111| callback | Callback&lt;[DescriptorWriteReq](#descriptorwritereq)&gt; | 是    | 表示回调函数的入参,client端发送的写请求数据。         |
2112
2113**返回值:**
2114
21152116
2117**示例:**
2118
2119```js
2120let arrayBufferDesc = new ArrayBuffer(8);
2121let descValue = new Uint8Array(arrayBufferDesc);
2122function WriteDescriptorReq(DescriptorWriteReq) {
2123  let deviceId = DescriptorWriteReq.deviceId;
2124  let transId = DescriptorWriteReq.transId;
2125  let offset = DescriptorWriteReq.offset;
2126  let isPrep = DescriptorWriteReq.isPrep;
2127  let needRsp = DescriptorWriteReq.needRsp;
2128  let value = new Uint8Array(DescriptorWriteReq.value);
2129  let descriptorUuid = DescriptorWriteReq.descriptorUuid;
2130
2131  descValue[0] = value[0];
2132  let serverResponse = {deviceId: deviceId, transId: transId, status: 0, offset: offset, value:arrayBufferDesc};
2133
2134  let ret = gattServer.sendResponse(serverResponse);
2135  if (ret) {
2136    console.log('bluetooth sendResponse successfully');
2137  } else {
2138    console.log('bluetooth sendResponse failed');
2139  }
2140}
2141
2142let gattServer = bluetooth.BLE.createGattServer();
2143gattServer.on("descriptorRead", WriteDescriptorReq);
2144```
2145
2146
2147### off('descriptorWrite')
2148
2149off(type: "descriptorWrite", callback?: Callback&lt;DescriptorWriteReq&gt;): void
2150
2151server端取消订阅描述符写请求事件。
2152
2153**需要权限**:ohos.permission.USE_BLUETOOTH
2154
2155**系统能力**:SystemCapability.Communication.Bluetooth.Core2156
2157**参数:**
2158
2159| 参数名      | 类型                                       | 必填   | 说明                                       |
2160| -------- | ---------------------------------------- | ---- | ---------------------------------------- |
2161| type     | string                                   | 是    | 填写"descriptorWrite"字符串,表示描述符写请求事件。       |
2162| callback | Callback&lt;[DescriptorWriteReq](#descriptorwritereq)&gt; | 否    | 表示取消订阅描述符写请求事件上报。不填该参数则取消订阅该type对应的所有回调。 |
2163
2164**返回值:**
2165
21662167
2168**示例:**
2169
2170```js
2171let gattServer = bluetooth.BLE.createGattServer();
2172gattServer.off("descriptorWrite");
2173```
2174
2175
2176### on('connectStateChange')
2177
2178on(type: "connectStateChange", callback: Callback&lt;BLEConnectChangedState&gt;): void
2179
2180server端订阅BLE连接状态变化事件。
2181
2182**需要权限**:ohos.permission.USE_BLUETOOTH
2183
2184**系统能力**:SystemCapability.Communication.Bluetooth.Core2185
2186**参数:**
2187
2188| 参数名      | 类型                                       | 必填   | 说明                                       |
2189| -------- | ---------------------------------------- | ---- | ---------------------------------------- |
2190| type     | string                                   | 是    | 填写"connectStateChange"字符串,表示BLE连接状态变化事件。 |
2191| callback | Callback&lt;[BLEConnectChangedState](#bleconnectchangedstate)&gt; | 是    | 表示回调函数的入参,连接状态。                          |
2192
2193**返回值:**
2194
21952196
2197**示例:**
2198
2199```js
2200function Connected(BLEConnectChangedState) {
2201  let deviceId = BLEConnectChangedState.deviceId;
2202  let status = BLEConnectChangedState.state;
2203}
2204
2205let gattServer = bluetooth.BLE.createGattServer();
2206gattServer.on("connectStateChange", Connected);
2207```
2208
2209
2210### off('connectStateChange')
2211
2212off(type: "connectStateChange", callback?: Callback&lt;BLEConnectChangedState&gt;): void
2213
2214server端取消订阅BLE连接状态变化事件。
2215
2216**需要权限**:ohos.permission.USE_BLUETOOTH
2217
2218**系统能力**:SystemCapability.Communication.Bluetooth.Core2219
2220**参数:**
2221
2222| 参数名      | 类型                                       | 必填   | 说明                                       |
2223| -------- | ---------------------------------------- | ---- | ---------------------------------------- |
2224| type     | string                                   | 是    | 填写"connectStateChange"字符串,表示BLE连接状态变化事件。 |
2225| callback | Callback&lt;[BLEConnectChangedState](#bleconnectchangedstate)&gt; | 否    | 表示取消订阅BLE连接状态变化事件。不填该参数则取消订阅该type对应的所有回调。 |
2226
2227**返回值:**
2228
22292230
2231**示例:**
2232
2233```js
2234let gattServer = bluetooth.BLE.createGattServer();
2235gattServer.off("connectStateChange");
2236```
2237
2238
2239## GattClientDevice
2240
2241client端类,使用client端方法之前需要创建该类的实例进行操作,通过createGattClientDevice(deviceId: string)方法构造此实例。
2242
2243
2244### connect
2245
2246connect(): boolean
2247
2248client端发起连接远端蓝牙低功耗设备。
2249
2250**需要权限**:ohos.permission.USE_BLUETOOTH
2251
2252**系统能力**:SystemCapability.Communication.Bluetooth.Core2253
2254**返回值:**
2255
2256| 类型      | 说明                        |
2257| ------- | ------------------------- |
2258| boolean | 连接操作成功返回true,操作失败返回false。 |
2259
2260**示例:**
2261
2262```js
2263let device = bluetooth.BLE.createGattClientDevice('XX:XX:XX:XX:XX:XX');
2264let ret = device.connect();
2265```
2266
2267
2268### disconnect
2269
2270disconnect(): boolean
2271
2272client端断开与远端蓝牙低功耗设备的连接。
2273
2274**需要权限**:ohos.permission.USE_BLUETOOTH
2275
2276**系统能力**:SystemCapability.Communication.Bluetooth.Core2277
2278**返回值:**
2279
2280| 类型      | 说明                           |
2281| ------- | ---------------------------- |
2282| boolean | 断开连接操作,成功返回true,操作失败返回false。 |
2283
2284**示例:**
2285
2286```js
2287let device = bluetooth.BLE.createGattClientDevice('XX:XX:XX:XX:XX:XX');
2288let ret = device.disconnect();
2289```
2290
2291
2292### close
2293
2294close(): boolean
2295
2296关闭客户端功能,注销client在协议栈的注册,调用该接口后[GattClientDevice](#gattclientdevice)实例将不能再使用。
2297
2298**需要权限**:ohos.permission.USE_BLUETOOTH
2299
2300**系统能力**:SystemCapability.Communication.Bluetooth.Core2301
2302**返回值:**
2303
2304| 类型      | 说明                         |
2305| ------- | -------------------------- |
2306| boolean | 关闭操作,成功返回true,操作失败返回false。 |
2307
2308**示例:**
2309
2310```js
2311let device = bluetooth.BLE.createGattClientDevice('XX:XX:XX:XX:XX:XX');
2312let ret = device.close();
2313```
2314
2315
2316
2317
2318### getServices
2319
2320getServices(callback: AsyncCallback&lt;Array&lt;GattService&gt;&gt;): void
2321
2322client端获取蓝牙低功耗设备的所有服务,即服务发现 。
2323
2324**需要权限**:ohos.permission.USE_BLUETOOTH
2325
2326**系统能力**:SystemCapability.Communication.Bluetooth.Core2327
2328**参数:**
2329
2330| 参数名      | 类型                                       | 必填   | 说明                       |
2331| -------- | ---------------------------------------- | ---- | ------------------------ |
2332| callback | AsyncCallback&lt;Array&lt;[GattService](#gattservice)&gt;&gt; | 是    | client进行服务发现,通过注册回调函数获取。 |
2333
2334**返回值:**
2335
23362337
2338**示例:**
2339
2340```js
2341// callkback 模式
2342function getServices(code, gattServices) {
2343  if (code.code == 0) {
2344      let services = gattServices;
2345      console.log('bluetooth code is ' + code.code);
2346      console.log("bluetooth services size is ", services.length);
2347
2348      for (let i = 0; i < services.length; i++) {
2349        console.log('bluetooth serviceUuid is ' + services[i].serviceUuid);
2350      }
2351  }
2352}
2353
2354let device = bluetooth.BLE.createGattClientDevice('XX:XX:XX:XX:XX:XX');
2355device.connect();
2356device.getServices(getServices);
2357```
2358
2359
2360### getServices
2361
2362getServices(): Promise&lt;Array&lt;GattService&gt;&gt;
2363
2364client端获取蓝牙低功耗设备的所有服务,即服务发现。
2365
2366**需要权限**:ohos.permission.USE_BLUETOOTH
2367
2368**系统能力**:SystemCapability.Communication.Bluetooth.Core2369
2370**参数:**
2371
2372**返回值:**
2373
2374| 类型                                       | 说明                          |
2375| ---------------------------------------- | --------------------------- |
2376| Promise&lt;Array&lt;[GattService](#gattservice)&gt;&gt; | client进行服务发现,通过promise形式获取。 |
2377
2378**示例:**
2379
2380```js
2381// Promise 模式
2382let device = bluetooth.BLE.createGattClientDevice('XX:XX:XX:XX:XX:XX');
2383device.connect();
2384device.getServices().then(result => {
2385    console.info("getServices successfully:" + JSON.stringify(result));
2386});
2387```
2388
2389
2390### readCharacteristicValue
2391
2392readCharacteristicValue(characteristic: BLECharacteristic, callback: AsyncCallback&lt;BLECharacteristic&gt;): void
2393
2394client端读取蓝牙低功耗设备特定服务的特征值。
2395
2396**需要权限**:ohos.permission.USE_BLUETOOTH
2397
2398**系统能力**:SystemCapability.Communication.Bluetooth.Core2399
2400**参数:**
2401
2402| 参数名            | 类型                                       | 必填   | 说明                      |
2403| -------------- | ---------------------------------------- | ---- | ----------------------- |
2404| characteristic | [BLECharacteristic](#blecharacteristic)  | 是    | 待读取的特征值。                |
2405| callback       | AsyncCallback&lt;[BLECharacteristic](#blecharacteristic)&gt; | 是    | client读取特征值,通过注册回调函数获取。 |
2406
2407**返回值:**
2408
24092410
2411**示例:**
2412
2413```js
2414function readCcc(code, BLECharacteristic) {
2415  if (code.code != 0) {
2416      return;
2417  }
2418  console.log('bluetooth characteristic uuid: ' + BLECharacteristic.characteristicUuid);
2419  let value = new Uint8Array(BLECharacteristic.characteristicValue);
2420  console.log('bluetooth characteristic value: ' + value[0] +','+ value[1]+','+ value[2]+','+ value[3]);
2421}
2422
2423let device = bluetooth.BLE.createGattClientDevice('XX:XX:XX:XX:XX:XX');
2424let descriptors = [];
2425let bufferDesc = new ArrayBuffer(8);
2426let descV = new Uint8Array(bufferDesc);
2427descV[0] = 11;
2428let descriptor = {serviceUuid: '00001810-0000-1000-8000-00805F9B34FB',
2429characteristicUuid: '00001820-0000-1000-8000-00805F9B34FB',
2430descriptorUuid: '00002903-0000-1000-8000-00805F9B34FB', descriptorValue: bufferDesc};
2431descriptors[0] = descriptor;
2432
2433let bufferCCC = new ArrayBuffer(8);
2434let cccV = new Uint8Array(bufferCCC);
2435cccV[0] = 1;
2436let characteristic = {serviceUuid: '00001810-0000-1000-8000-00805F9B34FB',
2437characteristicUuid: '00001820-0000-1000-8000-00805F9B34FB',
2438characteristicValue: bufferCCC, descriptors:descriptors};
2439
2440device.readCharacteristicValue(characteristic, readCcc);
2441```
2442
2443
2444### readCharacteristicValue
2445
2446readCharacteristicValue(characteristic: BLECharacteristic): Promise&lt;BLECharacteristic&gt;
2447
2448client端读取蓝牙低功耗设备特定服务的特征值。
2449
2450**需要权限**:ohos.permission.USE_BLUETOOTH
2451
2452**系统能力**:SystemCapability.Communication.Bluetooth.Core2453
2454**参数:**
2455
2456| 参数名            | 类型                                      | 必填   | 说明       |
2457| -------------- | --------------------------------------- | ---- | -------- |
2458| characteristic | [BLECharacteristic](#blecharacteristic) | 是    | 待读取的特征值。 |
2459
2460**返回值:**
2461
2462| 类型                                       | 说明                         |
2463| ---------------------------------------- | -------------------------- |
2464| Promise&lt;[BLECharacteristic](#blecharacteristic)&gt; | client读取特征值,通过promise形式获取。 |
2465
2466**示例:**
2467
2468```js
2469let device = bluetooth.BLE.createGattClientDevice('XX:XX:XX:XX:XX:XX');
2470let descriptors = [];
2471let bufferDesc = new ArrayBuffer(8);
2472let descV = new Uint8Array(bufferDesc);
2473descV[0] = 11;
2474let descriptor = {serviceUuid: '00001810-0000-1000-8000-00805F9B34FB',
2475characteristicUuid: '00001820-0000-1000-8000-00805F9B34FB',
2476descriptorUuid: '00002903-0000-1000-8000-00805F9B34FB', descriptorValue: bufferDesc};
2477descriptors[0] = descriptor;
2478
2479let bufferCCC = new ArrayBuffer(8);
2480let cccV = new Uint8Array(bufferCCC);
2481cccV[0] = 1;
2482let characteristic = {serviceUuid: '00001810-0000-1000-8000-00805F9B34FB',
2483characteristicUuid: '00001820-0000-1000-8000-00805F9B34FB',
2484characteristicValue: bufferCCC, descriptors:descriptors};
2485
2486device.readCharacteristicValue(characteristic);
2487```
2488
2489
2490### readDescriptorValue
2491
2492readDescriptorValue(descriptor: BLEDescriptor, callback: AsyncCallback&lt;BLEDescriptor&gt;): void
2493
2494client端读取蓝牙低功耗设备特定的特征包含的描述符。
2495
2496**需要权限**:ohos.permission.USE_BLUETOOTH
2497
2498**系统能力**:SystemCapability.Communication.Bluetooth.Core2499
2500**参数:**
2501
2502| 参数名        | 类型                                       | 必填   | 说明                      |
2503| ---------- | ---------------------------------------- | ---- | ----------------------- |
2504| descriptor | [BLEDescriptor](#bledescriptor)          | 是    | 待读取的描述符。                |
2505| callback   | AsyncCallback&lt;[BLECharacteristic](#blecharacteristic)&gt; | 是    | client读取描述符,通过注册回调函数获取。 |
2506
2507**返回值:**
2508
25092510
2511**示例:**
2512
2513```js
2514function readDesc(code, BLEDescriptor) {
2515  if (code.code != 0) {
2516      return;
2517  }
2518  console.log('bluetooth descriptor uuid: ' + BLEDescriptor.descriptorUuid);
2519  let value = new Uint8Array(BLEDescriptor.descriptorValue);
2520  console.log('bluetooth descriptor value: ' + value[0] +','+ value[1]+','+ value[2]+','+ value[3]);
2521}
2522
2523let device = bluetooth.BLE.createGattClientDevice('XX:XX:XX:XX:XX:XX');
2524let bufferDesc = new ArrayBuffer(8);
2525let descV = new Uint8Array(bufferDesc);
2526descV[0] = 11;
2527let descriptor = {serviceUuid: '00001810-0000-1000-8000-00805F9B34FB',
2528  characteristicUuid: '00001820-0000-1000-8000-00805F9B34FB',
2529  descriptorUuid: '00002903-0000-1000-8000-00805F9B34FB', descriptorValue: bufferDesc};
2530device.readDescriptorValue(descriptor, readDesc);
2531```
2532
2533
2534### readDescriptorValue
2535
2536readDescriptorValue(descriptor: BLEDescriptor): Promise&lt;BLEDescriptor&gt;
2537
2538client端读取蓝牙低功耗设备特定的特征包含的描述符。
2539
2540**需要权限**:ohos.permission.USE_BLUETOOTH
2541
2542**系统能力**:SystemCapability.Communication.Bluetooth.Core2543
2544**参数:**
2545
2546| 参数名        | 类型                              | 必填   | 说明       |
2547| ---------- | ------------------------------- | ---- | -------- |
2548| descriptor | [BLEDescriptor](#bledescriptor) | 是    | 待读取的描述符。 |
2549
2550**返回值:**
2551
2552| 类型                                       | 说明                         |
2553| ---------------------------------------- | -------------------------- |
2554| Promise&lt;[BLEDescriptor](#bledescriptor)&gt; | client读取描述符,通过promise形式获取。 |
2555
2556**示例:**
2557
2558```js
2559let device = bluetooth.BLE.createGattClientDevice('XX:XX:XX:XX:XX:XX');
2560let bufferDesc = new ArrayBuffer(8);
2561let descV = new Uint8Array(bufferDesc);
2562descV[0] = 11;
2563let descriptor = {serviceUuid: '00001810-0000-1000-8000-00805F9B34FB',
2564  characteristicUuid: '00001820-0000-1000-8000-00805F9B34FB',
2565  descriptorUuid: '00002903-0000-1000-8000-00805F9B34FB', descriptorValue: bufferDesc};
2566device.readDescriptorValue(descriptor);
2567```
2568
2569
2570### writeCharacteristicValue
2571
2572writeCharacteristicValue(characteristic: BLECharacteristic): boolean
2573
2574client端向低功耗蓝牙设备写入特定的特征值。
2575
2576**需要权限**:ohos.permission.USE_BLUETOOTH
2577
2578**系统能力**:SystemCapability.Communication.Bluetooth.Core2579
2580**参数:**
2581
2582| 参数名            | 类型                                      | 必填   | 说明                  |
2583| -------------- | --------------------------------------- | ---- | ------------------- |
2584| characteristic | [BLECharacteristic](#blecharacteristic) | 是    | 蓝牙设备特征对应的二进制值及其它参数。 |
2585
2586**返回值:**
2587
2588| 类型      | 说明                          |
2589| ------- | --------------------------- |
2590| boolean | 写特征值操作成功返回true,操作失败返回false。 |
2591
2592**示例:**
2593
2594```js
2595let device = bluetooth.BLE.createGattClientDevice('XX:XX:XX:XX:XX:XX');
2596let descriptors = [];
2597let bufferDesc = new ArrayBuffer(8);
2598let descV = new Uint8Array(bufferDesc);
2599descV[0] = 11;
2600let descriptor = {serviceUuid: '00001810-0000-1000-8000-00805F9B34FB',
2601  characteristicUuid: '00001820-0000-1000-8000-00805F9B34FB',
2602  descriptorUuid: '00002903-0000-1000-8000-00805F9B34FB', descriptorValue: bufferDesc};
2603descriptors[0] = descriptor;
2604
2605let bufferCCC = new ArrayBuffer(8);
2606let cccV = new Uint8Array(bufferCCC);
2607cccV[0] = 1;
2608let characteristic = {serviceUuid: '00001810-0000-1000-8000-00805F9B34FB',
2609  characteristicUuid: '00001820-0000-1000-8000-00805F9B34FB',
2610  characteristicValue: bufferCCC, descriptors:descriptors};
2611let retWriteCcc = device.writeCharacteristicValue(characteristic);
2612if (retWriteCcc) {
2613  console.log('write characteristic successfully');
2614} else {
2615  console.log('write characteristic failed');
2616}
2617```
2618
2619
2620### writeDescriptorValue
2621
2622writeDescriptorValue(descriptor: BLEDescriptor): boolean
2623
2624client端向低功耗蓝牙设备特定的描述符写入二进制数据。
2625
2626**需要权限**:ohos.permission.USE_BLUETOOTH
2627
2628**系统能力**:SystemCapability.Communication.Bluetooth.Core2629
2630**参数:**
2631
2632| 参数名        | 类型                              | 必填   | 说明                 |
2633| ---------- | ------------------------------- | ---- | ------------------ |
2634| descriptor | [BLEDescriptor](#bledescriptor) | 是    | 蓝牙设备描述符的二进制值及其它参数。 |
2635
2636**返回值:**
2637
2638| 类型      | 说明                          |
2639| ------- | --------------------------- |
2640| boolean | 写描述符操作成功返回true,操作失败返回false。 |
2641
2642**示例:**
2643
2644```js
2645let device = bluetooth.BLE.createGattClientDevice('XX:XX:XX:XX:XX:XX');
2646let bufferDesc = new ArrayBuffer(8);
2647let descV = new Uint8Array(bufferDesc);
2648descV[0] = 22;
2649let descriptor = {serviceUuid: '00001810-0000-1000-8000-00805F9B34FB',
2650  characteristicUuid: '00001820-0000-1000-8000-00805F9B34FB',
2651  descriptorUuid: '00002903-0000-1000-8000-00805F9B34FB', descriptorValue: bufferDesc};
2652let retWriteDesc = device.writeDescriptorValue(descriptor);
2653if (retWriteDesc) {
2654  console.log('bluetooth write descriptor successfully');
2655} else {
2656  console.log('bluetooth write descriptor failed');
2657}
2658```
2659
2660
2661### setBLEMtuSize
2662
2663setBLEMtuSize(mtu: number): boolean
2664
2665client协商远端蓝牙低功耗设备的最大传输单元(Maximum Transmission Unit, MTU),调用[connect](#connect)接口连接成功后才能使用。
2666
2667**需要权限**:ohos.permission.USE_BLUETOOTH
2668
2669**系统能力**:SystemCapability.Communication.Bluetooth.Core2670
2671**参数:**
2672
2673| 参数名  | 类型     | 必填   | 说明             |
2674| ---- | ------ | ---- | -------------- |
2675| mtu  | number | 是    | 设置范围为22~512字节。 |
2676
2677**返回值:**
2678
2679| 类型      | 说明                           |
2680| ------- | ---------------------------- |
2681| boolean | MTU协商操作成功返回true,操作失败返回false。 |
2682
2683**示例:**
2684
2685```js
2686let device = bluetooth.BLE.createGattClientDevice('XX:XX:XX:XX:XX:XX');
2687device.setBLEMtuSize(128);
2688```
2689
2690
2691### setNotifyCharacteristicChanged
2692
2693setNotifyCharacteristicChanged(characteristic: BLECharacteristic, enable: boolean): boolean
2694
2695向服务端发送设置通知此特征值请求。
2696
2697**需要权限**:ohos.permission.USE_BLUETOOTH
2698
2699**系统能力**:SystemCapability.Communication.Bluetooth.Core2700
2701**参数:**
2702
2703| 参数名            | 类型                                      | 必填   | 说明                            |
2704| -------------- | --------------------------------------- | ---- | ----------------------------- |
2705| characteristic | [BLECharacteristic](#blecharacteristic) | 是    | 蓝牙低功耗特征。                      |
2706| enable         | boolean                                 | 是    | 启用接收notify设置为true,否则设置为false。 |
2707
2708**返回值:**
2709
2710| 类型      | 说明                        |
2711| ------- | ------------------------- |
2712| boolean | 设置操作成功返回true,操作失败返回false。 |
2713
2714**示例:**
2715
2716```js
2717// 创建descriptors
2718let descriptors = [];
2719let arrayBuffer = new ArrayBuffer(8);
2720let descV = new Uint8Array(arrayBuffer);
2721descV[0] = 11;
2722let descriptor = {serviceUuid: '00001810-0000-1000-8000-00805F9B34FB',
2723  characteristicUuid: '00001820-0000-1000-8000-00805F9B34FB',
2724  descriptorUuid: '00002902-0000-1000-8000-00805F9B34FB', descriptorValue: arrayBuffer};
2725descriptors[0] = descriptor;
2726
2727let arrayBufferC = new ArrayBuffer(8);
2728let characteristic = {serviceUuid: '00001810-0000-1000-8000-00805F9B34FB',
2729  characteristicUuid: '00001820-0000-1000-8000-00805F9B34FB', characteristicValue: arrayBufferC, descriptors:descriptors};
2730let device = bluetooth.BLE.createGattClientDevice('XX:XX:XX:XX:XX:XX');
2731device.setNotifyCharacteristicChanged(characteristic, false);
2732```
2733
2734
2735### on('BLECharacteristicChange')
2736
2737on(type: "BLECharacteristicChange", callback: Callback&lt;BLECharacteristic&gt;): void
2738
2739订阅蓝牙低功耗设备的特征值变化事件。需要先调用setNotifyCharacteristicChanged接口才能接收server端的通知。
2740
2741**需要权限**:ohos.permission.USE_BLUETOOTH
2742
2743**系统能力**:SystemCapability.Communication.Bluetooth.Core2744
2745**参数:**
2746
2747| 参数名      | 类型                                       | 必填   | 说明                                       |
2748| -------- | ---------------------------------------- | ---- | ---------------------------------------- |
2749| type     | string                                   | 是    | 填写"BLECharacteristicChange"字符串,表示特征值变化事件。 |
2750| callback | Callback&lt;[BLECharacteristic](#blecharacteristic)&gt; | 是    | 表示蓝牙低功耗设备的特征值变化事件的回调函数。                  |
2751
2752**返回值:**
2753
27542755
2756**示例:**
2757
2758```js
2759function CharacteristicChange(CharacteristicChangeReq) {
2760  let serviceUuid = CharacteristicChangeReq.serviceUuid;
2761  let characteristicUuid = CharacteristicChangeReq.characteristicUuid;
2762  let value = new Uint8Array(CharacteristicChangeReq.characteristicValue);
2763}
2764let device = bluetooth.BLE.createGattClientDevice('XX:XX:XX:XX:XX:XX');
2765device.on('BLECharacteristicChange', CharacteristicChange);
2766```
2767
2768
2769### off('BLECharacteristicChange')
2770
2771off(type: "BLECharacteristicChange", callback?: Callback&lt;BLECharacteristic&gt;): void
2772
2773取消订阅蓝牙低功耗设备的特征值变化事件。
2774
2775**需要权限**:ohos.permission.USE_BLUETOOTH
2776
2777**系统能力**:SystemCapability.Communication.Bluetooth.Core2778
2779**参数:**
2780
2781| 参数名      | 类型                                       | 必填   | 说明                                       |
2782| -------- | ---------------------------------------- | ---- | ---------------------------------------- |
2783| type     | string                                   | 是    | 填写"BLECharacteristicChange"字符串,表示特征值变化事件。 |
2784| callback | Callback&lt;[BLECharacteristic](#blecharacteristic)&gt; | 否    | 表示取消订阅蓝牙低功耗设备的特征值变化事件。不填该参数则取消订阅该type对应的所有回调。 |
2785
2786**返回值:**
2787
27882789
2790**示例:**
2791
2792```js
2793let device = bluetooth.BLE.createGattClientDevice('XX:XX:XX:XX:XX:XX');
2794device.off('BLECharacteristicChange');
2795```
2796
2797
2798### on('BLEConnectionStateChange')
2799
2800on(type: "BLEConnectionStateChange", callback: Callback&lt;BLEConnectChangedState&gt;): void
2801
2802client端订阅蓝牙低功耗设备的连接状态变化事件。
2803
2804**需要权限**:ohos.permission.USE_BLUETOOTH
2805
2806**系统能力**:SystemCapability.Communication.Bluetooth.Core2807
2808**参数:**
2809
2810| 参数名      | 类型                                       | 必填   | 说明                                       |
2811| -------- | ---------------------------------------- | ---- | ---------------------------------------- |
2812| type     | string                                   | 是    | 填写"BLEConnectionStateChange"字符串,表示连接状态变化事件。 |
2813| callback | Callback&lt;[BLEConnectChangedState](#bleconnectchangedstate)&gt; | 是    | 表示连接状态,已连接或断开。                           |
2814
2815**返回值:**
2816
28172818
2819**示例:**
2820
2821```js
2822function ConnectStateChanged(state) {
2823  console.log('bluetooth connect state changed');
2824  let connectState = state.state;
2825}
2826let device = bluetooth.BLE.createGattClientDevice('XX:XX:XX:XX:XX:XX');
2827device.on('BLEConnectionStateChange', ConnectStateChanged);
2828```
2829
2830
2831### off('BLEConnectionStateChange')
2832
2833off(type: "BLEConnectionStateChange", callback?: Callback&lt;BLEConnectChangedState&gt;): void
2834
2835取消订阅蓝牙低功耗设备的连接状态变化事件。
2836
2837**需要权限**:ohos.permission.USE_BLUETOOTH
2838
2839**系统能力**:SystemCapability.Communication.Bluetooth.Core2840
2841**参数:**
2842
2843| 参数名      | 类型                                       | 必填   | 说明                                       |
2844| -------- | ---------------------------------------- | ---- | ---------------------------------------- |
2845| type     | string                                   | 是    | 填写"BLEConnectionStateChange"字符串,表示连接状态变化事件。 |
2846| callback | Callback&lt;[BLEConnectChangedState](#bleconnectchangedstate)&gt; | 否    | 表示取消订阅蓝牙低功耗设备的连接状态变化事件。不填该参数则取消订阅该type对应的所有回调。 |
2847
2848**返回值:**
2849
28502851
2852**示例:**
2853
2854```js
2855let device = bluetooth.BLE.createGattClientDevice('XX:XX:XX:XX:XX:XX');
2856device.off('BLEConnectionStateChange');
2857```
2858
2859
2860### getDeviceName
2861
2862getDeviceName(callback: AsyncCallback&lt;string&gt;): void
2863
2864client获取远端蓝牙低功耗设备名。
2865
2866**需要权限**:ohos.permission.USE_BLUETOOTH
2867
2868**系统能力**:SystemCapability.Communication.Bluetooth.Core2869
2870**参数:**
2871
2872| 参数名      | 类型                          | 必填   | 说明                              |
2873| -------- | --------------------------- | ---- | ------------------------------- |
2874| callback | AsyncCallback&lt;string&gt; | 是    | client获取对端server设备名,通过注册回调函数获取。 |
2875
2876**返回值:**
2877
28782879
2880**示例:**
2881
2882```js
2883// callback
2884let gattClient = bluetooth.BLE.createGattClientDevice("XX:XX:XX:XX:XX:XX");
2885let deviceName = gattClient.getDeviceName((err, data)=> {
2886    console.info('device name err ' + JSON.stringify(err));
2887    console.info('device name' + JSON.stringify(data));
2888})
2889```
2890
2891
2892### getDeviceName
2893
2894getDeviceName(): Promise&lt;string&gt;
2895
2896client获取远端蓝牙低功耗设备名。
2897
2898**需要权限**:ohos.permission.USE_BLUETOOTH
2899
2900**系统能力**:SystemCapability.Communication.Bluetooth.Core2901
2902**返回值:**
2903
2904| 类型                    | 说明                                 |
2905| --------------------- | ---------------------------------- |
2906| Promise&lt;string&gt; | client获取对端server设备名,通过promise形式获取。 |
2907
2908**示例:**
2909
2910```js
2911// promise
2912let gattClient = bluetooth.BLE.createGattClientDevice("XX:XX:XX:XX:XX:XX");
2913let ret = device.connect();
2914let deviceName = gattClient.getDeviceName().then((data) => {
2915    console.info('device name' + JSON.stringify(data));
2916})
2917```
2918
2919
2920### getRssiValue
2921
2922getRssiValue(callback: AsyncCallback&lt;number&gt;): void
2923
2924client获取远端蓝牙低功耗设备的信号强度 (Received Signal Strength Indication, RSSI),调用[connect](#connect)接口连接成功后才能使用。
2925
2926**需要权限**:ohos.permission.USE_BLUETOOTH
2927
2928**系统能力**:SystemCapability.Communication.Bluetooth.Core2929
2930**参数:**
2931
2932| 参数名      | 类型                          | 必填   | 说明                             |
2933| -------- | --------------------------- | ---- | ------------------------------ |
2934| callback | AsyncCallback&lt;number&gt; | 是    | 返回信号强度,单位&nbsp;dBm,通过注册回调函数获取。 |
2935
2936**返回值:**
2937
29382939
2940**示例:**
2941
2942```js
2943// callback
2944let gattClient = bluetooth.BLE.createGattClientDevice("XX:XX:XX:XX:XX:XX");
2945let ret = device.connect();
2946let rssi = gattClient.getRssiValue((err, data)=> {
2947    console.info('rssi err ' + JSON.stringify(err));
2948    console.info('rssi value' + JSON.stringify(data));
2949})
2950```
2951
2952
2953### getRssiValue
2954
2955getRssiValue(): Promise&lt;number&gt;
2956
2957client获取远端蓝牙低功耗设备的信号强度 (Received Signal Strength Indication, RSSI),调用[connect](#connect)接口连接成功后才能使用。
2958
2959**需要权限**:ohos.permission.USE_BLUETOOTH
2960
2961**系统能力**:SystemCapability.Communication.Bluetooth.Core2962
2963**返回值:**
2964
2965| 类型                    | 说明                                |
2966| --------------------- | --------------------------------- |
2967| Promise&lt;number&gt; | 返回信号强度,单位&nbsp;dBm,通过promise形式获取。 |
2968
2969**示例:**
2970
2971```js
2972// promise
2973let gattClient = bluetooth.BLE.createGattClientDevice("XX:XX:XX:XX:XX:XX");
2974let rssi = gattClient.getRssiValue().then((data) => {
2975    console.info('rssi' + JSON.stringify(data));
2976})
2977```
2978
2979## ScanMode<sup>8+</sup><a name="ScanMode"></a>
2980
2981枚举,扫描模式。
2982
2983**系统能力**:SystemCapability.Communication.Bluetooth.Core2984
2985| 名称                                       | 默认值  | 说明              |
2986| ---------------------------------------- | ---- | --------------- |
2987| SCAN_MODE_NONE                           | 0    | 没有扫描模式。         |
2988| SCAN_MODE_CONNECTABLE                    | 1    | 可连接扫描模式。        |
2989| SCAN_MODE_GENERAL_DISCOVERABLE           | 2    | general发现模式。    |
2990| SCAN_MODE_LIMITED_DISCOVERABLE           | 3    | limited发现模式。    |
2991| SCAN_MODE_CONNECTABLE_GENERAL_DISCOVERABLE | 4    | 可连接general发现模式。 |
2992| SCAN_MODE_CONNECTABLE_LIMITED_DISCOVERABLE | 5    | 可连接limited发现模式。 |
2993
2994## BondState<sup>8+</sup><a name="BondState"></a>
2995
2996枚举,配对状态。
2997
2998**系统能力**:SystemCapability.Communication.Bluetooth.Core2999
3000| 名称                 | 默认值  | 说明     |
3001| ------------------ | ---- | ------ |
3002| BOND_STATE_INVALID | 0    | 无效的配对。 |
3003| BOND_STATE_BONDING | 1    | 正在配对。  |
3004| BOND_STATE_BONDED  | 2    | 已配对。   |
3005
3006
3007## SppOption<sup>8+</sup><a name="SppOption"></a>
3008
3009描述spp的配置参数。
3010
3011**系统能力**:SystemCapability.Communication.Bluetooth.Core3012
3013| 名称     | 参数类型                | 可读   | 可写   | 说明          |
3014| ------ | ------------------- | ---- | ---- | ----------- |
3015| uuid   | string              | 是    | 是    | spp单据的uuid。 |
3016| secure | boolean             | 是    | 是    | 是否是安全通道。    |
3017| type   | [SppType](#spptype) | 是    | 是    | Spp链路类型。    |
3018
3019
3020## SppType<sup>8+</sup><a name="SppType"></a>
3021
3022枚举,Spp链路类型。
3023
3024**系统能力**:SystemCapability.Communication.Bluetooth.Core3025
3026| 名称         | 默认值  | 说明            |
3027| ---------- | ---- | ------------- |
3028| SPP_RFCOMM | 0    | 表示rfcomm链路类型。 |
3029
3030
3031## GattService
3032
3033描述service的接口参数定义。
3034
3035**系统能力**:SystemCapability.Communication.Bluetooth.Core3036
3037| 名称              | 参数类型                                     | 可读   | 可写   | 说明                                       |
3038| --------------- | ---------------------------------------- | ---- | ---- | ---------------------------------------- |
3039| serviceUuid     | string                                   | 是    | 是    | 特定服务(service)的UUID,例如:00001888-0000-1000-8000-00805f9b34fb。 |
3040| isPrimary       | boolean                                  | 是    | 是    | 如果是主服务设置为true,否则设置为false。                |
3041| characteristics | Array&lt;[BLECharacteristic](#blecharacteristic)&gt; | 是    | 是    | 当前服务包含的特征列表。                             |
3042| includeServices | Array&lt;[GattService](#gattservice)&gt; | 是    | 是    | 当前服务依赖的其它服务。                             |
3043
3044
3045## BLECharacteristic
3046
3047描述characteristic的接口参数定义 。
3048
3049**系统能力**:SystemCapability.Communication.Bluetooth.Core3050
3051| 名称                  | 参数类型                                     | 可读   | 可写   | 说明                                       |
3052| ------------------- | ---------------------------------------- | ---- | ---- | ---------------------------------------- |
3053| serviceUuid         | string                                   | 是    | 是    | 特定服务(service)的UUID,例如:00001888-0000-1000-8000-00805f9b34fb。 |
3054| characteristicUuid  | string                                   | 是    | 是    | 特定特征(characteristic)的UUID,例如:00002a11-0000-1000-8000-00805f9b34fb。 |
3055| characteristicValue | ArrayBuffer                              | 是    | 是    | 特征对应的二进制值。                               |
3056| descriptors         | Array&lt;[BLEDescriptor](#bledescriptor)&gt; | 是    | 是    | 特定特征的描述符列表。                              |
3057
3058
3059## BLEDescriptor
3060
3061描述descriptor的接口参数定义 。
3062
3063**系统能力**:SystemCapability.Communication.Bluetooth.Core3064
3065| 名称                 | 参数类型        | 可读   | 可写   | 说明                                       |
3066| ------------------ | ----------- | ---- | ---- | ---------------------------------------- |
3067| serviceUuid        | string      | 是    | 是    | 特定服务(service)的UUID,例如:00001888-0000-1000-8000-00805f9b34fb。 |
3068| characteristicUuid | string      | 是    | 是    | 特定特征(characteristic)的UUID,例如:00002a11-0000-1000-8000-00805f9b34fb。 |
3069| descriptorUuid     | string      | 是    | 是    | 描述符(descriptor)的UUID,例如:00002902-0000-1000-8000-00805f9b34fb。 |
3070| descriptorValue    | ArrayBuffer | 是    | 是    | 描述符对应的二进制值。                              |
3071
3072
3073## NotifyCharacteristic
3074
3075描述server端特征值变化时发送的特征通知参数定义。
3076
3077**系统能力**:SystemCapability.Communication.Bluetooth.Core3078
3079| 名称                  | 参数类型        | 可读   | 可写   | 说明                                       |
3080| ------------------- | ----------- | ---- | ---- | ---------------------------------------- |
3081| serviceUuid         | string      | 是    | 是    | 特定服务(service)的UUID,例如:00001888-0000-1000-8000-00805f9b34fb。 |
3082| characteristicUuid  | string      | 是    | 是    | 特定特征(characteristic)的UUID,例如:00002a11-0000-1000-8000-00805f9b34fb。 |
3083| characteristicValue | ArrayBuffer | 是    | 是    | 特征对应的二进制值。                               |
3084| confirm             | boolean     | 是    | 是    | 如果是notification则对端回复确认设置为true,如果是indication则对端不需要回复确认设置为false。 |
3085
3086
3087## CharacteristicReadReq
3088
3089描述server端订阅后收到的特征值读请求事件参数结构。
3090
3091**系统能力**:SystemCapability.Communication.Bluetooth.Core3092
3093| 名称                 | 参数类型   | 可读   | 可写   | 说明                                       |
3094| ------------------ | ------ | ---- | ---- | ---------------------------------------- |
3095| deviceId           | string | 是    | 否    | 表示发送特征值读请求的远端设备地址,例如:"XX:XX:XX:XX:XX:XX"。 |
3096| transId            | number | 是    | 否    | 表示读请求的传输ID,server端回复响应时需填写相同的传输ID。       |
3097| offset             | number | 是    | 否    | 表示读特征值数据的起始位置。例如:k表示从第k个字节开始读,server端回复响应时需填写相同的offset。 |
3098| characteristicUuid | string | 是    | 否    | 特定特征(characteristic)的UUID,例如:00002a11-0000-1000-8000-00805f9b34fb。 |
3099| serviceUuid        | string | 是    | 否    | 特定服务(service)的UUID,例如:00001888-0000-1000-8000-00805f9b34fb。 |
3100
3101
3102## CharacteristicWriteReq
3103
3104描述server端订阅后收到的特征值写请求事件参数结构。
3105
3106**系统能力**:SystemCapability.Communication.Bluetooth.Core3107
3108| 名称                 | 参数类型   | 可读   | 可写   | 说明                                       |
3109| ------------------ | ------ | ---- | ---- | ---------------------------------------- |
3110| deviceId           | string | 是    | 否    | 表示发送特征值写请求的远端设备地址,例如:"XX:XX:XX:XX:XX:XX"。 |
3111| transId            | number | 是    | 否    | 表示写请求的传输ID,server端回复响应时需填写相同的传输ID。       |
3112| offset             | number | 是    | 否    | 表示写特征值数据的起始位置。例如:k表示从第k个字节开始写,server端回复响应时需填写相同的offset。 |
3113| descriptorUuid     | string | 是    | 否    | 表示描述符(descriptor)的UUID,例如:00002902-0000-1000-8000-00805f9b34fb。 |
3114| characteristicUuid | string | 是    | 否    | 特定特征(characteristic)的UUID,例如:00002a11-0000-1000-8000-00805f9b34fb。 |
3115| serviceUuid        | string | 是    | 否    | 特定服务(service)的UUID,例如:00001888-0000-1000-8000-00805f9b34fb。 |
3116
3117
3118## DescriptorReadReq
3119
3120描述server端订阅后收到的描述符读请求事件参数结构。
3121
3122**系统能力**:SystemCapability.Communication.Bluetooth.Core3123
3124| 名称                 | 参数类型   | 可读   | 可写   | 说明                                       |
3125| ------------------ | ------ | ---- | ---- | ---------------------------------------- |
3126| deviceId           | string | 是    | 否    | 表示发送描述符读请求的远端设备地址,例如:"XX:XX:XX:XX:XX:XX"。 |
3127| transId            | number | 是    | 否    | 表示读请求的传输ID,server端回复响应时需填写相同的传输ID。       |
3128| offset             | number | 是    | 否    | 表示读描述符数据的起始位置。例如:k表示从第k个字节开始读,server端回复响应时需填写相同的offset。 |
3129| descriptorUuid     | string | 是    | 否    | 表示描述符(descriptor)的UUID,例如:00002902-0000-1000-8000-00805f9b34fb。 |
3130| characteristicUuid | string | 是    | 否    | 特定特征(characteristic)的UUID,例如:00002a11-0000-1000-8000-00805f9b34fb。 |
3131| serviceUuid        | string | 是    | 否    | 特定服务(service)的UUID,例如:00001888-0000-1000-8000-00805f9b34fb。 |
3132
3133
3134## DescriptorWriteReq
3135
3136描述server端订阅后收到的描述符写请求事件参数结构。
3137
3138**系统能力**:SystemCapability.Communication.Bluetooth.Core3139
3140| 名称                 | 参数类型        | 可读   | 可写   | 说明                                       |
3141| ------------------ | ----------- | ---- | ---- | ---------------------------------------- |
3142| deviceId           | string      | 是    | 否    | 表示发送描述符写请求的远端设备地址,例如:"XX:XX:XX:XX:XX:XX"。 |
3143| transId            | number      | 是    | 否    | 表示写请求的传输ID,server端回复响应时需填写相同的传输ID。       |
3144| offset             | number      | 是    | 否    | 表示写描述符数据的起始位置。例如:k表示从第k个字节开始写,server端回复响应时需填写相同的offset。 |
3145| isPrep             | boolean     | 是    | 否    | 表示写请求是否立即执行。                             |
3146| needRsp            | boolean     | 是    | 否    | 表示是否要给client端回复响应。                       |
3147| value              | ArrayBuffer | 是    | 否    | 表示写入的描述符二进制数据。                           |
3148| descriptorUuid     | string      | 是    | 否    | 表示描述符(descriptor)的UUID,例如:00002902-0000-1000-8000-00805f9b34fb。 |
3149| characteristicUuid | string      | 是    | 否    | 特定特征(characteristic)的UUID,例如:00002a11-0000-1000-8000-00805f9b34fb。 |
3150| serviceUuid        | string      | 是    | 否    | 特定服务(service)的UUID,例如:00001888-0000-1000-8000-00805f9b34fb。 |
3151
3152
3153## ServerResponse
3154
3155描述server端回复client端读/写请求的响应参数结构。
3156
3157**系统能力**:SystemCapability.Communication.Bluetooth.Core3158
3159| 名称       | 参数类型        | 可读   | 可写   | 说明                                     |
3160| -------- | ----------- | ---- | ---- | -------------------------------------- |
3161| deviceId | string      | 是    | 否    | 表示远端设备地址,例如:"XX:XX:XX:XX:XX:XX"。       |
3162| transId  | number      | 是    | 否    | 表示请求的传输ID,与订阅的读/写请求事件携带的ID保持一致。        |
3163| status   | number      | 是    | 否    | 表示响应的状态,设置为0即可,表示正常。                   |
3164| offset   | number      | 是    | 否    | 表示请求的读/写起始位置,与订阅的读/写请求事件携带的offset保持一致。 |
3165| value    | ArrayBuffer | 是    | 否    | 表示回复响应的二进制数据。                          |
3166
3167
3168## BLEConnectChangedState
3169
3170描述Gatt profile连接状态 。
3171
3172**系统能力**:SystemCapability.Communication.Bluetooth.Core3173
3174| 名称     | 参数类型                                          | 可读 | 可写 | 说明                                          |
3175| -------- | ------------------------------------------------- | ---- | ---- | --------------------------------------------- |
3176| deviceId | string                                            | 是   | 否   | 表示远端设备地址,例如:"XX:XX:XX:XX:XX:XX"。 |
3177| state    | [ProfileConnectionState](#profileconnectionstate) | 是   | 是   | 表示BLE连接状态的枚举。                       |
3178
3179
3180## ProfileConnectionState
3181
3182枚举,蓝牙设备的profile连接状态。
3183
3184**系统能力**:SystemCapability.Communication.Bluetooth.Core3185
3186| 名称                  | 默认值  | 说明             |
3187| ------------------- | ---- | -------------- |
3188| STATE_DISCONNECTED  | 0    | 表示profile已断连。  |
3189| STATE_CONNECTING    | 1    | 表示profile正在连接。 |
3190| STATE_CONNECTED     | 2    | 表示profile已连接。  |
3191| STATE_DISCONNECTING | 3    | 表示profile正在断连。 |
3192
3193
3194## ScanFilter
3195
3196扫描过滤参数。
3197
3198**系统能力**:SystemCapability.Communication.Bluetooth.Core3199
3200| 名称          | 参数类型   | 可读   | 可写   | 说明                                       |
3201| ----------- | ------ | ---- | ---- | ---------------------------------------- |
3202| deviceId    | string | 是    | 是    | 表示过滤的BLE设备地址,例如:"XX:XX:XX:XX:XX:XX"。     |
3203| name        | string | 是    | 是    | 表示过滤的BLE设备名。                             |
3204| serviceUuid | string | 是    | 是    | 表示过滤包含该UUID服务的设备,例如:00001888-0000-1000-8000-00805f9b34fb。 |
3205
3206
3207## ScanOptions
3208
3209扫描的配置参数。
3210
3211**系统能力**:SystemCapability.Communication.Bluetooth.Core3212
3213| 名称        | 参数类型                    | 可读   | 可写   | 说明                                     |
3214| --------- | ----------------------- | ---- | ---- | -------------------------------------- |
3215| interval  | number                  | 是    | 是    | 表示扫描结果上报延迟时间,默认值为0。                    |
3216| dutyMode  | [ScanDuty](#scanduty)   | 是    | 是    | 表示扫描模式,默认值为SCAN_MODE_LOW_POWER。        |
3217| matchMode | [MatchMode](#matchmode) | 是    | 是    | 表示硬件的过滤匹配模式,默认值为MATCH_MODE_AGGRESSIVE。 |
3218
3219
3220## ScanDuty
3221
3222枚举,扫描模式。
3223
3224**系统能力**:SystemCapability.Communication.Bluetooth.Core3225
3226| 名称                    | 默认值  | 说明           |
3227| --------------------- | ---- | ------------ |
3228| SCAN_MODE_LOW_POWER   | 0    | 表示低功耗模式,默认值。 |
3229| SCAN_MODE_BALANCED    | 1    | 表示均衡模式。      |
3230| SCAN_MODE_LOW_LATENCY | 2    | 表示低延迟模式。     |
3231
3232
3233## MatchMode
3234
3235枚举,硬件过滤匹配模式。
3236
3237**系统能力**:SystemCapability.Communication.Bluetooth.Core3238
3239| 名称                    | 默认值  | 说明                                       |
3240| --------------------- | ---- | ---------------------------------------- |
3241| MATCH_MODE_AGGRESSIVE | 1    | 表示硬件上报扫描结果门限较低,比如扫描到的功率较低或者一段时间扫描到的次数较少也触发上报,默认值。 |
3242| MATCH_MODE_STICKY     | 2    | 表示硬件上报扫描结果门限较高,更高的功率门限以及扫描到多次才会上报。       |
3243
3244
3245## ScanResult
3246
3247扫描结果上报数据。
3248
3249**系统能力**:SystemCapability.Communication.Bluetooth.Core3250
3251| 名称       | 参数类型        | 可读   | 可写   | 说明                                 |
3252| -------- | ----------- | ---- | ---- | ---------------------------------- |
3253| deviceId | string      | 是    | 否    | 表示扫描到的设备地址,例如:"XX:XX:XX:XX:XX:XX"。 |
3254| rssi     | number      | 是    | 否    | 表示扫描到的设备的rssi值。                    |
3255| data     | ArrayBuffer | 是    | 否    | 表示扫描到的设备发送的广播包。                    |
3256
3257
3258## BluetoothState
3259
3260枚举,蓝牙开关状态。
3261
3262**系统能力**:SystemCapability.Communication.Bluetooth.Core3263
3264| 名称                    | 默认值  | 说明                 |
3265| --------------------- | ---- | ------------------ |
3266| STATE_OFF             | 0    | 表示蓝牙已关闭。           |
3267| STATE_TURNING_ON      | 1    | 表示蓝牙正在打开。          |
3268| STATE_ON              | 2    | 表示蓝牙已打开。           |
3269| STATE_TURNING_OFF     | 3    | 表示蓝牙正在关闭。          |
3270| STATE_BLE_TURNING_ON  | 4    | 表示蓝牙正在打开LE-only模式。 |
3271| STATE_BLE_ON          | 5    | 表示蓝牙正处于LE-only模式。  |
3272| STATE_BLE_TURNING_OFF | 6    | 表示蓝牙正在关闭LE-only模式。 |
3273
3274
3275## AdvertiseSetting
3276
3277描述蓝牙低功耗设备发送广播的参数。
3278
3279**系统能力**:SystemCapability.Communication.Bluetooth.Core3280
3281| 名称          | 参数类型    | 可读   | 可写   | 说明                                       |
3282| ----------- | ------- | ---- | ---- | ---------------------------------------- |
3283| interval    | number  | 是    | 是    | 表示广播间隔,最小值设置32个slot表示20ms,最大值设置16384个slot,默认值设置为1600个slot表示1s。 |
3284| txPower     | number  | 是    | 是    | 表示发送功率,最小值设置-127,最大值设置1,默认值设置-7,单位dbm。   |
3285| connectable | boolean | 是    | 是    | 表示是否是可连接广播,默认值设置为true。                   |
3286
3287
3288## AdvertiseData
3289
3290描述BLE广播数据包的内容。
3291
3292**系统能力**:SystemCapability.Communication.Bluetooth.Core3293
3294| 名称              | 参数类型                                     | 可读   | 可写   | 说明                          |
3295| --------------- | ---------------------------------------- | ---- | ---- | --------------------------- |
3296| serviceUuids    | Array&lt;string&gt;                      | 是    | 是    | 表示要广播的服务&nbsp;UUID&nbsp;列表。 |
3297| manufactureData | Array&lt;[ManufactureData](#manufacturedata)&gt; | 是    | 是    | 表示要广播的广播的制造商信息列表。           |
3298| serviceData     | Array&lt;[ServiceData](#servicedata)&gt; | 是    | 是    | 表示要广播的服务数据列表。               |
3299
3300
3301## ManufactureData
3302
3303描述BLE广播数据包的内容。
3304
3305**系统能力**:SystemCapability.Communication.Bluetooth.Core3306
3307| 名称               | 参数类型                | 可读   | 可写   | 说明                 |
3308| ---------------- | ------------------- | ---- | ---- | ------------------ |
3309| manufactureId    | Array&lt;string&gt; | 是    | 是    | 表示制造商的ID,由蓝牙SIG分配。 |
3310| manufactureValue | ArrayBuffer         | 是    | 是    | 表示制造商发送的制造商数据。     |
3311
3312
3313## ServiceData
3314
3315描述广播包中服务数据内容。
3316
3317**系统能力**:SystemCapability.Communication.Bluetooth.Core3318
3319| 名称           | 参数类型        | 可读   | 可写   | 说明         |
3320| ------------ | ----------- | ---- | ---- | ---------- |
3321| serviceUuid  | string      | 是    | 是    | 表示服务的UUID。 |
3322| serviceValue | ArrayBuffer | 是    | 是    | 表示服务数据。    |
3323
3324
3325## PinRequiredParam<sup>8+</sup><a name="PinRequiredParam"></a>
3326
3327描述配对请求参数。
3328
3329**系统能力**:SystemCapability.Communication.Bluetooth.Core3330
3331| 名称       | 参数类型   | 可读   | 可写   | 说明          |
3332| -------- | ------ | ---- | ---- | ----------- |
3333| deviceId | string | 是    | 否    | 表示要配对的设备ID。 |
3334| pinCode  | string | 是    | 否    | 表示要配对的密钥。   |
3335
3336
3337## BondStateParam<sup>8+</sup><a name="BondStateParam"></a>
3338
3339描述配对状态参数。
3340
3341**系统能力**:SystemCapability.Communication.Bluetooth.Core3342
3343| 名称       | 参数类型   | 可读   | 可写   | 说明          |
3344| -------- | ------ | ---- | ---- | ----------- |
3345| deviceId | string      | 是    | 否    | 表示要配对的设备ID。 |
3346| state    | BondState   | 是    | 否    | 表示配对设备的状态。 |
3347
3348
3349## StateChangeParam<sup>8+</sup><a name="StateChangeParam"></a>
3350
3351描述profile状态改变参数。
3352
3353**系统能力**:SystemCapability.Communication.Bluetooth.Core3354
3355| 名称     | 参数类型                                          | 可读 | 可写 | 说明                            |
3356| -------- | ------------------------------------------------- | ---- | ---- | ------------------------------- |
3357| deviceId | string                                            | 是   | 否   | 表示蓝牙设备地址。              |
3358| state    | [ProfileConnectionState](#profileconnectionstate) | 是   | 否   | 表示蓝牙设备的profile连接状态。 |
3359
3360
3361## DeviceClass<sup>8+</sup><a name="DeviceClass"></a>
3362
3363描述蓝牙设备的类别。
3364
3365**系统能力**:SystemCapability.Communication.Bluetooth.Core3366
3367| 名称              | 参数类型                                | 可读   | 可写   | 说明               |
3368| --------------- | ----------------------------------- | ---- | ---- | ---------------- |
3369| majorClass      | [MajorClass](#majorclass)           | 是    | 否    | 表示蓝牙设备主要类别的枚举。   |
3370| majorMinorClass | [MajorMinorClass](#majorminorclass) | 是    | 否    | 表示主要次要蓝牙设备类别的枚举。 |
3371| classOfDevice   | number                              | 是    | 否    | 表示设备类别。          |
3372
3373
3374
3375## MajorClass<sup>8+</sup><a name="MajorClass"></a>
3376
3377枚举,蓝牙设备主要类别。
3378
3379**系统能力**:SystemCapability.Communication.Bluetooth.Core3380
3381| 名称                  | 默认值    | 说明         |
3382| ------------------- | ------ | ---------- |
3383| MAJOR_MISC          | 0x0000 | 表示杂项设备。    |
3384| MAJOR_COMPUTER      | 0x0100 | 表示计算机设备。   |
3385| MAJOR_PHONE         | 0x0200 | 表示手机设备。    |
3386| MAJOR_NETWORKING    | 0x0300 | 表示网络设备。    |
3387| MAJOR_AUDIO_VIDEO   | 0x0400 | 表示音频和视频设备。 |
3388| MAJOR_PERIPHERAL    | 0x0500 | 表示外围设备。    |
3389| MAJOR_IMAGING       | 0x0600 | 表示成像设备。    |
3390| MAJOR_WEARABLE      | 0x0700 | 表示可穿戴设备。   |
3391| MAJOR_TOY           | 0x0800 | 表示玩具设备。    |
3392| MAJOR_HEALTH        | 0x0900 | 表示健康设备。    |
3393| MAJOR_UNCATEGORIZED | 0x1F00 | 表示未分类设备。   |
3394
3395
3396## MajorMinorClass<sup>8+</sup><a name="MajorMinorClass"></a>
3397
3398枚举,主要次要蓝牙设备类别。
3399
3400**系统能力**:SystemCapability.Communication.Bluetooth.Core3401
3402| 名称                                       | 默认值    | 说明              |
3403| ---------------------------------------- | ------ | --------------- |
3404| COMPUTER_UNCATEGORIZED                   | 0x0100 | 表示未分类计算机设备。     |
3405| COMPUTER_DESKTOP                         | 0x0104 | 表示台式计算机设备。      |
3406| COMPUTER_SERVER                          | 0x0108 | 表示服务器设备。        |
3407| COMPUTER_LAPTOP                          | 0x010C | 表示便携式计算机设备。     |
3408| COMPUTER_HANDHELD_PC_PDA                 | 0x0110 | 表示手持式计算机设备。     |
3409| COMPUTER_PALM_SIZE_PC_PDA                | 0x0114 | 表示掌上电脑设备。       |
3410| COMPUTER_WEARABLE                        | 0x0118 | 表示可穿戴计算机设备。     |
3411| COMPUTER_TABLET                          | 0x011C | 表示平板电脑设备。       |
3412| PHONE_UNCATEGORIZED                      | 0x0200 | 表示未分类手机设备。      |
3413| PHONE_CELLULAR                           | 0x0204 | 表示便携式手机设备。      |
3414| PHONE_CORDLESS                           | 0x0208 | 表示无线电话设备。       |
3415| PHONE_SMART                              | 0x020C | 表示智能手机设备。       |
3416| PHONE_MODEM_OR_GATEWAY                   | 0x0210 | 表示调制解调器或网关手机设备。 |
3417| PHONE_ISDN                               | 0x0214 | 表示ISDN手机设备。     |
3418| NETWORK_FULLY_AVAILABLE                  | 0x0300 | 表示网络完全可用设备。     |
3419| NETWORK_1_TO_17_UTILIZED                 | 0x0320 | 表示使用网络1到17设备。   |
3420| NETWORK_17_TO_33_UTILIZED                | 0x0340 | 表示使用网络17到33设备。  |
3421| NETWORK_33_TO_50_UTILIZED                | 0x0360 | 表示使用网络33到50设备。  |
3422| NETWORK_60_TO_67_UTILIZED                | 0x0380 | 表示使用网络60到67设备。  |
3423| NETWORK_67_TO_83_UTILIZED                | 0x03A0 | 表示使用网络67到83设备。  |
3424| NETWORK_83_TO_99_UTILIZED                | 0x03C0 | 表示使用网络83到99设备。  |
3425| NETWORK_NO_SERVICE                       | 0x03E0 | 表示网络无服务设备。      |
3426| AUDIO_VIDEO_UNCATEGORIZED                | 0x0400 | 表示未分类音频视频设备。    |
3427| AUDIO_VIDEO_WEARABLE_HEADSET             | 0x0404 | 表示可穿戴式音频视频设备。   |
3428| AUDIO_VIDEO_HANDSFREE                    | 0x0408 | 表示免提音频视频设备。     |
3429| AUDIO_VIDEO_MICROPHONE                   | 0x0410 | 表示麦克风音频视频设备。    |
3430| AUDIO_VIDEO_LOUDSPEAKER                  | 0x0414 | 表示扬声器音频视频设备。    |
3431| AUDIO_VIDEO_HEADPHONES                   | 0x0418 | 表示头戴式音频视频设备。    |
3432| AUDIO_VIDEO_PORTABLE_AUDIO               | 0x041C | 表示便携式音频视频设备。    |
3433| AUDIO_VIDEO_CAR_AUDIO                    | 0x0420 | 表示汽车音频视频设备。     |
3434| AUDIO_VIDEO_SET_TOP_BOX                  | 0x0424 | 表示机顶盒音频视频设备。    |
3435| AUDIO_VIDEO_HIFI_AUDIO                   | 0x0428 | 表示高保真音响设备。      |
3436| AUDIO_VIDEO_VCR                          | 0x042C | 表示录像机音频视频设备。    |
3437| AUDIO_VIDEO_VIDEO_CAMERA                 | 0x0430 | 表示照相机音频视频设备。    |
3438| AUDIO_VIDEO_CAMCORDER                    | 0x0434 | 表示摄像机音频视频设备。    |
3439| AUDIO_VIDEO_VIDEO_MONITOR                | 0x0438 | 表示监视器音频视频设备。    |
3440| AUDIO_VIDEO_VIDEO_DISPLAY_AND_LOUDSPEAKER | 0x043C | 表示视频显示器和扬声器设备。  |
3441| AUDIO_VIDEO_VIDEO_CONFERENCING           | 0x0440 | 表示音频视频会议设备。     |
3442| AUDIO_VIDEO_VIDEO_GAMING_TOY             | 0x0448 | 表示游戏玩具音频视频设备。   |
3443| PERIPHERAL_NON_KEYBOARD_NON_POINTING     | 0x0500 | 表示非键盘非指向外围设备。   |
3444| PERIPHERAL_KEYBOARD                      | 0x0540 | 表示外设键盘设备。       |
3445| PERIPHERAL_POINTING_DEVICE               | 0x0580 | 表示定点装置外围设备。     |
3446| PERIPHERAL_KEYBOARD_POINTING             | 0x05C0 | 表示键盘指向外围设备。     |
3447| PERIPHERAL_UNCATEGORIZED                 | 0x0500 | 表示未分类外围设备。      |
3448| PERIPHERAL_JOYSTICK                      | 0x0504 | 表示周边操纵杆设备。      |
3449| PERIPHERAL_GAMEPAD                       | 0x0508 | 表示周边游戏板设备。      |
3450| PERIPHERAL_REMOTE_CONTROL                | 0x05C0 | 表示远程控制外围设备。     |
3451| PERIPHERAL_SENSING_DEVICE                | 0x0510 | 表示外围传感设备设备。     |
3452| PERIPHERAL_DIGITIZER_TABLET              | 0x0514 | 表示外围数字化仪平板电脑设备。 |
3453| PERIPHERAL_CARD_READER                   | 0x0518 | 表示外围读卡器设备。      |
3454| PERIPHERAL_DIGITAL_PEN                   | 0x051C | 表示外设数码笔设备。      |
3455| PERIPHERAL_SCANNER_RFID                  | 0x0520 | 表示射频识别扫描仪外围设备。  |
3456| PERIPHERAL_GESTURAL_INPUT                | 0x0522 | 表示手势输入外围设备。     |
3457| IMAGING_UNCATEGORIZED                    | 0x0600 | 表示未分类的图像设备。     |
3458| IMAGING_DISPLAY                          | 0x0610 | 表示图像显示设备。       |
3459| IMAGING_CAMERA                           | 0x0620 | 表示成像照相机设备。      |
3460| IMAGING_SCANNER                          | 0x0640 | 表示成像扫描仪设备。      |
3461| IMAGING_PRINTER                          | 0x0680 | 表示成像打印机设备。      |
3462| WEARABLE_UNCATEGORIZED                   | 0x0700 | 表示未分类的可穿戴设备。    |
3463| WEARABLE_WRIST_WATCH                     | 0x0704 | 表示可穿戴腕表设备。      |
3464| WEARABLE_PAGER                           | 0x0708 | 表示可穿戴寻呼机设备。     |
3465| WEARABLE_JACKET                          | 0x070C | 表示夹克可穿戴设备。      |
3466| WEARABLE_HELMET                          | 0x0710 | 表示可穿戴头盔设备。      |
3467| WEARABLE_GLASSES                         | 0x0714 | 表示可穿戴眼镜设备。      |
3468| TOY_UNCATEGORIZED                        | 0x0800 | 表示未分类的玩具设备。     |
3469| TOY_ROBOT                                | 0x0804 | 表示玩具机器人设备。      |
3470| TOY_VEHICLE                              | 0x0808 | 表示玩具车设备。        |
3471| TOY_DOLL_ACTION_FIGURE                   | 0x080C | 表示人形娃娃玩具设备。     |
3472| TOY_CONTROLLER                           | 0x0810 | 表示玩具控制器设备。      |
3473| TOY_GAME                                 | 0x0814 | 表示玩具游戏设备。       |
3474| HEALTH_UNCATEGORIZED                     | 0x0900 | 表示未分类健康设备。      |
3475| HEALTH_BLOOD_PRESSURE                    | 0x0904 | 表示血压健康设备。       |
3476| HEALTH_THERMOMETER                       | 0x0908 | 表示温度计健康设备。      |
3477| HEALTH_WEIGHING                          | 0x090C | 表示体重健康设备。       |
3478| HEALTH_GLUCOSE                           | 0x0910 | 表示葡萄糖健康设备。      |
3479| HEALTH_PULSE_OXIMETER                    | 0x0914 | 表示脉搏血氧仪健康设备。    |
3480| HEALTH_PULSE_RATE                        | 0x0918 | 表示脉搏率健康设备。      |
3481| HEALTH_DATA_DISPLAY                      | 0x091C | 表示数据显示健康设备。     |
3482| HEALTH_STEP_COUNTER                      | 0x0920 | 表示阶梯计数器健康设备。    |
3483| HEALTH_BODY_COMPOSITION_ANALYZER         | 0x0924 | 表示身体成分分析仪健康设备。  |
3484| HEALTH_PEAK_FLOW_MOITOR                  | 0x0928 | 表示湿度计健康设备。      |
3485| HEALTH_MEDICATION_MONITOR                | 0x092C | 表示药物监视仪健康设备。    |
3486| HEALTH_KNEE_PROSTHESIS                   | 0x0930 | 表示膝盖假肢健康设备。     |
3487| HEALTH_ANKLE_PROSTHESIS                  | 0x0934 | 表示脚踝假肢健康设备。     |
3488| HEALTH_GENERIC_HEALTH_MANAGER            | 0x0938 | 表示通用健康管理设备。     |
3489| HEALTH_PERSONAL_MOBILITY_DEVICE          | 0x093C | 表示个人移动健康设备。     |
3490
3491
3492## PlayingState<sup>8+</sup><a name="PlayingState"></a>
3493
3494枚举,蓝牙A2DP 播放状态。
3495
3496**系统能力**:SystemCapability.Communication.Bluetooth.Core3497
3498| 名称                | 默认值    | 说明      |
3499| ----------------- | ------ | ------- |
3500| STATE_NOT_PLAYING | 0x0000 | 表示未播放。  |
3501| STATE_PLAYING     | 0x0001 | 表示正在播放。 |
3502
3503
3504## ProfileId<sup>8+</sup><a name="ProfileId"></a>
3505
3506枚举,蓝牙profile id。
3507
3508**系统能力**:SystemCapability.Communication.Bluetooth.Core3509
3510| 名称                               | 默认值    | 说明              |
3511| -------------------------------- | ------ | --------------- |
3512| PROFILE_A2DP_SOURCE              | 0x0001 | 表示A2DP profile。 |
3513| PROFILE_HANDS_FREE_AUDIO_GATEWAY | 0x0004 | 表示HFP profile。  |