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