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