# @ohos.bluetooth.ble (è“牙ble模å—) bleæ¨¡å—æä¾›äº†å¯¹è“牙æ“作和管ç†çš„æ–¹æ³•。 > **说明:** > > 本模å—首批接å£ä»ŽAPI version 10开始支æŒã€‚åŽç»ç‰ˆæœ¬çš„æ–°å¢žæŽ¥å£ï¼Œé‡‡ç”¨ä¸Šè§’æ ‡å•ç‹¬æ ‡è®°æŽ¥å£çš„起始版本。 ## å¯¼å…¥æ¨¡å— ```js import { ble } from '@kit.ConnectivityKit'; ``` ## ProfileConnectionState type ProfileConnectionState = constant.ProfileConnectionState è“牙设备的profile连接状æ€ã€‚ **系统能力**:SystemCapability.Communication.Bluetooth.Core。 | 类型 | 说明 | | ------------------- | ------------------- | | [constant.ProfileConnectionState](js-apis-bluetooth-constant.md#profileconnectionstate) | è“牙设备的profile连接状æ€ã€‚ | ## ble.createGattServer<a name="createGattServer"></a> createGattServer(): GattServer 创建GattServer实例。 **原å化æœåŠ¡API**:从API version 12å¼€å§‹ï¼Œè¯¥æŽ¥å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力**:SystemCapability.Communication.Bluetooth.Core。 **返回值:** | 类型 | 说明 | | ----------------------------- | ---------- | | [GattServer](#gattserver) | 返回一个GattæœåŠ¡çš„å®žä¾‹ã€‚ | **示例:** ```js let gattServer: ble.GattServer = ble.createGattServer(); console.info('gatt success'); ``` ## ble.createGattClientDevice<a name="createGattClientDevice"></a> createGattClientDevice(deviceId: string): GattClientDevice 创建一个å¯ä½¿ç”¨çš„GattClientDevice实例。 **原å化æœåŠ¡API**:从API version 12å¼€å§‹ï¼Œè¯¥æŽ¥å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力**:SystemCapability.Communication.Bluetooth.Core。 **傿•°ï¼š** | 傿•°å | 类型 | å¿…å¡« | 说明 | | -------- | ------ | ---- | ------------------------------------ | | deviceId | string | 是 | 对端设备地å€ï¼Œ 例如:"XX:XX:XX:XX:XX:XX"。 | **返回值:** | 类型 | 说明 | | ------------------------------------- | ------------------------------------ | | [GattClientDevice](#gattclientdevice) | client端类,使用client端方法之å‰éœ€è¦åˆ›å»ºè¯¥ç±»çš„实例进行æ“作。 | **错误ç **: 以下错误ç 的详细介ç»è¯·å‚è§[è“牙æœåŠ¡å系统错误ç ](errorcode-bluetoothManager.md)。 | 错误ç ID | é”™è¯¯ä¿¡æ¯ | | -------- | ---------------------------- | |401 | Invalid parameter. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. 3. Parameter verification failed. | |801 | Capability not supported. | **示例:** ```js import { AsyncCallback, BusinessError } from '@kit.BasicServicesKit'; try { let device: ble.GattClientDevice = ble.createGattClientDevice('XX:XX:XX:XX:XX:XX'); } catch (err) { console.error('errCode: ' + (err as BusinessError).code + ', errMessage: ' + (err as BusinessError).message); } ``` ## ble.getConnectedBLEDevices<a name="getConnectedBLEDevices"></a> getConnectedBLEDevices(): Array<string> 获å–和当å‰è®¾å¤‡è¿žæŽ¥çš„BLE设备。 **éœ€è¦æƒé™**:ohos.permission.ACCESS_BLUETOOTH **系统能力**:SystemCapability.Communication.Bluetooth.Core。 **返回值:** | 类型 | 说明 | | ------------------- | ------------------- | | Array<string> | 返回当å‰è®¾å¤‡ä½œä¸ºServer端时连接BLE设备地å€é›†åˆã€‚基于信æ¯å®‰å…¨è€ƒè™‘,æ¤å¤„获å–的设备地å€ä¸ºéšæœºMAC地å€ã€‚é…对æˆåŠŸåŽï¼Œè¯¥åœ°å€ä¸ä¼šå˜æ›´ï¼›å·²é…å¯¹è®¾å¤‡å–æ¶ˆé…对åŽé‡æ–°æ‰«ææˆ–è“牙æœåŠ¡ä¸‹ç”µæ—¶ï¼Œè¯¥éšæœºåœ°å€ä¼šå˜æ›´ã€‚ | **错误ç **: 以下错误ç 的详细介ç»è¯·å‚è§[è“牙æœåŠ¡å系统错误ç ](errorcode-bluetoothManager.md)。 | 错误ç ID | é”™è¯¯ä¿¡æ¯ | | -------- | ---------------------------- | |201 | Permission denied. | |801 | Capability not supported. | |2900001 | Service stopped. | |2900003 | Bluetooth disabled. | |2900099 | Operation failed. | **示例:** ```js import { AsyncCallback, BusinessError } from '@kit.BasicServicesKit'; try { let result: Array<string> = ble.getConnectedBLEDevices(); } catch (err) { console.error('errCode: ' + (err as BusinessError).code + ', errMessage: ' + (err as BusinessError).message); } ``` ## ble.startBLEScan<a name="startBLEScan"></a> startBLEScan(filters: Array<ScanFilter>, options?: ScanOptions): void å‘èµ·BLEæ‰«ææµç¨‹ã€‚ **éœ€è¦æƒé™**:ohos.permission.ACCESS_BLUETOOTH **原å化æœåŠ¡API**:从API version 12å¼€å§‹ï¼Œè¯¥æŽ¥å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力**:SystemCapability.Communication.Bluetooth.Core。 **傿•°ï¼š** | 傿•°å | 类型 | å¿…å¡« | 说明 | | ------- | -------------------------------------- | ---- | ----------------------------------- | | filters | Array<[ScanFilter](#scanfilter)> | 是 | 表示扫æç»“果过滤ç–略集åˆï¼Œç¬¦åˆè¿‡æ»¤æ¡ä»¶çš„设备å‘现会ä¿ç•™ã€‚如果ä¸ä½¿ç”¨è¿‡æ»¤çš„æ–¹å¼ï¼Œè¯¥å‚数设置为null。 | | options | [ScanOptions](#scanoptions) | å¦ | 表示扫æçš„傿•°é…置,å¯é€‰å‚数。 | **错误ç **: 以下错误ç 的详细介ç»è¯·å‚è§[è“牙æœåŠ¡å系统错误ç ](errorcode-bluetoothManager.md)。 | 错误ç ID | é”™è¯¯ä¿¡æ¯ | | -------- | ---------------------------- | |201 | Permission denied. | |401 | Invalid parameter. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. 3. Parameter verification failed. | |801 | Capability not supported. | |2900001 | Service stopped. | |2900003 | Bluetooth disabled. | |2900099 | Operation failed. | **示例:** ```js import { AsyncCallback, BusinessError } from '@kit.BasicServicesKit'; function onReceiveEvent(data: Array<ble.ScanResult>) { console.info('BLE scan device find result = '+ JSON.stringify(data)); } try { ble.on("BLEDeviceFind", onReceiveEvent); let scanFilter: ble.ScanFilter = { deviceId:"XX:XX:XX:XX:XX:XX", name:"test", serviceUuid:"00001888-0000-1000-8000-00805f9b34fb" }; let scanOptions: ble.ScanOptions = { interval: 500, dutyMode: ble.ScanDuty.SCAN_MODE_LOW_POWER, matchMode: ble.MatchMode.MATCH_MODE_AGGRESSIVE } ble.startBLEScan([scanFilter],scanOptions); } catch (err) { console.error('errCode: ' + (err as BusinessError).code + ', errMessage: ' + (err as BusinessError).message); } ``` ## ble.stopBLEScan<a name="stopBLEScan"></a> stopBLEScan(): void åœæ¢BLEæ‰«ææµç¨‹ã€‚ **éœ€è¦æƒé™**:ohos.permission.ACCESS_BLUETOOTH **原å化æœåŠ¡API**:从API version 12å¼€å§‹ï¼Œè¯¥æŽ¥å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力**:SystemCapability.Communication.Bluetooth.Core。 **错误ç **: 以下错误ç 的详细介ç»è¯·å‚è§[è“牙æœåŠ¡å系统错误ç ](errorcode-bluetoothManager.md)。 | 错误ç ID | é”™è¯¯ä¿¡æ¯ | | -------- | ---------------------------- | |201 | Permission denied. | |801 | Capability not supported. | |2900001 | Service stopped. | |2900003 | Bluetooth disabled. | |2900099 | Operation failed. | **示例:** ```js import { AsyncCallback, BusinessError } from '@kit.BasicServicesKit'; try { ble.stopBLEScan(); } catch (err) { console.error('errCode: ' + (err as BusinessError).code + ', errMessage: ' + (err as BusinessError).message); } ``` ## ble.startAdvertising<a name="startAdvertising"></a> startAdvertising(setting: AdvertiseSetting, advData: AdvertiseData, advResponse?: AdvertiseData): void 开始å‘é€BLE广æ’。 **éœ€è¦æƒé™**:ohos.permission.ACCESS_BLUETOOTH **原å化æœåŠ¡API**:从API version 12å¼€å§‹ï¼Œè¯¥æŽ¥å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力**:SystemCapability.Communication.Bluetooth.Core。 **傿•°ï¼š** | 傿•°å | 类型 | å¿…å¡« | 说明 | | ----------- | ------------------------------------- | ---- | -------------- | | setting | [AdvertiseSetting](#advertisesetting) | 是 | BLE广æ’çš„ç›¸å…³å‚æ•°ã€‚ | | advData | [AdvertiseData](#advertisedata) | 是 | BLE广æ’包内容。 | | advResponse | [AdvertiseData](#advertisedata) | å¦ | BLEå›žå¤æ‰«æè¯·æ±‚回å¤å“应。 | **错误ç **: 以下错误ç 的详细介ç»è¯·å‚è§[è“牙æœåŠ¡å系统错误ç ](errorcode-bluetoothManager.md)。 | 错误ç ID | é”™è¯¯ä¿¡æ¯ | | -------- | ---------------------------- | |201 | Permission denied. | |401 | Invalid parameter. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. 3. Parameter verification failed. | |801 | Capability not supported. | |2900001 | Service stopped. | |2900003 | Bluetooth disabled. | |2900099 | Operation failed. | **示例:** ```js import { AsyncCallback, BusinessError } from '@kit.BasicServicesKit'; let manufactureValueBuffer = new Uint8Array(4); manufactureValueBuffer[0] = 1; manufactureValueBuffer[1] = 2; manufactureValueBuffer[2] = 3; manufactureValueBuffer[3] = 4; let serviceValueBuffer = new Uint8Array(4); serviceValueBuffer[0] = 4; serviceValueBuffer[1] = 6; serviceValueBuffer[2] = 7; serviceValueBuffer[3] = 8; console.info('manufactureValueBuffer = '+ JSON.stringify(manufactureValueBuffer)); console.info('serviceValueBuffer = '+ JSON.stringify(serviceValueBuffer)); try { let setting: ble.AdvertiseSetting = { interval:150, txPower:0, connectable:true }; let manufactureDataUnit: ble.ManufactureData = { manufactureId:4567, manufactureValue:manufactureValueBuffer.buffer }; let serviceDataUnit: ble.ServiceData = { serviceUuid:"00001888-0000-1000-8000-00805f9b34fb", serviceValue:serviceValueBuffer.buffer }; let advData: ble.AdvertiseData = { serviceUuids:["00001888-0000-1000-8000-00805f9b34fb"], manufactureData:[manufactureDataUnit], serviceData:[serviceDataUnit] }; let advResponse: ble.AdvertiseData = { serviceUuids:["00001888-0000-1000-8000-00805f9b34fb"], manufactureData:[manufactureDataUnit], serviceData:[serviceDataUnit] }; ble.startAdvertising(setting, advData ,advResponse); } catch (err) { console.error('errCode: ' + (err as BusinessError).code + ', errMessage: ' + (err as BusinessError).message); } ``` ## ble.stopAdvertising<a name="stopAdvertising"></a> stopAdvertising(): void åœæ¢å‘é€BLE广æ’。 **éœ€è¦æƒé™**:ohos.permission.ACCESS_BLUETOOTH **原å化æœåŠ¡API**:从API version 12å¼€å§‹ï¼Œè¯¥æŽ¥å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力**:SystemCapability.Communication.Bluetooth.Core。 **错误ç **: 以下错误ç 的详细介ç»è¯·å‚è§[è“牙æœåŠ¡å系统错误ç ](errorcode-bluetoothManager.md)。 | 错误ç ID | é”™è¯¯ä¿¡æ¯ | | -------- | ---------------------------- | |201 | Permission denied. | |801 | Capability not supported. | |2900001 | Service stopped. | |2900003 | Bluetooth disabled. | |2900099 | Operation failed. | **示例:** ```js import { AsyncCallback, BusinessError } from '@kit.BasicServicesKit'; try { ble.stopAdvertising(); } catch (err) { console.error('errCode: ' + (err as BusinessError).code + ', errMessage: ' + (err as BusinessError).message); } ``` ## ble.startAdvertising<sup>11+</sup><a name="startAdvertising"></a> startAdvertising(advertisingParams: AdvertisingParams, callback: AsyncCallback<number>): void 开始å‘é€BLE广æ’。使用Callback异æ¥å›žè°ƒã€‚ **éœ€è¦æƒé™**:ohos.permission.ACCESS_BLUETOOTH **系统能力**:SystemCapability.Communication.Bluetooth.Core。 **傿•°ï¼š** | 傿•°å | 类型 | å¿…å¡« | 说明 | | ------------------- | --------------------------------------- | ----- | ------------------------------- | | advertisingParams | [AdvertisingParams](#advertisingparams11) | 是 | å¯åЍBLE广æ’çš„ç›¸å…³å‚æ•°ã€‚ | | callback | AsyncCallback<number> | 是 | 广æ’IDæ ‡è¯†ï¼Œé€šè¿‡æ³¨å†Œå›žè°ƒå‡½æ•°èŽ·å–。 | **错误ç **: 以下错误ç 的详细介ç»è¯·å‚è§[è“牙æœåŠ¡å系统错误ç ](errorcode-bluetoothManager.md)。 | 错误ç ID | é”™è¯¯ä¿¡æ¯ | | -------- | -------------------------------------- | |201 | Permission denied. | |401 | Invalid parameter. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. 3. Parameter verification failed. | |801 | Capability not supported. | |2900001 | Service stopped. | |2900003 | Bluetooth disabled. | |2900099 | Operation failed. | **示例:** ```js import { AsyncCallback, BusinessError } from '@kit.BasicServicesKit'; let manufactureValueBuffer = new Uint8Array(4); manufactureValueBuffer[0] = 1; manufactureValueBuffer[1] = 2; manufactureValueBuffer[2] = 3; manufactureValueBuffer[3] = 4; let serviceValueBuffer = new Uint8Array(4); serviceValueBuffer[0] = 4; serviceValueBuffer[1] = 6; serviceValueBuffer[2] = 7; serviceValueBuffer[3] = 8; console.info('manufactureValueBuffer = '+ JSON.stringify(manufactureValueBuffer)); console.info('serviceValueBuffer = '+ JSON.stringify(serviceValueBuffer)); try { let setting: ble.AdvertiseSetting = { interval:150, txPower:0, connectable:true, }; let manufactureDataUnit: ble.ManufactureData = { manufactureId:4567, manufactureValue:manufactureValueBuffer.buffer }; let serviceDataUnit: ble.ServiceData = { serviceUuid:"00001888-0000-1000-8000-00805f9b34fb", serviceValue:serviceValueBuffer.buffer }; let advData: ble.AdvertiseData = { serviceUuids:["00001888-0000-1000-8000-00805f9b34fb"], manufactureData:[manufactureDataUnit], serviceData:[serviceDataUnit] }; let advResponse: ble.AdvertiseData = { serviceUuids:["00001888-0000-1000-8000-00805f9b34fb"], manufactureData:[manufactureDataUnit], serviceData:[serviceDataUnit] }; let advertisingParams: ble.AdvertisingParams = { advertisingSettings: setting, advertisingData: advData, advertisingResponse: advResponse, duration: 0 } let advHandle = 0xFF; ble.startAdvertising(advertisingParams, (err, outAdvHandle) => { if (err) { return; } else { advHandle = outAdvHandle; console.info("advHandle: " + advHandle); } }); } catch (err) { console.error('errCode: ' + (err as BusinessError).code + ', errMessage: ' + (err as BusinessError).message); } ``` ## ble.startAdvertising<sup>11+</sup><a name="startAdvertising"></a> startAdvertising(advertisingParams: AdvertisingParams): Promise<number> 开始å‘é€BLE广æ’。使用Promise异æ¥å›žè°ƒã€‚ **éœ€è¦æƒé™**:ohos.permission.ACCESS_BLUETOOTH **系统能力**:SystemCapability.Communication.Bluetooth.Core。 **傿•°ï¼š** | 傿•°å | 类型 | å¿…å¡« | 说明 | | ------------------- | -------------------------------------- | ----- | ----------------------- | | advertisingParams | [AdvertisingParams](#advertisingparams11) | 是 | å¯åЍBLE广æ’çš„ç›¸å…³å‚æ•°ã€‚ | **返回值:** | 类型 | 说明 | | -------------------------- | ------------------------------- | | Promise<number> | 广æ’IDæ ‡è¯†ï¼Œé€šè¿‡promiseå½¢å¼èŽ·å–。 | **错误ç **: 以下错误ç 的详细介ç»è¯·å‚è§[è“牙æœåŠ¡å系统错误ç ](errorcode-bluetoothManager.md)。 | 错误ç ID | é”™è¯¯ä¿¡æ¯ | | -------- | -------------------------------------- | |201 | Permission denied. | |401 | Invalid parameter. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. 3. Parameter verification failed. | |801 | Capability not supported. | |2900001 | Service stopped. | |2900003 | Bluetooth disabled. | |2900099 | Operation failed. | **示例:** ```js import { AsyncCallback, BusinessError } from '@kit.BasicServicesKit'; let manufactureValueBuffer = new Uint8Array(4); manufactureValueBuffer[0] = 1; manufactureValueBuffer[1] = 2; manufactureValueBuffer[2] = 3; manufactureValueBuffer[3] = 4; let serviceValueBuffer = new Uint8Array(4); serviceValueBuffer[0] = 4; serviceValueBuffer[1] = 6; serviceValueBuffer[2] = 7; serviceValueBuffer[3] = 8; console.info('manufactureValueBuffer = '+ JSON.stringify(manufactureValueBuffer)); console.info('serviceValueBuffer = '+ JSON.stringify(serviceValueBuffer)); try { let setting: ble.AdvertiseSetting = { interval:150, txPower:0, connectable:true }; let manufactureDataUnit: ble.ManufactureData = { manufactureId:4567, manufactureValue:manufactureValueBuffer.buffer }; let serviceDataUnit: ble.ServiceData = { serviceUuid:"00001888-0000-1000-8000-00805f9b34fb", serviceValue:serviceValueBuffer.buffer }; let advData: ble.AdvertiseData = { serviceUuids:["00001888-0000-1000-8000-00805f9b34fb"], manufactureData:[manufactureDataUnit], serviceData:[serviceDataUnit] }; let advResponse: ble.AdvertiseData = { serviceUuids:["00001888-0000-1000-8000-00805f9b34fb"], manufactureData:[manufactureDataUnit], serviceData:[serviceDataUnit] }; let advertisingParams: ble.AdvertisingParams = { advertisingSettings: setting, advertisingData: advData, advertisingResponse: advResponse, duration: 0 } let advHandle = 0xFF; ble.startAdvertising(advertisingParams) .then(outAdvHandle => { advHandle = outAdvHandle; }); } catch (err) { console.error('errCode: ' + (err as BusinessError).code + ', errMessage: ' + (err as BusinessError).message); } ``` ## ble.enableAdvertising<sup>11+</sup><a name="enableAdvertising"></a> enableAdvertising(advertisingEnableParams: AdvertisingEnableParams, callback: AsyncCallback<void>): void 临时å¯åЍBLE广æ’。使用Callback异æ¥å›žè°ƒã€‚ **éœ€è¦æƒé™**:ohos.permission.ACCESS_BLUETOOTH **系统能力**:SystemCapability.Communication.Bluetooth.Core。 **傿•°ï¼š** | 傿•°å | 类型 | å¿…å¡« | 说明 | | ------------------------- | --------------------------------------------------- | ----- | ------------------------------- | | advertisingEnableParams | [AdvertisingEnableParams](#advertisingenableparams11) | 是 | 临时å¯åЍBLE广æ’çš„ç›¸å…³å‚æ•°ã€‚ | | callback | AsyncCallback<void> | 是 | 回调函数。 | **错误ç **: 以下错误ç 的详细介ç»è¯·å‚è§[è“牙æœåŠ¡å系统错误ç ](errorcode-bluetoothManager.md)。 | 错误ç ID | é”™è¯¯ä¿¡æ¯ | | ------- | -------------------------------------- | |201 | Permission denied. | |401 | Invalid parameter. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. | |801 | Capability not supported. | |2900001 | Service stopped. | |2900003 | Bluetooth disabled. | |2900099 | Operation failed. | **示例:** ```js import { AsyncCallback, BusinessError } from '@kit.BasicServicesKit'; let manufactureValueBuffer = new Uint8Array(4); manufactureValueBuffer[0] = 1; manufactureValueBuffer[1] = 2; manufactureValueBuffer[2] = 3; manufactureValueBuffer[3] = 4; let serviceValueBuffer = new Uint8Array(4); serviceValueBuffer[0] = 4; serviceValueBuffer[1] = 6; serviceValueBuffer[2] = 7; serviceValueBuffer[3] = 8; console.info('manufactureValueBuffer = '+ JSON.stringify(manufactureValueBuffer)); console.info('serviceValueBuffer = '+ JSON.stringify(serviceValueBuffer)); try { let setting: ble.AdvertiseSetting = { interval:150, txPower:0, connectable:true }; let manufactureDataUnit: ble.ManufactureData = { manufactureId:4567, manufactureValue:manufactureValueBuffer.buffer }; let serviceDataUnit: ble.ServiceData = { serviceUuid:"00001888-0000-1000-8000-00805f9b34fb", serviceValue:serviceValueBuffer.buffer }; let advData: ble.AdvertiseData = { serviceUuids:["00001888-0000-1000-8000-00805f9b34fb"], manufactureData:[manufactureDataUnit], serviceData:[serviceDataUnit] }; let advResponse: ble.AdvertiseData = { serviceUuids:["00001888-0000-1000-8000-00805f9b34fb"], manufactureData:[manufactureDataUnit], serviceData:[serviceDataUnit] }; let advertisingParams: ble.AdvertisingParams = { advertisingSettings: setting, advertisingData: advData, advertisingResponse: advResponse, duration: 300 } let advHandle = 0xFF; ble.startAdvertising(advertisingParams, (err, outAdvHandle) => { if (err) { return; } else { advHandle = outAdvHandle; console.info("advHandle: " + advHandle); } }); let advertisingEnableParams: ble.AdvertisingEnableParams = { advertisingId: advHandle, duration: 0 } // after 3s, advertising disabled, then enable the advertising ble.enableAdvertising(advertisingEnableParams, (err) => { if (err) { return; } }); } catch (err) { console.error('errCode: ' + (err as BusinessError).code + ', errMessage: ' + (err as BusinessError).message); } ``` ## ble.enableAdvertising<sup>11+</sup><a name="enableAdvertising"></a> enableAdvertising(advertisingEnableParams: AdvertisingEnableParams): Promise<void> 临时å¯åЍBLE广æ’。使用Promise异æ¥å›žè°ƒã€‚ **éœ€è¦æƒé™**:ohos.permission.ACCESS_BLUETOOTH **系统能力**:SystemCapability.Communication.Bluetooth.Core。 **傿•°ï¼š** | 傿•°å | 类型 | å¿…å¡« | 说明 | | ------------------------- | --------------------------------------------------- | ----- | ------------------------------- | | advertisingEnableParams | [AdvertisingEnableParams](#advertisingenableparams11) | 是 | 临时å¯åЍBLE广æ’çš„ç›¸å…³å‚æ•°ã€‚ | **返回值:** | 类型 | 说明 | | -------------------------- | ------------ | | Promise<void> | 回调函数。 | **错误ç **: 以下错误ç 的详细介ç»è¯·å‚è§[è“牙æœåŠ¡å系统错误ç ](errorcode-bluetoothManager.md)。 | 错误ç ID | é”™è¯¯ä¿¡æ¯ | | ------- | -------------------------------------- | |201 | Permission denied. | |401 | Invalid parameter. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. | |801 | Capability not supported. | |2900001 | Service stopped. | |2900003 | Bluetooth disabled. | |2900099 | Operation failed. | **示例:** ```js import { AsyncCallback, BusinessError } from '@kit.BasicServicesKit'; let manufactureValueBuffer = new Uint8Array(4); manufactureValueBuffer[0] = 1; manufactureValueBuffer[1] = 2; manufactureValueBuffer[2] = 3; manufactureValueBuffer[3] = 4; let serviceValueBuffer = new Uint8Array(4); serviceValueBuffer[0] = 4; serviceValueBuffer[1] = 6; serviceValueBuffer[2] = 7; serviceValueBuffer[3] = 8; console.info('manufactureValueBuffer = '+ JSON.stringify(manufactureValueBuffer)); console.info('serviceValueBuffer = '+ JSON.stringify(serviceValueBuffer)); try { let setting: ble.AdvertiseSetting = { interval:150, txPower:0, connectable:true }; let manufactureDataUnit: ble.ManufactureData = { manufactureId:4567, manufactureValue:manufactureValueBuffer.buffer }; let serviceDataUnit: ble.ServiceData = { serviceUuid:"00001888-0000-1000-8000-00805f9b34fb", serviceValue:serviceValueBuffer.buffer }; let advData: ble.AdvertiseData = { serviceUuids:["00001888-0000-1000-8000-00805f9b34fb"], manufactureData:[manufactureDataUnit], serviceData:[serviceDataUnit] }; let advResponse: ble.AdvertiseData = { serviceUuids:["00001888-0000-1000-8000-00805f9b34fb"], manufactureData:[manufactureDataUnit], serviceData:[serviceDataUnit] }; let advertisingParams: ble.AdvertisingParams = { advertisingSettings: setting, advertisingData: advData, advertisingResponse: advResponse, duration: 300 } let advHandle = 0xFF; ble.startAdvertising(advertisingParams, (err, outAdvHandle) => { if (err) { return; } else { advHandle = outAdvHandle; console.info("advHandle: " + advHandle); } }); let advertisingEnableParams: ble.AdvertisingEnableParams = { advertisingId: advHandle, duration: 0 } // after 3s, advertising disabled, then enable the advertising ble.enableAdvertising(advertisingEnableParams) .then(() => { console.info("enable success"); }); } catch (err) { console.error('errCode: ' + (err as BusinessError).code + ', errMessage: ' + (err as BusinessError).message); } ``` ## ble.disableAdvertising<sup>11+</sup><a name="disableAdvertising"></a> disableAdvertising(advertisingDisableParams: AdvertisingDisableParams, callback: AsyncCallback<void>): void ä¸´æ—¶åœæ¢BLE广æ’。使用Callback异æ¥å›žè°ƒã€‚ **éœ€è¦æƒé™**:ohos.permission.ACCESS_BLUETOOTH **系统能力**:SystemCapability.Communication.Bluetooth.Core。 **傿•°ï¼š** | 傿•°å | 类型 | å¿…å¡« | 说明 | | ------------------------- | ----------------------------------------------------- | ----- | ------------------------------- | | advertisingDisableParams | [AdvertisingDisableParams](#advertisingdisableparams11) | 是 | ä¸´æ—¶åœæ¢BLE广æ’çš„ç›¸å…³å‚æ•°ã€‚ | | callback | AsyncCallback<void> | 是 | 回调函数。 | **错误ç **: 以下错误ç 的详细介ç»è¯·å‚è§[è“牙æœåŠ¡å系统错误ç ](errorcode-bluetoothManager.md)。 | 错误ç ID | é”™è¯¯ä¿¡æ¯ | | ------- | -------------------------------------- | |201 | Permission denied. | |401 | Invalid parameter. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. | |801 | Capability not supported. | |2900001 | Service stopped. | |2900003 | Bluetooth disabled. | |2900099 | Operation failed. | **示例:** ```js import { AsyncCallback, BusinessError } from '@kit.BasicServicesKit'; let manufactureValueBuffer = new Uint8Array(4); manufactureValueBuffer[0] = 1; manufactureValueBuffer[1] = 2; manufactureValueBuffer[2] = 3; manufactureValueBuffer[3] = 4; let serviceValueBuffer = new Uint8Array(4); serviceValueBuffer[0] = 4; serviceValueBuffer[1] = 6; serviceValueBuffer[2] = 7; serviceValueBuffer[3] = 8; console.info('manufactureValueBuffer = '+ JSON.stringify(manufactureValueBuffer)); console.info('serviceValueBuffer = '+ JSON.stringify(serviceValueBuffer)); try { let setting: ble.AdvertiseSetting = { interval:150, txPower:0, connectable:true }; let manufactureDataUnit: ble.ManufactureData = { manufactureId:4567, manufactureValue:manufactureValueBuffer.buffer }; let serviceDataUnit: ble.ServiceData = { serviceUuid:"00001888-0000-1000-8000-00805f9b34fb", serviceValue:serviceValueBuffer.buffer }; let advData: ble.AdvertiseData = { serviceUuids:["00001888-0000-1000-8000-00805f9b34fb"], manufactureData:[manufactureDataUnit], serviceData:[serviceDataUnit] }; let advResponse: ble.AdvertiseData = { serviceUuids:["00001888-0000-1000-8000-00805f9b34fb"], manufactureData:[manufactureDataUnit], serviceData:[serviceDataUnit] }; let advertisingParams: ble.AdvertisingParams = { advertisingSettings: setting, advertisingData: advData, advertisingResponse: advResponse, duration: 0 } let advHandle = 0xFF; ble.startAdvertising(advertisingParams, (err, outAdvHandle) => { if (err) { return; } else { advHandle = outAdvHandle; console.info("advHandle: " + advHandle); } }); let advertisingDisableParams: ble.AdvertisingDisableParams = { advertisingId: advHandle } ble.disableAdvertising(advertisingDisableParams, (err) => { if (err) { return; } }); } catch (err) { console.error('errCode: ' + (err as BusinessError).code + ', errMessage: ' + (err as BusinessError).message); } ``` ## ble.disableAdvertising<sup>11+</sup><a name="disableAdvertising"></a> disableAdvertising(advertisingDisableParams: AdvertisingDisableParams): Promise<void> ä¸´æ—¶åœæ¢BLE广æ’。使用Promise异æ¥å›žè°ƒã€‚ **éœ€è¦æƒé™**:ohos.permission.ACCESS_BLUETOOTH **系统能力**:SystemCapability.Communication.Bluetooth.Core。 **傿•°ï¼š** | 傿•°å | 类型 | å¿…å¡« | 说明 | | ------------------------- | ----------------------------------------------------- | ----- | ------------------------------- | | advertisingDisableParams | [AdvertisingDisableParams](#advertisingdisableparams11) | 是 | ä¸´æ—¶åœæ¢BLE广æ’çš„ç›¸å…³å‚æ•°ã€‚ | **返回值:** | 类型 | 说明 | | -------------------------- | ------------ | | Promise<void> | 回调函数。 | **错误ç **: 以下错误ç 的详细介ç»è¯·å‚è§[è“牙æœåŠ¡å系统错误ç ](errorcode-bluetoothManager.md)。 | 错误ç ID | é”™è¯¯ä¿¡æ¯ | | ------- | -------------------------------------- | |201 | Permission denied. | |401 | Invalid parameter. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. | |801 | Capability not supported. | |2900001 | Service stopped. | |2900003 | Bluetooth disabled. | |2900099 | Operation failed. | **示例:** ```js import { AsyncCallback, BusinessError } from '@kit.BasicServicesKit'; let manufactureValueBuffer = new Uint8Array(4); manufactureValueBuffer[0] = 1; manufactureValueBuffer[1] = 2; manufactureValueBuffer[2] = 3; manufactureValueBuffer[3] = 4; let serviceValueBuffer = new Uint8Array(4); serviceValueBuffer[0] = 4; serviceValueBuffer[1] = 6; serviceValueBuffer[2] = 7; serviceValueBuffer[3] = 8; console.info('manufactureValueBuffer = '+ JSON.stringify(manufactureValueBuffer)); console.info('serviceValueBuffer = '+ JSON.stringify(serviceValueBuffer)); try { let setting: ble.AdvertiseSetting = { interval:150, txPower:0, connectable:true }; let manufactureDataUnit: ble.ManufactureData = { manufactureId:4567, manufactureValue:manufactureValueBuffer.buffer }; let serviceDataUnit: ble.ServiceData = { serviceUuid:"00001888-0000-1000-8000-00805f9b34fb", serviceValue:serviceValueBuffer.buffer }; let advData: ble.AdvertiseData = { serviceUuids:["00001888-0000-1000-8000-00805f9b34fb"], manufactureData:[manufactureDataUnit], serviceData:[serviceDataUnit] }; let advResponse: ble.AdvertiseData = { serviceUuids:["00001888-0000-1000-8000-00805f9b34fb"], manufactureData:[manufactureDataUnit], serviceData:[serviceDataUnit] }; let advertisingParams: ble.AdvertisingParams = { advertisingSettings: setting, advertisingData: advData, advertisingResponse: advResponse, duration: 0 } let advHandle = 0xFF; ble.startAdvertising(advertisingParams, (err, outAdvHandle) => { if (err) { return; } else { advHandle = outAdvHandle; console.info("advHandle: " + advHandle); } }); let advertisingDisableParams: ble.AdvertisingDisableParams = { advertisingId: advHandle } ble.disableAdvertising(advertisingDisableParams) .then(() => { console.info("enable success"); }); } catch (err) { console.error('errCode: ' + (err as BusinessError).code + ', errMessage: ' + (err as BusinessError).message); } ``` ## ble.stopAdvertising<sup>11+</sup><a name="stopAdvertising"></a> stopAdvertising(advertisingId: number, callback: AsyncCallback<void>): void åœæ¢å‘é€BLE广æ’。使用Callback异æ¥å›žè°ƒã€‚ **éœ€è¦æƒé™**:ohos.permission.ACCESS_BLUETOOTH **系统能力**:SystemCapability.Communication.Bluetooth.Core。 **傿•°ï¼š** | 傿•°å | 类型 | å¿…å¡« | 说明 | | ------------------------- | ---------------------------- | ----- | --------------------------- | | advertisingId | number | 是 | 需è¦åœæ¢çš„广æ’IDæ ‡è¯†ã€‚ | | callback | AsyncCallback<void> | 是 | 回调函数。 | **错误ç **: 以下错误ç 的详细介ç»è¯·å‚è§[è“牙æœåŠ¡å系统错误ç ](errorcode-bluetoothManager.md)。 | 错误ç ID | é”™è¯¯ä¿¡æ¯ | | -------- | ---------------------------- | |201 | Permission denied. | |401 | Invalid parameter. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. | |801 | Capability not supported. | |2900001 | Service stopped. | |2900003 | Bluetooth disabled. | |2900099 | Operation failed. | **示例:** ```js import { AsyncCallback, BusinessError } from '@kit.BasicServicesKit'; let manufactureValueBuffer = new Uint8Array(4); manufactureValueBuffer[0] = 1; manufactureValueBuffer[1] = 2; manufactureValueBuffer[2] = 3; manufactureValueBuffer[3] = 4; let serviceValueBuffer = new Uint8Array(4); serviceValueBuffer[0] = 4; serviceValueBuffer[1] = 6; serviceValueBuffer[2] = 7; serviceValueBuffer[3] = 8; console.info('manufactureValueBuffer = '+ JSON.stringify(manufactureValueBuffer)); console.info('serviceValueBuffer = '+ JSON.stringify(serviceValueBuffer)); try { let setting: ble.AdvertiseSetting = { interval:150, txPower:0, connectable:true }; let manufactureDataUnit: ble.ManufactureData = { manufactureId:4567, manufactureValue:manufactureValueBuffer.buffer }; let serviceDataUnit: ble.ServiceData = { serviceUuid:"00001888-0000-1000-8000-00805f9b34fb", serviceValue:serviceValueBuffer.buffer }; let advData: ble.AdvertiseData = { serviceUuids:["00001888-0000-1000-8000-00805f9b34fb"], manufactureData:[manufactureDataUnit], serviceData:[serviceDataUnit] }; let advResponse: ble.AdvertiseData = { serviceUuids:["00001888-0000-1000-8000-00805f9b34fb"], manufactureData:[manufactureDataUnit], serviceData:[serviceDataUnit] }; let advertisingParams: ble.AdvertisingParams = { advertisingSettings: setting, advertisingData: advData, advertisingResponse: advResponse, duration: 0 } let advHandle = 0xFF; ble.startAdvertising(advertisingParams, (err, outAdvHandle) => { if (err) { return; } else { advHandle = outAdvHandle; console.info("advHandle: " + advHandle); } }); ble.stopAdvertising(advHandle, (err) => { if (err) { return; } }); } catch (err) { console.error('errCode: ' + (err as BusinessError).code + ', errMessage: ' + (err as BusinessError).message); } ``` ## ble.stopAdvertising<sup>11+</sup><a name="stopAdvertising"></a> stopAdvertising(advertisingId: number): Promise<void> åœæ¢å‘é€BLE广æ’。使用Promise异æ¥å›žè°ƒã€‚ **éœ€è¦æƒé™**:ohos.permission.ACCESS_BLUETOOTH **系统能力**:SystemCapability.Communication.Bluetooth.Core。 **傿•°ï¼š** | 傿•°å | 类型 | å¿…å¡« | 说明 | | ------------------------- | ---------------------------- | ----- | --------------------------- | | advertisingId | number | 是 | 需è¦åœæ¢çš„广æ’IDæ ‡è¯†ã€‚ | **返回值:** | 类型 | 说明 | | -------------------------- | ------------ | | Promise<void> | 回调函数。 | **错误ç **: 以下错误ç 的详细介ç»è¯·å‚è§[è“牙æœåŠ¡å系统错误ç ](errorcode-bluetoothManager.md)。 | 错误ç ID | é”™è¯¯ä¿¡æ¯ | | -------- | ---------------------------- | |201 | Permission denied. | |401 | Invalid parameter. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. | |801 | Capability not supported. | |2900001 | Service stopped. | |2900003 | Bluetooth disabled. | |2900099 | Operation failed. | **示例:** ```js import { AsyncCallback, BusinessError } from '@kit.BasicServicesKit'; let manufactureValueBuffer = new Uint8Array(4); manufactureValueBuffer[0] = 1; manufactureValueBuffer[1] = 2; manufactureValueBuffer[2] = 3; manufactureValueBuffer[3] = 4; let serviceValueBuffer = new Uint8Array(4); serviceValueBuffer[0] = 4; serviceValueBuffer[1] = 6; serviceValueBuffer[2] = 7; serviceValueBuffer[3] = 8; console.info('manufactureValueBuffer = '+ JSON.stringify(manufactureValueBuffer)); console.info('serviceValueBuffer = '+ JSON.stringify(serviceValueBuffer)); try { let setting: ble.AdvertiseSetting = { interval:150, txPower:0, connectable:true }; let manufactureDataUnit: ble.ManufactureData = { manufactureId:4567, manufactureValue:manufactureValueBuffer.buffer }; let serviceDataUnit: ble.ServiceData = { serviceUuid:"00001888-0000-1000-8000-00805f9b34fb", serviceValue:serviceValueBuffer.buffer }; let advData: ble.AdvertiseData = { serviceUuids:["00001888-0000-1000-8000-00805f9b34fb"], manufactureData:[manufactureDataUnit], serviceData:[serviceDataUnit] }; let advResponse: ble.AdvertiseData = { serviceUuids:["00001888-0000-1000-8000-00805f9b34fb"], manufactureData:[manufactureDataUnit], serviceData:[serviceDataUnit] }; let advertisingParams: ble.AdvertisingParams = { advertisingSettings: setting, advertisingData: advData, advertisingResponse: advResponse, duration: 0 } let advHandle = 0xFF; ble.startAdvertising(advertisingParams, (err, outAdvHandle) => { if (err) { return; } else { advHandle = outAdvHandle; console.info("advHandle: " + advHandle); } }); ble.stopAdvertising(advHandle) .then(() => { console.info("enable success"); }); } catch (err) { console.error('errCode: ' + (err as BusinessError).code + ', errMessage: ' + (err as BusinessError).message); } ``` ## ble.on('advertisingStateChange')<sup>11+</sup> on(type: 'advertisingStateChange', callback: Callback<AdvertisingStateChangeInfo>): void 订阅BLE广æ’状æ€ã€‚使用Callback异æ¥å›žè°ƒã€‚ **éœ€è¦æƒé™**:ohos.permission.ACCESS_BLUETOOTH **系统能力**:SystemCapability.Communication.Bluetooth.Core。 **傿•°ï¼š** | 傿•°å | 类型 | å¿…å¡« | 说明 | | -------- | ------------------------------------------------------------------------- | ----- | ---------------------------------------------------------- | | type | string | 是 | 填写"advertisingStateChange"å—符串,表示广æ’状æ€äº‹ä»¶ã€‚ | | callback | Callback<[AdvertisingStateChangeInfo](#advertisingstatechangeinfo11)> | 是 | 表示回调函数的入å‚,广æ’状æ€ã€‚å›žè°ƒå‡½æ•°ç”±ç”¨æˆ·åˆ›å»ºé€šè¿‡è¯¥æŽ¥å£æ³¨å†Œã€‚ | **错误ç **: 以下错误ç 的详细介ç»è¯·å‚è§[è“牙æœåŠ¡å系统错误ç ](errorcode-bluetoothManager.md)。 | 错误ç ID | é”™è¯¯ä¿¡æ¯ | | -------- | ---------------------------- | |201 | Permission denied. | |401 | Invalid parameter. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. 3. Parameter verification failed. | |801 | Capability not supported. | |2900099 | Operation failed. | **示例:** ```js import { AsyncCallback, BusinessError } from '@kit.BasicServicesKit'; function onReceiveEvent(data: ble.AdvertisingStateChangeInfo) { console.info('bluetooth advertising state = ' + JSON.stringify(data)); } try { ble.on('advertisingStateChange', onReceiveEvent); } catch (err) { console.error('errCode: ' + (err as BusinessError).code + ', errMessage: ' + (err as BusinessError).message); } ``` ## ble.off('advertisingStateChange')<sup>11+</sup> off(type: 'advertisingStateChange', callback?: Callback<AdvertisingStateChangeInfo>): void å–æ¶ˆè®¢é˜…BLE广æ’状æ€ã€‚ **éœ€è¦æƒé™**:ohos.permission.ACCESS_BLUETOOTH **系统能力**:SystemCapability.Communication.Bluetooth.Core。 **傿•°ï¼š** | 傿•°å | 类型 | å¿…å¡« | 说明 | | -------- | ------------------------------------------------------------------------- | ----- | ---------------------------------------------------------- | | type | string | 是 | 填写"advertisingStateChange"å—符串,表示广æ’状æ€äº‹ä»¶ã€‚ | | callback | Callback<[AdvertisingStateChangeInfo](#advertisingstatechangeinfo11)> | å¦ | è¡¨ç¤ºå–æ¶ˆè®¢é˜…广æ’状æ€ä¸ŠæŠ¥ã€‚ä¸å¡«è¯¥å‚æ•°åˆ™å–æ¶ˆè®¢é˜…该type对应的所有回调。 | **错误ç **: 以下错误ç 的详细介ç»è¯·å‚è§[è“牙æœåŠ¡å系统错误ç ](errorcode-bluetoothManager.md)。 | 错误ç ID | é”™è¯¯ä¿¡æ¯ | | -------- | ---------------------------- | |201 | Permission denied. | |401 | Invalid parameter. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. 3. Parameter verification failed. | |801 | Capability not supported. | |2900099 | Operation failed. | **示例:** ```js import { AsyncCallback, BusinessError } from '@kit.BasicServicesKit'; function onReceiveEvent(data: ble.AdvertisingStateChangeInfo) { console.info('bluetooth advertising state = ' + JSON.stringify(data)); } try { ble.on('advertisingStateChange', onReceiveEvent); ble.off('advertisingStateChange', onReceiveEvent); } catch (err) { console.error('errCode: ' + (err as BusinessError).code + ', errMessage: ' + (err as BusinessError).message); } ``` ## ble.on('BLEDeviceFind') on(type: 'BLEDeviceFind', callback: Callback<Array<ScanResult>>): void 订阅BLE设备å‘现上报事件。使用Callback异æ¥å›žè°ƒã€‚ **éœ€è¦æƒé™**:ohos.permission.ACCESS_BLUETOOTH **原å化æœåŠ¡API**:从API version 12å¼€å§‹ï¼Œè¯¥æŽ¥å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力**:SystemCapability.Communication.Bluetooth.Core。 **傿•°ï¼š** | 傿•°å | 类型 | å¿…å¡« | 说明 | | -------- | ---------------------------------------- | ---- | ----------------------------------- | | type | string | 是 | 填写"BLEDeviceFind"å—符串,表示BLE设备å‘现事件。 | | callback | Callback<Array<[ScanResult](#scanresult)>> | 是 | 表示回调函数的入å‚,å‘现的设备集åˆã€‚å›žè°ƒå‡½æ•°ç”±ç”¨æˆ·åˆ›å»ºé€šè¿‡è¯¥æŽ¥å£æ³¨å†Œã€‚ | **错误ç **: 以下错误ç 的详细介ç»è¯·å‚è§[è“牙æœåŠ¡å系统错误ç ](errorcode-bluetoothManager.md)。 | 错误ç ID | é”™è¯¯ä¿¡æ¯ | | -------- | ---------------------------- | |201 | Permission denied. | |401 | Invalid parameter. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. 3. Parameter verification failed. | |801 | Capability not supported. | |2900099 | Operation failed. | **示例:** ```js import { AsyncCallback, BusinessError } from '@kit.BasicServicesKit'; function onReceiveEvent(data: Array<ble.ScanResult>) { console.info('bluetooth device find = '+ JSON.stringify(data)); } try { ble.on('BLEDeviceFind', onReceiveEvent); } catch (err) { console.error('errCode: ' + (err as BusinessError).code + ', errMessage: ' + (err as BusinessError).message); } ``` ## ble.off('BLEDeviceFind') off(type: 'BLEDeviceFind', callback?: Callback<Array<ScanResult>>): void å–æ¶ˆè®¢é˜…BLE设备å‘现上报事件。 **éœ€è¦æƒé™**:ohos.permission.ACCESS_BLUETOOTH **原å化æœåŠ¡API**:从API version 12å¼€å§‹ï¼Œè¯¥æŽ¥å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力**:SystemCapability.Communication.Bluetooth.Core。 **傿•°ï¼š** | 傿•°å | 类型 | å¿…å¡« | 说明 | | -------- | ---------------------------------------- | ---- | ---------------------------------------- | | type | string | 是 | 填写"BLEDeviceFind"å—符串,表示BLE设备å‘现事件。 | | callback | Callback<Array<[ScanResult](#scanresult)>> | å¦ | è¡¨ç¤ºå–æ¶ˆè®¢é˜…BLE设备å‘现事件上报。ä¸å¡«è¯¥å‚æ•°åˆ™å–æ¶ˆè®¢é˜…该type对应的所有回调。 | **错误ç **: 以下错误ç 的详细介ç»è¯·å‚è§[è“牙æœåŠ¡å系统错误ç ](errorcode-bluetoothManager.md)。 | 错误ç ID | é”™è¯¯ä¿¡æ¯ | | -------- | ---------------------------- | |201 | Permission denied. | |401 | Invalid parameter. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. 3. Parameter verification failed. | |801 | Capability not supported. | |2900099 | Operation failed. | **示例:** ```js import { AsyncCallback, BusinessError } from '@kit.BasicServicesKit'; function onReceiveEvent(data: Array<ble.ScanResult>) { console.info('bluetooth device find = '+ JSON.stringify(data)); } try { ble.on('BLEDeviceFind', onReceiveEvent); ble.off('BLEDeviceFind', onReceiveEvent); } catch (err) { console.error('errCode: ' + (err as BusinessError).code + ', errMessage: ' + (err as BusinessError).message); } ``` ## GattServer server端类,使用server端方法之å‰éœ€è¦åˆ›å»ºè¯¥ç±»çš„实例进行æ“作,通过createGattServer()æ–¹æ³•æž„é€ æ¤å®žä¾‹ã€‚ ### addService addService(service: GattService): void serverç«¯æ·»åŠ æœåŠ¡ã€‚ **éœ€è¦æƒé™**:ohos.permission.ACCESS_BLUETOOTH **原å化æœåŠ¡API**:从API version 12å¼€å§‹ï¼Œè¯¥æŽ¥å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力**:SystemCapability.Communication.Bluetooth.Core。 **傿•°ï¼š** | 傿•°å | 类型 | å¿…å¡« | 说明 | | ------- | --------------------------- | ---- | ------------------------ | | service | [GattService](#gattservice) | 是 | æœåŠ¡ç«¯çš„serviceæ•°æ®ã€‚BLE广æ’çš„ç›¸å…³å‚æ•° | **错误ç **: 以下错误ç 的详细介ç»è¯·å‚è§[è“牙æœåŠ¡å系统错误ç ](errorcode-bluetoothManager.md)。 | 错误ç ID | é”™è¯¯ä¿¡æ¯ | | -------- | ---------------------------- | |201 | Permission denied. | |401 | Invalid parameter. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. 3. Parameter verification failed. | |801 | Capability not supported. | |2900001 | Service stopped. | |2900003 | Bluetooth disabled. | |2900099 | Operation failed. | **示例:** ```js import { AsyncCallback, BusinessError } from '@kit.BasicServicesKit'; // 创建descriptors let descriptors: Array<ble.BLEDescriptor> = []; let arrayBuffer = new ArrayBuffer(8); let descV = new Uint8Array(arrayBuffer); descV[0] = 11; let descriptor: ble.BLEDescriptor = {serviceUuid: '00001810-0000-1000-8000-00805F9B34FB', characteristicUuid: '00001820-0000-1000-8000-00805F9B34FB', descriptorUuid: '00002902-0000-1000-8000-00805F9B34FB', descriptorValue: arrayBuffer}; descriptors[0] = descriptor; // 创建characteristics let characteristics: Array<ble.BLECharacteristic> = []; let arrayBufferC = new ArrayBuffer(8); let cccV = new Uint8Array(arrayBufferC); cccV[0] = 1; let characteristic: ble.BLECharacteristic = {serviceUuid: '00001810-0000-1000-8000-00805F9B34FB', characteristicUuid: '00001820-0000-1000-8000-00805F9B34FB', characteristicValue: arrayBufferC, descriptors:descriptors}; characteristics[0] = characteristic; // 创建gattService let gattService: ble.GattService = {serviceUuid:'00001810-0000-1000-8000-00805F9B34FB', isPrimary: true, characteristics:characteristics, includeServices:[]}; try { let gattServer: ble.GattServer = ble.createGattServer(); gattServer.addService(gattService); } catch (err) { console.error('errCode: ' + (err as BusinessError).code + ', errMessage: ' + (err as BusinessError).message); } ``` ### removeService removeService(serviceUuid: string): void åˆ é™¤å·²æ·»åŠ çš„æœåŠ¡ã€‚ **éœ€è¦æƒé™**:ohos.permission.ACCESS_BLUETOOTH **原å化æœåŠ¡API**:从API version 12å¼€å§‹ï¼Œè¯¥æŽ¥å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力**:SystemCapability.Communication.Bluetooth.Core。 **傿•°ï¼š** | 傿•°å | 类型 | å¿…å¡« | 说明 | | ----------- | ------ | ---- | ---------------------------------------- | | serviceUuid | string | 是 | serviceçš„UUID,例如“00001810-0000-1000-8000-00805F9B34FBâ€ã€‚ | **错误ç **: 以下错误ç 的详细介ç»è¯·å‚è§[è“牙æœåŠ¡å系统错误ç ](errorcode-bluetoothManager.md)。 | 错误ç ID | é”™è¯¯ä¿¡æ¯ | | -------- | ---------------------------- | |201 | Permission denied. | |401 | Invalid parameter. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. 3. Parameter verification failed. | |801 | Capability not supported. | |2900001 | Service stopped. | |2900003 | Bluetooth disabled. | |2900004 | Profile not supported. | |2900099 | Operation failed. | **示例:** ```js import { AsyncCallback, BusinessError } from '@kit.BasicServicesKit'; let server: ble.GattServer = ble.createGattServer(); try { // 调用removeService接å£å‰éœ€è¦å®Œæˆserver端和client端的é…对åŠè¿žæŽ¥ã€‚ server.removeService('00001810-0000-1000-8000-00805F9B34FB'); } catch (err) { console.error('errCode: ' + (err as BusinessError).code + ', errMessage: ' + (err as BusinessError).message); } ``` ### close close(): void 关闿œåŠ¡ç«¯åŠŸèƒ½ï¼ŒåŽ»æŽ‰server在åè®®æ ˆçš„æ³¨å†Œï¼Œè°ƒç”¨è¯¥æŽ¥å£åŽ[GattServer](#gattserver)实例将ä¸èƒ½å†ä½¿ç”¨ã€‚ **éœ€è¦æƒé™**:ohos.permission.ACCESS_BLUETOOTH **原å化æœåŠ¡API**:从API version 12å¼€å§‹ï¼Œè¯¥æŽ¥å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力**:SystemCapability.Communication.Bluetooth.Core。 **错误ç **: 以下错误ç 的详细介ç»è¯·å‚è§[è“牙æœåŠ¡å系统错误ç ](errorcode-bluetoothManager.md)。 | 错误ç ID | é”™è¯¯ä¿¡æ¯ | | -------- | ---------------------------- | |201 | Permission denied. | |801 | Capability not supported. | |2900001 | Service stopped. | |2900003 | Bluetooth disabled. | |2900099 | Operation failed. | **示例:** ```js import { AsyncCallback, BusinessError } from '@kit.BasicServicesKit'; let server: ble.GattServer = ble.createGattServer(); try { server.close(); } catch (err) { console.error('errCode: ' + (err as BusinessError).code + ', errMessage: ' + (err as BusinessError).message); } ``` ### notifyCharacteristicChanged notifyCharacteristicChanged(deviceId: string, notifyCharacteristic: NotifyCharacteristic, callback: AsyncCallback<void>): void server端特å¾å€¼å‘生å˜åŒ–时,主动通知已连接的client设备。使用Callback异æ¥å›žè°ƒã€‚ **éœ€è¦æƒé™**:ohos.permission.ACCESS_BLUETOOTH **原å化æœåŠ¡API**:从API version 12å¼€å§‹ï¼Œè¯¥æŽ¥å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力**:SystemCapability.Communication.Bluetooth.Core。 **傿•°ï¼š** | 傿•°å | 类型 | å¿…å¡« | 说明 | | -------------------- | ---------------------------------------- | ---- | --------------------------------------- | | deviceId | string | 是 | 接收通知的client端设备地å€ï¼Œä¾‹å¦‚“XX:XX:XX:XX:XX:XXâ€ã€‚ | | notifyCharacteristic | [NotifyCharacteristic](#notifycharacteristic) | 是 | 通知的特å¾å€¼æ•°æ®ã€‚ | | callback | AsyncCallback<void> | 是 | 回调函数。当通知æˆåŠŸï¼Œerr为undefined,å¦åˆ™ä¸ºé”™è¯¯å¯¹è±¡ã€‚ | **错误ç **: 以下错误ç 的详细介ç»è¯·å‚è§[è“牙æœåŠ¡å系统错误ç ](errorcode-bluetoothManager.md)。 | 错误ç ID | é”™è¯¯ä¿¡æ¯ | | -------- | ---------------------------- | |201 | Permission denied. | |401 | Invalid parameter. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. 3. Parameter verification failed. | |801 | Capability not supported. | |2900001 | Service stopped. | |2900003 | Bluetooth disabled. | |2900099 | Operation failed. | **示例:** ```js import { AsyncCallback, BusinessError } from '@kit.BasicServicesKit'; let arrayBufferC = new ArrayBuffer(8); let notifyCharacter: ble.NotifyCharacteristic = { serviceUuid: '00001810-0000-1000-8000-00805F9B34FB', characteristicUuid: '00001820-0000-1000-8000-00805F9B34FB', characteristicValue: arrayBufferC, confirm: true }; try { let gattServer: ble.GattServer = ble.createGattServer(); gattServer.notifyCharacteristicChanged('XX:XX:XX:XX:XX:XX', notifyCharacter, (err: BusinessError) => { if (err) { console.info('notifyCharacteristicChanged callback failed'); } else { console.info('notifyCharacteristicChanged callback successful'); } }); } catch (err) { console.error('errCode: ' + (err as BusinessError).code + ', errMessage: ' + (err as BusinessError).message); } ``` ### notifyCharacteristicChanged notifyCharacteristicChanged(deviceId: string, notifyCharacteristic: NotifyCharacteristic): Promise<void> server端特å¾å€¼å‘生å˜åŒ–时,主动通知已连接的client设备。使用Promise异æ¥å›žè°ƒã€‚ **éœ€è¦æƒé™**:ohos.permission.ACCESS_BLUETOOTH **原å化æœåŠ¡API**:从API version 12å¼€å§‹ï¼Œè¯¥æŽ¥å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力**:SystemCapability.Communication.Bluetooth.Core。 **傿•°ï¼š** | 傿•°å | 类型 | å¿…å¡« | 说明 | | -------------------- | ---------------------------------------- | ---- | --------------------------------------- | | deviceId | string | 是 | 接收通知的client端设备地å€ï¼Œä¾‹å¦‚“XX:XX:XX:XX:XX:XXâ€ã€‚ | | notifyCharacteristic | [NotifyCharacteristic](#notifycharacteristic) | 是 | 通知的特å¾å€¼æ•°æ®ã€‚ | **返回值:** | 类型 | 说明 | | ------------------- | ------------- | | Promise<void> | 返回promise对象。 | **错误ç **: 以下错误ç 的详细介ç»è¯·å‚è§[è“牙æœåŠ¡å系统错误ç ](errorcode-bluetoothManager.md)。 | 错误ç ID | é”™è¯¯ä¿¡æ¯ | | -------- | ---------------------------- | |201 | Permission denied. | |401 | Invalid parameter. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. 3. Parameter verification failed. | |801 | Capability not supported. | |2900001 | Service stopped. | |2900003 | Bluetooth disabled. | |2900099 | Operation failed. | **示例:** ```js import { AsyncCallback, BusinessError } from '@kit.BasicServicesKit'; let arrayBufferC = new ArrayBuffer(8); let notifyCharacter: ble.NotifyCharacteristic = { serviceUuid: '00001810-0000-1000-8000-00805F9B34FB', characteristicUuid: '00001820-0000-1000-8000-00805F9B34FB', characteristicValue: arrayBufferC, confirm: true }; try { let gattServer: ble.GattServer = ble.createGattServer(); gattServer.notifyCharacteristicChanged('XX:XX:XX:XX:XX:XX', notifyCharacter).then(() => { console.info('notifyCharacteristicChanged promise successful'); }); } catch (err) { console.error('errCode: ' + (err as BusinessError).code + ', errMessage: ' + (err as BusinessError).message); } ``` ### sendResponse sendResponse(serverResponse: ServerResponse): void server端回å¤client端的读写请求。 **éœ€è¦æƒé™**:ohos.permission.ACCESS_BLUETOOTH **原å化æœåŠ¡API**:从API version 12å¼€å§‹ï¼Œè¯¥æŽ¥å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力**:SystemCapability.Communication.Bluetooth.Core。 **傿•°ï¼š** | 傿•°å | 类型 | å¿…å¡« | 说明 | | -------------- | --------------------------------- | ---- | --------------- | | serverResponse | [ServerResponse](#serverresponse) | 是 | server端回å¤çš„å“应数æ®ã€‚ | **错误ç **: 以下错误ç 的详细介ç»è¯·å‚è§[è“牙æœåŠ¡å系统错误ç ](errorcode-bluetoothManager.md)。 | 错误ç ID | é”™è¯¯ä¿¡æ¯ | | -------- | ---------------------------- | |201 | Permission denied. | |401 | Invalid parameter. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. 3. Parameter verification failed. | |801 | Capability not supported. | |2900001 | Service stopped. | |2900003 | Bluetooth disabled. | |2900099 | Operation failed. | **示例:** ```js import { AsyncCallback, BusinessError } from '@kit.BasicServicesKit'; /* send response */ let arrayBufferCCC = new ArrayBuffer(8); let cccValue = new Uint8Array(arrayBufferCCC); cccValue[0] = 1123; let serverResponse: ble.ServerResponse = { deviceId: 'XX:XX:XX:XX:XX:XX', transId: 0, status: 0, offset: 0, value: arrayBufferCCC }; try { let gattServer: ble.GattServer = ble.createGattServer(); gattServer.sendResponse(serverResponse); } catch (err) { console.error('errCode: ' + (err as BusinessError).code + ', errMessage: ' + (err as BusinessError).message); } ``` ### on('characteristicRead') on(type: 'characteristicRead', callback: Callback<CharacteristicReadRequest>): void server端订阅特å¾å€¼è¯»è¯·æ±‚事件。使用Callback异æ¥å›žè°ƒã€‚ **éœ€è¦æƒé™**:ohos.permission.ACCESS_BLUETOOTH **原å化æœåŠ¡API**:从API version 12å¼€å§‹ï¼Œè¯¥æŽ¥å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力**:SystemCapability.Communication.Bluetooth.Core。 **傿•°ï¼š** | 傿•°å | 类型 | å¿…å¡« | 说明 | | -------- | ---------------------------------------- | ---- | ------------------------------------- | | type | string | 是 | 填写"characteristicRead"å—符串,表示特å¾å€¼è¯»è¯·æ±‚事件。 | | callback | Callback<[CharacteristicReadRequest](#characteristicreadrequest)> | 是 | 表示回调函数的入å‚,client端å‘é€çš„读请求数æ®ã€‚ | **错误ç **: 以下错误ç 的详细介ç»è¯·å‚è§[è“牙æœåŠ¡å系统错误ç ](errorcode-bluetoothManager.md)。 | 错误ç ID | é”™è¯¯ä¿¡æ¯ | | -------- | ---------------------------- | |201 | Permission denied. | |401 | Invalid parameter. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. 3. Parameter verification failed. | |801 | Capability not supported. | **示例:** ```js import { AsyncCallback, BusinessError } from '@kit.BasicServicesKit'; let arrayBufferCCC = new ArrayBuffer(8); let cccValue = new Uint8Array(arrayBufferCCC); cccValue[0] = 1123; let gattServer: ble.GattServer = ble.createGattServer(); function ReadCharacteristicReq(characteristicReadRequest: ble.CharacteristicReadRequest) { let deviceId: string = characteristicReadRequest.deviceId; let transId: number = characteristicReadRequest.transId; let offset: number = characteristicReadRequest.offset; let characteristicUuid: string = characteristicReadRequest.characteristicUuid; let serverResponse: ble.ServerResponse = {deviceId: deviceId, transId: transId, status: 0, offset: offset, value:arrayBufferCCC}; try { gattServer.sendResponse(serverResponse); } catch (err) { console.error('errCode: ' + (err as BusinessError).code + ', errMessage: ' + (err as BusinessError).message); } } gattServer.on('characteristicRead', ReadCharacteristicReq); ``` ### off('characteristicRead') off(type: 'characteristicRead', callback?: Callback<CharacteristicReadRequest>): void serverç«¯å–æ¶ˆè®¢é˜…特å¾å€¼è¯»è¯·æ±‚事件。 **éœ€è¦æƒé™**:ohos.permission.ACCESS_BLUETOOTH **原å化æœåŠ¡API**:从API version 12å¼€å§‹ï¼Œè¯¥æŽ¥å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力**:SystemCapability.Communication.Bluetooth.Core。 **傿•°ï¼š** | 傿•°å | 类型 | å¿…å¡« | 说明 | | -------- | ---------------------------------------- | ---- | ---------------------------------------- | | type | string | 是 | 填写"characteristicRead"å—符串,表示特å¾å€¼è¯»è¯·æ±‚事件。 | | callback | Callback<[CharacteristicReadRequest](#characteristicreadrequest)> | å¦ | è¡¨ç¤ºå–æ¶ˆè®¢é˜…特å¾å€¼è¯»è¯·æ±‚事件上报。ä¸å¡«è¯¥å‚æ•°åˆ™å–æ¶ˆè®¢é˜…该type对应的所有回调。 | **错误ç **: 以下错误ç 的详细介ç»è¯·å‚è§[è“牙æœåŠ¡å系统错误ç ](errorcode-bluetoothManager.md)。 | 错误ç ID | é”™è¯¯ä¿¡æ¯ | | -------- | ---------------------------- | |201 | Permission denied. | |401 | Invalid parameter. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. 3. Parameter verification failed. | |801 | Capability not supported. | **示例:** ```js import { AsyncCallback, BusinessError } from '@kit.BasicServicesKit'; try { let gattServer: ble.GattServer = ble.createGattServer(); gattServer.off('characteristicRead'); } catch (err) { console.error("errCode:" + (err as BusinessError).code + ",errMessage:" + (err as BusinessError).message); } ``` ### on('characteristicWrite') on(type: 'characteristicWrite', callback: Callback<CharacteristicWriteRequest>): void server端订阅特å¾å€¼å†™è¯·æ±‚事件。使用Callback异æ¥å›žè°ƒã€‚ **éœ€è¦æƒé™**:ohos.permission.ACCESS_BLUETOOTH **原å化æœåŠ¡API**:从API version 12å¼€å§‹ï¼Œè¯¥æŽ¥å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力**:SystemCapability.Communication.Bluetooth.Core。 **傿•°ï¼š** | 傿•°å | 类型 | å¿…å¡« | 说明 | | -------- | ---------------------------------------- | ---- | -------------------------------------- | | type | string | 是 | 填写"characteristicWrite"å—符串,表示特å¾å€¼å†™è¯·æ±‚事件。 | | callback | Callback<[CharacteristicWriteRequest](#characteristicwriterequest)> | 是 | 表示回调函数的入å‚,client端å‘é€çš„写请求数æ®ã€‚ | **错误ç **: 以下错误ç 的详细介ç»è¯·å‚è§[è“牙æœåŠ¡å系统错误ç ](errorcode-bluetoothManager.md)。 | 错误ç ID | é”™è¯¯ä¿¡æ¯ | | -------- | ---------------------------- | |201 | Permission denied. | |401 | Invalid parameter. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. 3. Parameter verification failed. | |801 | Capability not supported. | **示例:** ```js import { AsyncCallback, BusinessError } from '@kit.BasicServicesKit'; let arrayBufferCCC = new ArrayBuffer(8); let cccValue = new Uint8Array(arrayBufferCCC); let gattServer: ble.GattServer = ble.createGattServer(); function WriteCharacteristicReq(characteristicWriteRequest: ble.CharacteristicWriteRequest) { let deviceId: string = characteristicWriteRequest.deviceId; let transId: number = characteristicWriteRequest.transId; let offset: number = characteristicWriteRequest.offset; let isPrepared: boolean = characteristicWriteRequest.isPrepared; let needRsp: boolean = characteristicWriteRequest.needRsp; let value: Uint8Array = new Uint8Array(characteristicWriteRequest.value); let characteristicUuid: string = characteristicWriteRequest.characteristicUuid; cccValue[0] = value[0]; let serverResponse: ble.ServerResponse = {deviceId: deviceId, transId: transId, status: 0, offset: offset, value:arrayBufferCCC}; try { gattServer.sendResponse(serverResponse); } catch (err) { console.error('errCode: ' + (err as BusinessError).code + ', errMessage: ' + (err as BusinessError).message); } } gattServer.on('characteristicWrite', WriteCharacteristicReq); ``` ### off('characteristicWrite') off(type: 'characteristicWrite', callback?: Callback<CharacteristicWriteRequest>): void serverç«¯å–æ¶ˆè®¢é˜…特å¾å€¼å†™è¯·æ±‚事件。 **éœ€è¦æƒé™**:ohos.permission.ACCESS_BLUETOOTH **原å化æœåŠ¡API**:从API version 12å¼€å§‹ï¼Œè¯¥æŽ¥å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力**:SystemCapability.Communication.Bluetooth.Core。 **傿•°ï¼š** | 傿•°å | 类型 | å¿…å¡« | 说明 | | -------- | ---------------------------------------- | ---- | ---------------------------------------- | | type | string | 是 | 填写"characteristicWrite"å—符串,表示特å¾å€¼å†™è¯·æ±‚事件。 | | callback | Callback<[CharacteristicWriteRequest](#characteristicwriterequest)> | å¦ | è¡¨ç¤ºå–æ¶ˆè®¢é˜…特å¾å€¼å†™è¯·æ±‚事件上报。ä¸å¡«è¯¥å‚æ•°åˆ™å–æ¶ˆè®¢é˜…该type对应的所有回调。 | **错误ç **: 以下错误ç 的详细介ç»è¯·å‚è§[è“牙æœåŠ¡å系统错误ç ](errorcode-bluetoothManager.md)。 | 错误ç ID | é”™è¯¯ä¿¡æ¯ | | -------- | ---------------------------- | |201 | Permission denied. | |401 | Invalid parameter. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. 3. Parameter verification failed. | |801 | Capability not supported. | **示例:** ```js import { AsyncCallback, BusinessError } from '@kit.BasicServicesKit'; try { let gattServer: ble.GattServer = ble.createGattServer(); gattServer.off('characteristicWrite'); } catch (err) { console.error("errCode:" + (err as BusinessError).code + ",errMessage:" + (err as BusinessError).message); } ``` ### on('descriptorRead') on(type: 'descriptorRead', callback: Callback<DescriptorReadRequest>): void server端订阅æè¿°ç¬¦è¯»è¯·æ±‚事件。使用Callback异æ¥å›žè°ƒã€‚ **éœ€è¦æƒé™**:ohos.permission.ACCESS_BLUETOOTH **原å化æœåŠ¡API**:从API version 12å¼€å§‹ï¼Œè¯¥æŽ¥å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力**:SystemCapability.Communication.Bluetooth.Core。 **傿•°ï¼š** | 傿•°å | 类型 | å¿…å¡« | 说明 | | -------- | ---------------------------------------- | ---- | --------------------------------- | | type | string | 是 | 填写"descriptorRead"å—符串,表示æè¿°ç¬¦è¯»è¯·æ±‚事件。 | | callback | Callback<[DescriptorReadRequest](#descriptorreadrequest)> | 是 | 表示回调函数的入å‚,client端å‘é€çš„读请求数æ®ã€‚ | **错误ç **: 以下错误ç 的详细介ç»è¯·å‚è§[è“牙æœåŠ¡å系统错误ç ](errorcode-bluetoothManager.md)。 | 错误ç ID | é”™è¯¯ä¿¡æ¯ | | -------- | ---------------------------- | |201 | Permission denied. | |401 | Invalid parameter. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. 3. Parameter verification failed. | |801 | Capability not supported. | **示例:** ```js import { AsyncCallback, BusinessError } from '@kit.BasicServicesKit'; let arrayBufferDesc = new ArrayBuffer(8); let descValue = new Uint8Array(arrayBufferDesc); descValue[0] = 1101; let gattServer: ble.GattServer = ble.createGattServer(); function ReadDescriptorReq(descriptorReadRequest: ble.DescriptorReadRequest) { let deviceId: string = descriptorReadRequest.deviceId; let transId: number = descriptorReadRequest.transId; let offset: number = descriptorReadRequest.offset; let descriptorUuid: string = descriptorReadRequest.descriptorUuid; let serverResponse: ble.ServerResponse = {deviceId: deviceId, transId: transId, status: 0, offset: offset, value:arrayBufferDesc}; try { gattServer.sendResponse(serverResponse); } catch (err) { console.error('errCode: ' + (err as BusinessError).code + ', errMessage: ' + (err as BusinessError).message); } } gattServer.on('descriptorRead', ReadDescriptorReq); ``` ### off('descriptorRead') off(type: 'descriptorRead', callback?: Callback<DescriptorReadRequest>): void serverç«¯å–æ¶ˆè®¢é˜…æè¿°ç¬¦è¯»è¯·æ±‚事件。 **éœ€è¦æƒé™**:ohos.permission.ACCESS_BLUETOOTH **原å化æœåŠ¡API**:从API version 12å¼€å§‹ï¼Œè¯¥æŽ¥å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力**:SystemCapability.Communication.Bluetooth.Core。 **傿•°ï¼š** | 傿•°å | 类型 | å¿…å¡« | 说明 | | -------- | ---------------------------------------- | ---- | ---------------------------------------- | | type | string | 是 | 填写"descriptorRead"å—符串,表示æè¿°ç¬¦è¯»è¯·æ±‚事件。 | | callback | Callback<[DescriptorReadRequest](#descriptorreadrequest)> | å¦ | è¡¨ç¤ºå–æ¶ˆè®¢é˜…æè¿°ç¬¦è¯»è¯·æ±‚事件上报。ä¸å¡«è¯¥å‚æ•°åˆ™å–æ¶ˆè®¢é˜…该type对应的所有回调。 | **错误ç **: 以下错误ç 的详细介ç»è¯·å‚è§[è“牙æœåŠ¡å系统错误ç ](errorcode-bluetoothManager.md)。 | 错误ç ID | é”™è¯¯ä¿¡æ¯ | | -------- | ---------------------------- | |201 | Permission denied. | |401 | Invalid parameter. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. 3. Parameter verification failed. | |801 | Capability not supported. | **示例:** ```js import { AsyncCallback, BusinessError } from '@kit.BasicServicesKit'; try { let gattServer: ble.GattServer = ble.createGattServer(); gattServer.off('descriptorRead'); } catch (err) { console.error("errCode:" + (err as BusinessError).code + ",errMessage:" + (err as BusinessError).message); } ``` ### on('descriptorWrite') on(type: 'descriptorWrite', callback: Callback<DescriptorWriteRequest>): void server端订阅æè¿°ç¬¦å†™è¯·æ±‚事件。使用Callback异æ¥å›žè°ƒã€‚ **éœ€è¦æƒé™**:ohos.permission.ACCESS_BLUETOOTH **原å化æœåŠ¡API**:从API version 12å¼€å§‹ï¼Œè¯¥æŽ¥å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力**:SystemCapability.Communication.Bluetooth.Core。 **傿•°ï¼š** | 傿•°å | 类型 | å¿…å¡« | 说明 | | -------- | ---------------------------------------- | ---- | ---------------------------------- | | type | string | 是 | 填写"descriptorWrite"å—符串,表示æè¿°ç¬¦å†™è¯·æ±‚事件。 | | callback | Callback<[DescriptorWriteRequest](#descriptorwriterequest)> | 是 | 表示回调函数的入å‚,client端å‘é€çš„写请求数æ®ã€‚ | **错误ç **: 以下错误ç 的详细介ç»è¯·å‚è§[è“牙æœåŠ¡å系统错误ç ](errorcode-bluetoothManager.md)。 | 错误ç ID | é”™è¯¯ä¿¡æ¯ | | -------- | ---------------------------- | |201 | Permission denied. | |401 | Invalid parameter. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. 3. Parameter verification failed. | |801 | Capability not supported. | **示例:** ```js import { AsyncCallback, BusinessError } from '@kit.BasicServicesKit'; let arrayBufferDesc = new ArrayBuffer(8); let descValue = new Uint8Array(arrayBufferDesc); let gattServer: ble.GattServer = ble.createGattServer(); function WriteDescriptorReq(descriptorWriteRequest: ble.DescriptorWriteRequest) { let deviceId: string = descriptorWriteRequest.deviceId; let transId: number = descriptorWriteRequest.transId; let offset: number = descriptorWriteRequest.offset; let isPrepared: boolean = descriptorWriteRequest.isPrepared; let needRsp: boolean = descriptorWriteRequest.needRsp; let value: Uint8Array = new Uint8Array(descriptorWriteRequest.value); let descriptorUuid: string = descriptorWriteRequest.descriptorUuid; descValue[0] = value[0]; let serverResponse: ble.ServerResponse = {deviceId: deviceId, transId: transId, status: 0, offset: offset, value:arrayBufferDesc}; try { gattServer.sendResponse(serverResponse); } catch (err) { console.error('errCode: ' + (err as BusinessError).code + ', errMessage: ' + (err as BusinessError).message); } } gattServer.on('descriptorWrite', WriteDescriptorReq); ``` ### off('descriptorWrite') off(type: 'descriptorWrite', callback?: Callback<DescriptorWriteRequest>): void serverç«¯å–æ¶ˆè®¢é˜…æè¿°ç¬¦å†™è¯·æ±‚事件。 **éœ€è¦æƒé™**:ohos.permission.ACCESS_BLUETOOTH **原å化æœåŠ¡API**:从API version 12å¼€å§‹ï¼Œè¯¥æŽ¥å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力**:SystemCapability.Communication.Bluetooth.Core。 **傿•°ï¼š** | 傿•°å | 类型 | å¿…å¡« | 说明 | | -------- | ---------------------------------------- | ---- | ---------------------------------------- | | type | string | 是 | 填写"descriptorWrite"å—符串,表示æè¿°ç¬¦å†™è¯·æ±‚事件。 | | callback | Callback<[DescriptorWriteRequest](#descriptorwriterequest)> | å¦ | è¡¨ç¤ºå–æ¶ˆè®¢é˜…æè¿°ç¬¦å†™è¯·æ±‚事件上报。ä¸å¡«è¯¥å‚æ•°åˆ™å–æ¶ˆè®¢é˜…该type对应的所有回调。 | **错误ç **: 以下错误ç 的详细介ç»è¯·å‚è§[è“牙æœåŠ¡å系统错误ç ](errorcode-bluetoothManager.md)。 | 错误ç ID | é”™è¯¯ä¿¡æ¯ | | -------- | ---------------------------- | |201 | Permission denied. | |401 | Invalid parameter. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. 3. Parameter verification failed. | |801 | Capability not supported. | **示例:** ```js import { AsyncCallback, BusinessError } from '@kit.BasicServicesKit'; try { let gattServer: ble.GattServer = ble.createGattServer(); gattServer.off('descriptorWrite'); } catch (err) { console.error("errCode:" + (err as BusinessError).code + ",errMessage:" + (err as BusinessError).message); } ``` ### on('connectionStateChange') on(type: 'connectionStateChange', callback: Callback<BLEConnectionChangeState>): void server端订阅BLE连接状æ€å˜åŒ–事件。使用Callback异æ¥å›žè°ƒã€‚ **éœ€è¦æƒé™**:ohos.permission.ACCESS_BLUETOOTH **原å化æœåŠ¡API**:从API version 12å¼€å§‹ï¼Œè¯¥æŽ¥å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力**:SystemCapability.Communication.Bluetooth.Core。 **傿•°ï¼š** | 傿•°å | 类型 | å¿…å¡« | 说明 | | -------- | ---------------------------------------- | ---- | ---------------------------------------- | | type | string | 是 | 填写"connectionStateChange"å—符串,表示BLE连接状æ€å˜åŒ–事件。 | | callback | Callback<[BLEConnectionChangeState](#bleconnectionchangestate)> | 是 | 表示回调函数的入å‚,连接状æ€ã€‚ | **错误ç **: 以下错误ç 的详细介ç»è¯·å‚è§[è“牙æœåŠ¡å系统错误ç ](errorcode-bluetoothManager.md)。 | 错误ç ID | é”™è¯¯ä¿¡æ¯ | | -------- | ---------------------------- | |201 | Permission denied. | |401 | Invalid parameter. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. 3. Parameter verification failed. | |801 | Capability not supported. | **示例:** ```js import { AsyncCallback, BusinessError } from '@kit.BasicServicesKit'; import { constant } from '@kit.ConnectivityKit'; let Connected = (bleConnectionChangeState: ble.BLEConnectionChangeState) => { let deviceId: string = bleConnectionChangeState.deviceId; let status: constant.ProfileConnectionState = bleConnectionChangeState.state; } try { let gattServer: ble.GattServer = ble.createGattServer(); gattServer.on('connectionStateChange', Connected); } catch (err) { console.error("errCode:" + (err as BusinessError).code + ",errMessage:" + (err as BusinessError).message); } ``` ### off('connectionStateChange') off(type: 'connectionStateChange', callback?: Callback<BLEConnectionChangeState>): void serverç«¯å–æ¶ˆè®¢é˜…BLE连接状æ€å˜åŒ–事件。 **éœ€è¦æƒé™**:ohos.permission.ACCESS_BLUETOOTH **原å化æœåŠ¡API**:从API version 12å¼€å§‹ï¼Œè¯¥æŽ¥å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力**:SystemCapability.Communication.Bluetooth.Core。 **傿•°ï¼š** | 傿•°å | 类型 | å¿…å¡« | 说明 | | -------- | ---------------------------------------- | ---- | ---------------------------------------- | | type | string | 是 | 填写"connectionStateChange"å—符串,表示BLE连接状æ€å˜åŒ–事件。 | | callback | Callback<[BLEConnectionChangeState](#bleconnectionchangestate)> | å¦ | è¡¨ç¤ºå–æ¶ˆè®¢é˜…BLE连接状æ€å˜åŒ–事件。ä¸å¡«è¯¥å‚æ•°åˆ™å–æ¶ˆè®¢é˜…该type对应的所有回调。 | **错误ç **: 以下错误ç 的详细介ç»è¯·å‚è§[è“牙æœåŠ¡å系统错误ç ](errorcode-bluetoothManager.md)。 | 错误ç ID | é”™è¯¯ä¿¡æ¯ | | -------- | ---------------------------- | |201 | Permission denied. | |401 | Invalid parameter. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. 3. Parameter verification failed. | |801 | Capability not supported. | **示例:** ```js import { AsyncCallback, BusinessError } from '@kit.BasicServicesKit'; try { let gattServer: ble.GattServer = ble.createGattServer(); gattServer.off('connectionStateChange'); } catch (err) { console.error("errCode:" + (err as BusinessError).code + ",errMessage:" + (err as BusinessError).message); } ``` ### on('BLEMtuChange') on(type: 'BLEMtuChange', callback: Callback<number>): void server端订阅MTU状æ€å˜åŒ–事件。使用Callback异æ¥å›žè°ƒã€‚ **éœ€è¦æƒé™**:ohos.permission.ACCESS_BLUETOOTH **系统能力**:SystemCapability.Communication.Bluetooth.Core。 **傿•°ï¼š** | 傿•°å | 类型 | å¿…å¡« | 说明 | | -------- | ---------------------------------------- | ---- | ---------------------------------------- | | type | string | 是 | 必须填写"BLEMtuChange"å—符串,表示MTU状æ€å˜åŒ–äº‹ä»¶ã€‚å¡«å†™ä¸æ£ç¡®å°†å¯¼è‡´å›žè°ƒæ— 法注册。 | | callback | Callback<number> | 是 | 返回MTUå—节数的值,通过注册回调函数获å–。 | **错误ç **: 以下错误ç 的详细介ç»è¯·å‚è§[è“牙æœåŠ¡å系统错误ç ](errorcode-bluetoothManager.md)。 | 错误ç ID | é”™è¯¯ä¿¡æ¯ | | -------- | ---------------------------- | |201 | Permission denied. | |401 | Invalid parameter. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. 3. Parameter verification failed. | |801 | Capability not supported. | **示例:** ```js import { AsyncCallback, BusinessError } from '@kit.BasicServicesKit'; try { let gattServer: ble.GattServer = ble.createGattServer(); gattServer.on('BLEMtuChange', (mtu: number) => { console.info('BLEMtuChange, mtu: ' + mtu); }); } catch (err) { console.error('errCode: ' + (err as BusinessError).code + ', errMessage: ' + (err as BusinessError).message); } ``` ### off('BLEMtuChange') off(type: 'BLEMtuChange', callback?: Callback<number>): void serverç«¯å–æ¶ˆè®¢é˜…MTU状æ€å˜åŒ–事件。 **éœ€è¦æƒé™**:ohos.permission.ACCESS_BLUETOOTH **系统能力**:SystemCapability.Communication.Bluetooth.Core。 **傿•°ï¼š** | 傿•°å | 类型 | å¿…å¡« | 说明 | | -------- | ---------------------------------------- | ---- | ---------------------------------------- | | type | string | 是 | 必须填写"BLEMtuChange"å—符串,表示MTU状æ€å˜åŒ–äº‹ä»¶ã€‚å¡«å†™ä¸æ£ç¡®å°†å¯¼è‡´å›žè°ƒæ— 法注册。 | | callback | Callback<number> | å¦ | 返回MTUå—节数的值,通过注册回调函数获å–。ä¸å¡«è¯¥å‚æ•°åˆ™å–æ¶ˆè®¢é˜…该type对应的所有回调。 | **错误ç **: 以下错误ç 的详细介ç»è¯·å‚è§[è“牙æœåŠ¡å系统错误ç ](errorcode-bluetoothManager.md)。 | 错误ç ID | é”™è¯¯ä¿¡æ¯ | | -------- | ---------------------------- | |201 | Permission denied. | |401 | Invalid parameter. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. 3. Parameter verification failed. | |801 | Capability not supported. | **示例:** ```js import { AsyncCallback, BusinessError } from '@kit.BasicServicesKit'; try { let gattServer: ble.GattServer = ble.createGattServer(); gattServer.off('BLEMtuChange'); } catch (err) { console.error('errCode: ' + (err as BusinessError).code + ', errMessage: ' + (err as BusinessError).message); } ``` ## GattClientDevice client端类,使用client端方法之å‰éœ€è¦åˆ›å»ºè¯¥ç±»çš„实例进行æ“作,通过createGattClientDevice(deviceId: string)æ–¹æ³•æž„é€ æ¤å®žä¾‹ã€‚ ### connect connect(): void client端å‘起连接远端è“牙低功耗设备。 **éœ€è¦æƒé™**:ohos.permission.ACCESS_BLUETOOTH **原å化æœåŠ¡API**:从API version 12å¼€å§‹ï¼Œè¯¥æŽ¥å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力**:SystemCapability.Communication.Bluetooth.Core。 **错误ç **: 以下错误ç 的详细介ç»è¯·å‚è§[è“牙æœåŠ¡å系统错误ç ](errorcode-bluetoothManager.md)。 | 错误ç ID | é”™è¯¯ä¿¡æ¯ | | -------- | ---------------------------- | |201 | Permission denied. | |801 | Capability not supported. | |2900001 | Service stopped. | |2900003 | Bluetooth disabled. | |2900099 | Operation failed. | **示例:** ```js import { AsyncCallback, BusinessError } from '@kit.BasicServicesKit'; try { let device: ble.GattClientDevice = ble.createGattClientDevice('XX:XX:XX:XX:XX:XX'); device.connect(); } catch (err) { console.error('errCode: ' + (err as BusinessError).code + ', errMessage: ' + (err as BusinessError).message); } ``` ### disconnect disconnect(): void client端æ–开与远端è“牙低功耗设备的连接。 **éœ€è¦æƒé™**:ohos.permission.ACCESS_BLUETOOTH **原å化æœåŠ¡API**:从API version 12å¼€å§‹ï¼Œè¯¥æŽ¥å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力**:SystemCapability.Communication.Bluetooth.Core。 **错误ç **: 以下错误ç 的详细介ç»è¯·å‚è§[è“牙æœåŠ¡å系统错误ç ](errorcode-bluetoothManager.md)。 | 错误ç ID | é”™è¯¯ä¿¡æ¯ | | -------- | ---------------------------- | |201 | Permission denied. | |801 | Capability not supported. | |2900001 | Service stopped. | |2900003 | Bluetooth disabled. | |2900099 | Operation failed. | **示例:** ```js import { AsyncCallback, BusinessError } from '@kit.BasicServicesKit'; try { let device: ble.GattClientDevice = ble.createGattClientDevice('XX:XX:XX:XX:XX:XX'); device.disconnect(); } catch (err) { console.error('errCode: ' + (err as BusinessError).code + ', errMessage: ' + (err as BusinessError).message); } ``` ### close close(): void å…³é—客户端功能,注销client在åè®®æ ˆçš„æ³¨å†Œï¼Œè°ƒç”¨è¯¥æŽ¥å£åŽ[GattClientDevice](#gattclientdevice)实例将ä¸èƒ½å†ä½¿ç”¨ã€‚ **éœ€è¦æƒé™**:ohos.permission.ACCESS_BLUETOOTH **原å化æœåŠ¡API**:从API version 12å¼€å§‹ï¼Œè¯¥æŽ¥å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力**:SystemCapability.Communication.Bluetooth.Core。 **错误ç **: 以下错误ç 的详细介ç»è¯·å‚è§[è“牙æœåŠ¡å系统错误ç ](errorcode-bluetoothManager.md)。 | 错误ç ID | é”™è¯¯ä¿¡æ¯ | | -------- | ---------------------------- | |201 | Permission denied. | |801 | Capability not supported. | |2900001 | Service stopped. | |2900003 | Bluetooth disabled. | |2900099 | Operation failed. | **示例:** ```js import { AsyncCallback, BusinessError } from '@kit.BasicServicesKit'; try { let device: ble.GattClientDevice = ble.createGattClientDevice('XX:XX:XX:XX:XX:XX'); device.close(); } catch (err) { console.error('errCode: ' + (err as BusinessError).code + ', errMessage: ' + (err as BusinessError).message); } ``` ### getDeviceName getDeviceName(callback: AsyncCallback<string>): void client获å–远端è“牙低功耗设备å。使用Callback异æ¥å›žè°ƒã€‚ **éœ€è¦æƒé™**:ohos.permission.ACCESS_BLUETOOTH **原å化æœåŠ¡API**:从API version 12å¼€å§‹ï¼Œè¯¥æŽ¥å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力**:SystemCapability.Communication.Bluetooth.Core。 **傿•°ï¼š** | 傿•°å | 类型 | å¿…å¡« | 说明 | | -------- | --------------------------- | ---- | ------------------------------- | | callback | AsyncCallback<string> | 是 | client获å–对端server设备å,通过注册回调函数获å–。 | **错误ç **: 以下错误ç 的详细介ç»è¯·å‚è§[è“牙æœåŠ¡å系统错误ç ](errorcode-bluetoothManager.md)。 | 错误ç ID | é”™è¯¯ä¿¡æ¯ | | -------- | ---------------------------- | |201 | Permission denied. | |401 | Invalid parameter. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. | |801 | Capability not supported. | |2900001 | Service stopped. | |2900099 | Operation failed. | **示例:** ```js import { AsyncCallback, BusinessError } from '@kit.BasicServicesKit'; // callback try { let gattClient: ble.GattClientDevice = ble.createGattClientDevice("XX:XX:XX:XX:XX:XX"); gattClient.connect(); gattClient.getDeviceName((err: BusinessError, data: string)=> { console.info('device name err ' + JSON.stringify(err)); console.info('device name' + JSON.stringify(data)); }) } catch (err) { console.error('errCode: ' + (err as BusinessError).code + ', errMessage: ' + (err as BusinessError).message); } ``` ### getDeviceName getDeviceName(): Promise<string> client获å–远端è“牙低功耗设备å。使用Promise异æ¥å›žè°ƒã€‚ **éœ€è¦æƒé™**:ohos.permission.ACCESS_BLUETOOTH **原å化æœåŠ¡API**:从API version 12å¼€å§‹ï¼Œè¯¥æŽ¥å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力**:SystemCapability.Communication.Bluetooth.Core。 **返回值:** | 类型 | 说明 | | --------------------- | ---------------------------------- | | Promise<string> | client获å–对端server设备å,通过promiseå½¢å¼èŽ·å–。 | **错误ç **: 以下错误ç 的详细介ç»è¯·å‚è§[è“牙æœåŠ¡å系统错误ç ](errorcode-bluetoothManager.md)。 | 错误ç ID | é”™è¯¯ä¿¡æ¯ | | -------- | ---------------------------- | |201 | Permission denied. | |401 | Invalid parameter. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. | |801 | Capability not supported. | |2900001 | Service stopped. | |2900099 | Operation failed. | **示例:** ```js import { AsyncCallback, BusinessError } from '@kit.BasicServicesKit'; // promise try { let gattClient: ble.GattClientDevice = ble.createGattClientDevice("XX:XX:XX:XX:XX:XX"); gattClient.connect(); gattClient.getDeviceName().then((data: string) => { console.info('device name' + JSON.stringify(data)); }) } catch (err) { console.error('errCode: ' + (err as BusinessError).code + ', errMessage: ' + (err as BusinessError).message); } ``` ### getServices getServices(callback: AsyncCallback<Array<GattService>>): void client端获å–è“牙低功耗设备的所有æœåŠ¡ï¼Œå³æœåŠ¡å‘现。使用Callback异æ¥å›žè°ƒã€‚ **éœ€è¦æƒé™**:ohos.permission.ACCESS_BLUETOOTH **原å化æœåŠ¡API**:从API version 12å¼€å§‹ï¼Œè¯¥æŽ¥å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力**:SystemCapability.Communication.Bluetooth.Core。 **傿•°ï¼š** | 傿•°å | 类型 | å¿…å¡« | 说明 | | -------- | ---------------------------------------- | ---- | ------------------------ | | callback | AsyncCallback<Array<[GattService](#gattservice)>> | 是 | client进行æœåŠ¡å‘现,通过注册回调函数获å–。 | **错误ç **: 以下错误ç 的详细介ç»è¯·å‚è§[è“牙æœåŠ¡å系统错误ç ](errorcode-bluetoothManager.md)。 | 错误ç ID | é”™è¯¯ä¿¡æ¯ | | -------- | ---------------------------- | |201 | Permission denied. | |401 | Invalid parameter. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. | |801 | Capability not supported. | |2900001 | Service stopped. | |2900099 | Operation failed. | **示例:** ```js import { AsyncCallback, BusinessError } from '@kit.BasicServicesKit'; // callback æ¨¡å¼ let getServices = (code: BusinessError, gattServices: Array<ble.GattService>) => { if (code && code.code != 0) { console.info('bluetooth code is ' + code.code); return; } let services: Array<ble.GattService> = gattServices; console.info('bluetooth services size is ', services.length); for (let i = 0; i < services.length; i++) { console.info('bluetooth serviceUuid is ' + services[i].serviceUuid); } } try { let device: ble.GattClientDevice = ble.createGattClientDevice('XX:XX:XX:XX:XX:XX'); device.connect(); device.getServices(getServices); } catch (err) { console.error('errCode: ' + (err as BusinessError).code + ', errMessage: ' + (err as BusinessError).message); } ``` ### getServices getServices(): Promise<Array<GattService>> client端获å–è“牙低功耗设备的所有æœåŠ¡ï¼Œå³æœåŠ¡å‘现。使用Promise异æ¥å›žè°ƒã€‚ **éœ€è¦æƒé™**:ohos.permission.ACCESS_BLUETOOTH **原å化æœåŠ¡API**:从API version 12å¼€å§‹ï¼Œè¯¥æŽ¥å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力**:SystemCapability.Communication.Bluetooth.Core。 **返回值:** | 类型 | 说明 | | ---------------------------------------- | --------------------------- | | Promise<Array<[GattService](#gattservice)>> | client进行æœåŠ¡å‘现,通过promiseå½¢å¼èŽ·å–。 | **错误ç **: 以下错误ç 的详细介ç»è¯·å‚è§[è“牙æœåŠ¡å系统错误ç ](errorcode-bluetoothManager.md)。 | 错误ç ID | é”™è¯¯ä¿¡æ¯ | | -------- | ---------------------------- | |201 | Permission denied. | |401 | Invalid parameter. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. 3. Parameter verification failed. | |801 | Capability not supported. | |2900001 | Service stopped. | |2900099 | Operation failed. | **示例:** ```js import { AsyncCallback, BusinessError } from '@kit.BasicServicesKit'; // Promise æ¨¡å¼ try { let device: ble.GattClientDevice = ble.createGattClientDevice('XX:XX:XX:XX:XX:XX'); device.connect(); device.getServices().then((result: Array<ble.GattService>) => { console.info('getServices successfully:' + JSON.stringify(result)); }); } catch (err) { console.error('errCode: ' + (err as BusinessError).code + ', errMessage: ' + (err as BusinessError).message); } ``` ### readCharacteristicValue readCharacteristicValue(characteristic: BLECharacteristic, callback: AsyncCallback<BLECharacteristic>): void client端读å–è“牙低功耗设备特定æœåŠ¡çš„ç‰¹å¾å€¼ã€‚使用Callback异æ¥å›žè°ƒã€‚ **éœ€è¦æƒé™**:ohos.permission.ACCESS_BLUETOOTH **原å化æœåŠ¡API**:从API version 12å¼€å§‹ï¼Œè¯¥æŽ¥å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力**:SystemCapability.Communication.Bluetooth.Core。 **傿•°ï¼š** | 傿•°å | 类型 | å¿…å¡« | 说明 | | -------------- | ---------------------------------------- | ---- | ----------------------- | | characteristic | [BLECharacteristic](#blecharacteristic) | 是 | 待读å–的特å¾å€¼ã€‚ | | callback | AsyncCallback<[BLECharacteristic](#blecharacteristic)> | 是 | client读å–特å¾å€¼ï¼Œé€šè¿‡æ³¨å†Œå›žè°ƒå‡½æ•°èŽ·å–。 | **错误ç **: 以下错误ç 的详细介ç»è¯·å‚è§[è“牙æœåŠ¡å系统错误ç ](errorcode-bluetoothManager.md)。 | 错误ç ID | é”™è¯¯ä¿¡æ¯ | | -------- | ---------------------------- | |201 | Permission denied. | |401 | Invalid parameter. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. 3. Parameter verification failed. | |801 | Capability not supported. | |2900001 | Service stopped. | |2901000 | Read forbidden. | |2900099 | Operation failed. | **示例:** ```js import { AsyncCallback, BusinessError } from '@kit.BasicServicesKit'; function readCcc(code: BusinessError, BLECharacteristic: ble.BLECharacteristic) { if (code.code != 0) { return; } console.info('bluetooth characteristic uuid: ' + BLECharacteristic.characteristicUuid); let value = new Uint8Array(BLECharacteristic.characteristicValue); console.info('bluetooth characteristic value: ' + value[0] +','+ value[1]+','+ value[2]+','+ value[3]); } let descriptors: Array<ble.BLEDescriptor> = []; let bufferDesc = new ArrayBuffer(8); let descV = new Uint8Array(bufferDesc); descV[0] = 11; let descriptor: ble.BLEDescriptor = {serviceUuid: '00001810-0000-1000-8000-00805F9B34FB', characteristicUuid: '00001820-0000-1000-8000-00805F9B34FB', descriptorUuid: '00002903-0000-1000-8000-00805F9B34FB', descriptorValue: bufferDesc}; descriptors[0] = descriptor; let bufferCCC = new ArrayBuffer(8); let cccV = new Uint8Array(bufferCCC); cccV[0] = 1; let characteristic: ble.BLECharacteristic = {serviceUuid: '00001810-0000-1000-8000-00805F9B34FB', characteristicUuid: '00001820-0000-1000-8000-00805F9B34FB', characteristicValue: bufferCCC, descriptors:descriptors}; try { let device: ble.GattClientDevice = ble.createGattClientDevice('XX:XX:XX:XX:XX:XX'); device.readCharacteristicValue(characteristic, readCcc); } catch (err) { console.error('errCode: ' + (err as BusinessError).code + ', errMessage: ' + (err as BusinessError).message); } ``` ### readCharacteristicValue readCharacteristicValue(characteristic: BLECharacteristic): Promise<BLECharacteristic> client端读å–è“牙低功耗设备特定æœåŠ¡çš„ç‰¹å¾å€¼ã€‚使用Promise异æ¥å›žè°ƒã€‚ **éœ€è¦æƒé™**:ohos.permission.ACCESS_BLUETOOTH **原å化æœåŠ¡API**:从API version 12å¼€å§‹ï¼Œè¯¥æŽ¥å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力**:SystemCapability.Communication.Bluetooth.Core。 **傿•°ï¼š** | 傿•°å | 类型 | å¿…å¡« | 说明 | | -------------- | --------------------------------------- | ---- | -------- | | characteristic | [BLECharacteristic](#blecharacteristic) | 是 | 待读å–的特å¾å€¼ã€‚ | **返回值:** | 类型 | 说明 | | ---------------------------------------- | -------------------------- | | Promise<[BLECharacteristic](#blecharacteristic)> | client读å–特å¾å€¼ï¼Œé€šè¿‡promiseå½¢å¼èŽ·å–。 | **错误ç **: 以下错误ç 的详细介ç»è¯·å‚è§[è“牙æœåŠ¡å系统错误ç ](errorcode-bluetoothManager.md)。 | 错误ç ID | é”™è¯¯ä¿¡æ¯ | | -------- | ---------------------------- | |201 | Permission denied. | |401 | Invalid parameter. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. 3. Parameter verification failed. | |801 | Capability not supported. | |2900001 | Service stopped. | |2901000 | Read forbidden. | |2900099 | Operation failed. | **示例:** ```js import { AsyncCallback, BusinessError } from '@kit.BasicServicesKit'; let descriptors: Array<ble.BLEDescriptor> = []; let bufferDesc = new ArrayBuffer(8); let descV = new Uint8Array(bufferDesc); descV[0] = 11; let descriptor: ble.BLEDescriptor = {serviceUuid: '00001810-0000-1000-8000-00805F9B34FB', characteristicUuid: '00001820-0000-1000-8000-00805F9B34FB', descriptorUuid: '00002903-0000-1000-8000-00805F9B34FB', descriptorValue: bufferDesc}; descriptors[0] = descriptor; let bufferCCC = new ArrayBuffer(8); let cccV = new Uint8Array(bufferCCC); cccV[0] = 1; let characteristic: ble.BLECharacteristic = {serviceUuid: '00001810-0000-1000-8000-00805F9B34FB', characteristicUuid: '00001820-0000-1000-8000-00805F9B34FB', characteristicValue: bufferCCC, descriptors:descriptors}; try { let device: ble.GattClientDevice = ble.createGattClientDevice('XX:XX:XX:XX:XX:XX'); device.readCharacteristicValue(characteristic); } catch (err) { console.error('errCode: ' + (err as BusinessError).code + ', errMessage: ' + (err as BusinessError).message); } ``` ### readDescriptorValue readDescriptorValue(descriptor: BLEDescriptor, callback: AsyncCallback<BLEDescriptor>): void client端读å–è“牙低功耗设备特定的特å¾åŒ…å«çš„æè¿°ç¬¦ã€‚使用Callback异æ¥å›žè°ƒã€‚ **éœ€è¦æƒé™**:ohos.permission.ACCESS_BLUETOOTH **原å化æœåŠ¡API**:从API version 12å¼€å§‹ï¼Œè¯¥æŽ¥å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力**:SystemCapability.Communication.Bluetooth.Core。 **傿•°ï¼š** | 傿•°å | 类型 | å¿…å¡« | 说明 | | ---------- | ---------------------------------------- | ---- | ----------------------- | | descriptor | [BLEDescriptor](#bledescriptor) | 是 | 待读å–çš„æè¿°ç¬¦ã€‚ | | callback | AsyncCallback<[BLEDescriptor](#bledescriptor)> | 是 | clientè¯»å–æè¿°ç¬¦ï¼Œé€šè¿‡æ³¨å†Œå›žè°ƒå‡½æ•°èŽ·å–。 | **错误ç **: 以下错误ç 的详细介ç»è¯·å‚è§[è“牙æœåŠ¡å系统错误ç ](errorcode-bluetoothManager.md)。 | 错误ç ID | é”™è¯¯ä¿¡æ¯ | | -------- | ---------------------------- | |201 | Permission denied. | |401 | Invalid parameter. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. 3. Parameter verification failed. | |801 | Capability not supported. | |2900001 | Service stopped. | |2901000 | Read forbidden. | |2900099 | Operation failed. | **示例:** ```js import { AsyncCallback, BusinessError } from '@kit.BasicServicesKit'; function readDesc(code: BusinessError, BLEDescriptor: ble.BLEDescriptor) { if (code.code != 0) { return; } console.info('bluetooth descriptor uuid: ' + BLEDescriptor.descriptorUuid); let value = new Uint8Array(BLEDescriptor.descriptorValue); console.info('bluetooth descriptor value: ' + value[0] +','+ value[1]+','+ value[2]+','+ value[3]); } let bufferDesc = new ArrayBuffer(8); let descV = new Uint8Array(bufferDesc); descV[0] = 11; let descriptor: ble.BLEDescriptor = { serviceUuid: '00001810-0000-1000-8000-00805F9B34FB', characteristicUuid: '00001820-0000-1000-8000-00805F9B34FB', descriptorUuid: '00002903-0000-1000-8000-00805F9B34FB', descriptorValue: bufferDesc }; try { let device: ble.GattClientDevice = ble.createGattClientDevice('XX:XX:XX:XX:XX:XX'); device.readDescriptorValue(descriptor, readDesc); } catch (err) { console.error('errCode: ' + (err as BusinessError).code + ', errMessage: ' + (err as BusinessError).message); } ``` ### readDescriptorValue readDescriptorValue(descriptor: BLEDescriptor): Promise<BLEDescriptor> client端读å–è“牙低功耗设备特定的特å¾åŒ…å«çš„æè¿°ç¬¦ã€‚使用Promise异æ¥å›žè°ƒã€‚ **éœ€è¦æƒé™**:ohos.permission.ACCESS_BLUETOOTH **原å化æœåŠ¡API**:从API version 12å¼€å§‹ï¼Œè¯¥æŽ¥å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力**:SystemCapability.Communication.Bluetooth.Core。 **傿•°ï¼š** | 傿•°å | 类型 | å¿…å¡« | 说明 | | ---------- | ------------------------------- | ---- | -------- | | descriptor | [BLEDescriptor](#bledescriptor) | 是 | 待读å–çš„æè¿°ç¬¦ã€‚ | **返回值:** | 类型 | 说明 | | ---------------------------------------- | -------------------------- | | Promise<[BLEDescriptor](#bledescriptor)> | clientè¯»å–æè¿°ç¬¦ï¼Œé€šè¿‡promiseå½¢å¼èŽ·å–。 | **错误ç **: 以下错误ç 的详细介ç»è¯·å‚è§[è“牙æœåŠ¡å系统错误ç ](errorcode-bluetoothManager.md)。 | 错误ç ID | é”™è¯¯ä¿¡æ¯ | | -------- | ---------------------------- | |201 | Permission denied. | |401 | Invalid parameter. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. 3. Parameter verification failed. | |801 | Capability not supported. | |2900001 | Service stopped. | |2901000 | Read forbidden. | |2900099 | Operation failed. | **示例:** ```js import { AsyncCallback, BusinessError } from '@kit.BasicServicesKit'; let bufferDesc = new ArrayBuffer(8); let descV = new Uint8Array(bufferDesc); descV[0] = 11; let descriptor: ble.BLEDescriptor = { serviceUuid: '00001810-0000-1000-8000-00805F9B34FB', characteristicUuid: '00001820-0000-1000-8000-00805F9B34FB', descriptorUuid: '00002903-0000-1000-8000-00805F9B34FB', descriptorValue: bufferDesc }; try { let device: ble.GattClientDevice = ble.createGattClientDevice('XX:XX:XX:XX:XX:XX'); device.readDescriptorValue(descriptor); } catch (err) { console.error('errCode: ' + (err as BusinessError).code + ', errMessage: ' + (err as BusinessError).message); } ``` ### writeCharacteristicValue writeCharacteristicValue(characteristic: BLECharacteristic, writeType: GattWriteType, callback: AsyncCallback<void>): void client端å‘低功耗è“牙设备写入特定的特å¾å€¼ã€‚使用Callback异æ¥å›žè°ƒã€‚ **éœ€è¦æƒé™**:ohos.permission.ACCESS_BLUETOOTH **原å化æœåŠ¡API**:从API version 12å¼€å§‹ï¼Œè¯¥æŽ¥å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力**:SystemCapability.Communication.Bluetooth.Core。 **傿•°ï¼š** | 傿•°å | 类型 | å¿…å¡« | 说明 | | -------------- | --------------------------------------- | ---- | ------------------- | | characteristic | [BLECharacteristic](#blecharacteristic) | 是 | è“牙设备特å¾å¯¹åº”的二进制值åŠå…¶å®ƒå‚数。 | | writeType | [GattWriteType](#gattwritetype) | 是 | è“牙设备特å¾çš„写入类型。 | | callback | AsyncCallback<void> | 是 | 回调函数。当写入æˆåŠŸï¼Œerr为undefined,å¦åˆ™ä¸ºé”™è¯¯å¯¹è±¡ã€‚ | **错误ç **: 以下错误ç 的详细介ç»è¯·å‚è§[è“牙æœåŠ¡å系统错误ç ](errorcode-bluetoothManager.md)。 | 错误ç ID | é”™è¯¯ä¿¡æ¯ | | -------- | ---------------------------- | |201 | Permission denied. | |401 | Invalid parameter. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. 3. Parameter verification failed. | |801 | Capability not supported. | |2900001 | Service stopped. | |2901001 | Write forbidden. | |2900099 | Operation failed. | **示例:** ```js import { AsyncCallback, BusinessError } from '@kit.BasicServicesKit'; let descriptors: Array<ble.BLEDescriptor> = []; let bufferDesc = new ArrayBuffer(8); let descV = new Uint8Array(bufferDesc); descV[0] = 11; let descriptor: ble.BLEDescriptor = {serviceUuid: '00001810-0000-1000-8000-00805F9B34FB', characteristicUuid: '00001820-0000-1000-8000-00805F9B34FB', descriptorUuid: '00002903-0000-1000-8000-00805F9B34FB', descriptorValue: bufferDesc}; descriptors[0] = descriptor; let bufferCCC = new ArrayBuffer(8); let cccV = new Uint8Array(bufferCCC); cccV[0] = 1; let characteristic: ble.BLECharacteristic = {serviceUuid: '00001810-0000-1000-8000-00805F9B34FB', characteristicUuid: '00001820-0000-1000-8000-00805F9B34FB', characteristicValue: bufferCCC, descriptors:descriptors}; function writeCharacteristicValueCallBack(code: BusinessError) { if (code != null) { return; } console.info('bluetooth writeCharacteristicValue success'); } try { let device: ble.GattClientDevice = ble.createGattClientDevice('XX:XX:XX:XX:XX:XX'); device.writeCharacteristicValue(characteristic, ble.GattWriteType.WRITE, writeCharacteristicValueCallBack); } catch (err) { console.error('errCode: ' + (err as BusinessError).code + ', errMessage: ' + (err as BusinessError).message); } ``` ### writeCharacteristicValue writeCharacteristicValue(characteristic: BLECharacteristic, writeType: GattWriteType): Promise<void> client端å‘低功耗è“牙设备写入特定的特å¾å€¼ã€‚使用Promise异æ¥å›žè°ƒã€‚ **éœ€è¦æƒé™**:ohos.permission.ACCESS_BLUETOOTH **原å化æœåŠ¡API**:从API version 12å¼€å§‹ï¼Œè¯¥æŽ¥å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力**:SystemCapability.Communication.Bluetooth.Core。 **傿•°ï¼š** | 傿•°å | 类型 | å¿…å¡« | 说明 | | -------------- | --------------------------------------- | ---- | ------------------- | | characteristic | [BLECharacteristic](#blecharacteristic) | 是 | è“牙设备特å¾å¯¹åº”的二进制值åŠå…¶å®ƒå‚数。 | | writeType | [GattWriteType](#gattwritetype) | 是 | è“牙设备特å¾çš„写入类型。 | **返回值:** | 类型 | 说明 | | ---------------------------------------- | -------------------------- | | Promise<void> | clientè¯»å–æè¿°ç¬¦ï¼Œé€šè¿‡promiseå½¢å¼èŽ·å–。 | **错误ç **: 以下错误ç 的详细介ç»è¯·å‚è§[è“牙æœåŠ¡å系统错误ç ](errorcode-bluetoothManager.md)。 | 错误ç ID | é”™è¯¯ä¿¡æ¯ | | -------- | ---------------------------- | |201 | Permission denied. | |401 | Invalid parameter. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. 3. Parameter verification failed. | |801 | Capability not supported. | |2900001 | Service stopped. | |2901001 | Write forbidden. | |2900099 | Operation failed. | **示例:** ```js import { AsyncCallback, BusinessError } from '@kit.BasicServicesKit'; let descriptors: Array<ble.BLEDescriptor> = []; let bufferDesc = new ArrayBuffer(8); let descV = new Uint8Array(bufferDesc); descV[0] = 11; let descriptor: ble.BLEDescriptor = {serviceUuid: '00001810-0000-1000-8000-00805F9B34FB', characteristicUuid: '00001820-0000-1000-8000-00805F9B34FB', descriptorUuid: '00002903-0000-1000-8000-00805F9B34FB', descriptorValue: bufferDesc}; descriptors[0] = descriptor; let bufferCCC = new ArrayBuffer(8); let cccV = new Uint8Array(bufferCCC); cccV[0] = 1; let characteristic: ble.BLECharacteristic = {serviceUuid: '00001810-0000-1000-8000-00805F9B34FB', characteristicUuid: '00001820-0000-1000-8000-00805F9B34FB', characteristicValue: bufferCCC, descriptors:descriptors}; try { let device: ble.GattClientDevice = ble.createGattClientDevice('XX:XX:XX:XX:XX:XX'); device.writeCharacteristicValue(characteristic, ble.GattWriteType.WRITE); } catch (err) { console.error('errCode: ' + (err as BusinessError).code + ', errMessage: ' + (err as BusinessError).message); } ``` ### writeDescriptorValue writeDescriptorValue(descriptor: BLEDescriptor, callback: AsyncCallback<void>): void client端å‘低功耗è“牙设备特定的æè¿°ç¬¦å†™å…¥äºŒè¿›åˆ¶æ•°æ®ã€‚使用Callback异æ¥å›žè°ƒã€‚ **éœ€è¦æƒé™**:ohos.permission.ACCESS_BLUETOOTH **原å化æœåŠ¡API**:从API version 12å¼€å§‹ï¼Œè¯¥æŽ¥å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力**:SystemCapability.Communication.Bluetooth.Core。 **傿•°ï¼š** | 傿•°å | 类型 | å¿…å¡« | 说明 | | ---------- | ------------------------------- | ---- | ------------------ | | descriptor | [BLEDescriptor](#bledescriptor) | 是 | è“牙设备æè¿°ç¬¦çš„二进制值åŠå…¶å®ƒå‚数。 | | callback | AsyncCallback<void> | 是 | 回调函数。当写入æˆåŠŸï¼Œerr为undefined,å¦åˆ™ä¸ºé”™è¯¯å¯¹è±¡ã€‚ | **错误ç **: 以下错误ç 的详细介ç»è¯·å‚è§[è“牙æœåŠ¡å系统错误ç ](errorcode-bluetoothManager.md)。 | 错误ç ID | é”™è¯¯ä¿¡æ¯ | | -------- | ---------------------------- | |201 | Permission denied. | |401 | Invalid parameter. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. 3. Parameter verification failed. | |801 | Capability not supported. | |2900001 | Service stopped. | |2901001 | Write forbidden. | |2900099 | Operation failed. | **示例:** ```js import { AsyncCallback, BusinessError } from '@kit.BasicServicesKit'; let bufferDesc = new ArrayBuffer(8); let descV = new Uint8Array(bufferDesc); descV[0] = 22; let descriptor: ble.BLEDescriptor = { serviceUuid: '00001810-0000-1000-8000-00805F9B34FB', characteristicUuid: '00001820-0000-1000-8000-00805F9B34FB', descriptorUuid: '00002903-0000-1000-8000-00805F9B34FB', descriptorValue: bufferDesc }; try { let device: ble.GattClientDevice = ble.createGattClientDevice('XX:XX:XX:XX:XX:XX'); device.writeDescriptorValue(descriptor, (err: BusinessError) => { if (err) { console.info('notifyCharacteristicChanged callback failed'); } else { console.info('notifyCharacteristicChanged callback successful'); } }); } catch (err) { console.error('errCode: ' + (err as BusinessError).code + ', errMessage: ' + (err as BusinessError).message); } ``` ### writeDescriptorValue writeDescriptorValue(descriptor: BLEDescriptor): Promise<void> client端å‘低功耗è“牙设备特定的æè¿°ç¬¦å†™å…¥äºŒè¿›åˆ¶æ•°æ®ã€‚使用Promise异æ¥å›žè°ƒã€‚ **éœ€è¦æƒé™**:ohos.permission.ACCESS_BLUETOOTH **原å化æœåŠ¡API**:从API version 12å¼€å§‹ï¼Œè¯¥æŽ¥å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力**:SystemCapability.Communication.Bluetooth.Core。 **傿•°ï¼š** | 傿•°å | 类型 | å¿…å¡« | 说明 | | ---------- | ------------------------------- | ---- | ------------------ | | descriptor | [BLEDescriptor](#bledescriptor) | 是 | è“牙设备æè¿°ç¬¦çš„二进制值åŠå…¶å®ƒå‚数。 | **返回值:** | 类型 | 说明 | | ---------------------------------------- | -------------------------- | | Promise<void> | clientè¯»å–æè¿°ç¬¦ï¼Œé€šè¿‡promiseå½¢å¼èŽ·å–。 | **错误ç **: 以下错误ç 的详细介ç»è¯·å‚è§[è“牙æœåŠ¡å系统错误ç ](errorcode-bluetoothManager.md)。 | 错误ç ID | é”™è¯¯ä¿¡æ¯ | | -------- | ---------------------------- | |201 | Permission denied. | |401 | Invalid parameter. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. 3. Parameter verification failed. | |801 | Capability not supported. | |2900001 | Service stopped. | |2901001 | Write forbidden. | |2900099 | Operation failed. | **示例:** ```js import { AsyncCallback, BusinessError } from '@kit.BasicServicesKit'; let bufferDesc = new ArrayBuffer(8); let descV = new Uint8Array(bufferDesc); descV[0] = 22; let descriptor: ble.BLEDescriptor = { serviceUuid: '00001810-0000-1000-8000-00805F9B34FB', characteristicUuid: '00001820-0000-1000-8000-00805F9B34FB', descriptorUuid: '00002903-0000-1000-8000-00805F9B34FB', descriptorValue: bufferDesc }; try { let device: ble.GattClientDevice = ble.createGattClientDevice('XX:XX:XX:XX:XX:XX'); device.writeDescriptorValue(descriptor).then(() => { console.info('writeDescriptorValue promise success'); }); } catch (err) { console.error('errCode: ' + (err as BusinessError).code + ', errMessage: ' + (err as BusinessError).message); } ``` ### getRssiValue getRssiValue(callback: AsyncCallback<number>): void client获å–远端è“牙低功耗设备的信å·å¼ºåº¦ (Received Signal Strength Indication, RSSI),调用[connect](#connect)接å£è¿žæŽ¥æˆåŠŸåŽæ‰èƒ½ä½¿ç”¨ã€‚使用Callback异æ¥å›žè°ƒã€‚ **éœ€è¦æƒé™**:ohos.permission.ACCESS_BLUETOOTH **原å化æœåŠ¡API**:从API version 12å¼€å§‹ï¼Œè¯¥æŽ¥å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力**:SystemCapability.Communication.Bluetooth.Core。 **傿•°ï¼š** | 傿•°å | 类型 | å¿…å¡« | 说明 | | -------- | --------------------------- | ---- | ------------------------------ | | callback | AsyncCallback<number> | 是 | 返回信å·å¼ºåº¦ï¼Œå•ä½ dBm,通过注册回调函数获å–。 | **错误ç **: 以下错误ç 的详细介ç»è¯·å‚è§[è“牙æœåŠ¡å系统错误ç ](errorcode-bluetoothManager.md)。 | 错误ç ID | é”™è¯¯ä¿¡æ¯ | | -------- | ---------------------------- | |201 | Permission denied. | |401 | Invalid parameter. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. 3. Parameter verification failed. | |801 | Capability not supported. | |2900099 | Operation failed. | **示例:** ```js import { AsyncCallback, BusinessError } from '@kit.BasicServicesKit'; // callback try { let gattClient: ble.GattClientDevice = ble.createGattClientDevice("XX:XX:XX:XX:XX:XX"); gattClient.connect(); let rssi = gattClient.getRssiValue((err: BusinessError, data: number)=> { console.info('rssi err ' + JSON.stringify(err)); console.info('rssi value' + JSON.stringify(data)); }) } catch (err) { console.error('errCode: ' + (err as BusinessError).code + ', errMessage: ' + (err as BusinessError).message); } ``` ### getRssiValue getRssiValue(): Promise<number> client获å–远端è“牙低功耗设备的信å·å¼ºåº¦ (Received Signal Strength Indication, RSSI),调用[connect](#connect)接å£è¿žæŽ¥æˆåŠŸåŽæ‰èƒ½ä½¿ç”¨ã€‚使用Promise异æ¥å›žè°ƒã€‚ **éœ€è¦æƒé™**:ohos.permission.ACCESS_BLUETOOTH **原å化æœåŠ¡API**:从API version 12å¼€å§‹ï¼Œè¯¥æŽ¥å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力**:SystemCapability.Communication.Bluetooth.Core。 **返回值:** | 类型 | 说明 | | --------------------- | --------------------------------- | | Promise<number> | 返回信å·å¼ºåº¦ï¼Œå•ä½ dBm,通过promiseå½¢å¼èŽ·å–。 | **错误ç **: 以下错误ç 的详细介ç»è¯·å‚è§[è“牙æœåŠ¡å系统错误ç ](errorcode-bluetoothManager.md)。 | 错误ç ID | é”™è¯¯ä¿¡æ¯ | | -------- | ---------------------------- | |201 | Permission denied. | |401 | Invalid parameter. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. | |801 | Capability not supported. | |2900099 | Operation failed. | **示例:** ```js import { AsyncCallback, BusinessError } from '@kit.BasicServicesKit'; // promise try { let gattClient: ble.GattClientDevice = ble.createGattClientDevice("XX:XX:XX:XX:XX:XX"); gattClient.getRssiValue().then((data: number) => { console.info('rssi' + JSON.stringify(data)); }) } catch (err) { console.error('errCode: ' + (err as BusinessError).code + ', errMessage: ' + (err as BusinessError).message); } ``` ### setBLEMtuSize setBLEMtuSize(mtu: number): void clientå商远端è“ç‰™ä½ŽåŠŸè€—è®¾å¤‡çš„æœ€å¤§ä¼ è¾“å•元(Maximum Transmission Unit, MTU),调用[connect](#connect)接å£è¿žæŽ¥æˆåŠŸåŽæ‰èƒ½ä½¿ç”¨ã€‚ **éœ€è¦æƒé™**:ohos.permission.ACCESS_BLUETOOTH **原å化æœåŠ¡API**:从API version 12å¼€å§‹ï¼Œè¯¥æŽ¥å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力**:SystemCapability.Communication.Bluetooth.Core。 **傿•°ï¼š** | 傿•°å | 类型 | å¿…å¡« | 说明 | | ---- | ------ | ---- | -------------- | | mtu | number | 是 | 设置范围为22~512å—节。 | **错误ç **: 以下错误ç 的详细介ç»è¯·å‚è§[è“牙æœåŠ¡å系统错误ç ](errorcode-bluetoothManager.md)。 | 错误ç ID | é”™è¯¯ä¿¡æ¯ | | -------- | ---------------------------- | |201 | Permission denied. | |401 | Invalid parameter. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. 3. Parameter verification failed. | |801 | Capability not supported. | |2900001 | Service stopped. | |2900099 | Operation failed. | **示例:** ```js import { AsyncCallback, BusinessError } from '@kit.BasicServicesKit'; try { let device: ble.GattClientDevice = ble.createGattClientDevice('XX:XX:XX:XX:XX:XX'); device.setBLEMtuSize(128); } catch (err) { console.error('errCode: ' + (err as BusinessError).code + ', errMessage: ' + (err as BusinessError).message); } ``` ### setCharacteristicChangeNotification setCharacteristicChangeNotification(characteristic: BLECharacteristic, enable: boolean, callback: AsyncCallback<void>): void 呿œåŠ¡ç«¯å‘é€è®¾ç½®é€šçŸ¥æ¤ç‰¹å¾å€¼è¯·æ±‚。使用Callback异æ¥å›žè°ƒã€‚ **éœ€è¦æƒé™**:ohos.permission.ACCESS_BLUETOOTH **原å化æœåŠ¡API**:从API version 12å¼€å§‹ï¼Œè¯¥æŽ¥å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力**:SystemCapability.Communication.Bluetooth.Core。 **傿•°ï¼š** | 傿•°å | 类型 | å¿…å¡« | 说明 | | -------------- | --------------------------------------- | ---- | ----------------------------- | | characteristic | [BLECharacteristic](#blecharacteristic) | 是 | è“牙低功耗特å¾ã€‚ | | enable | boolean | 是 | å¯ç”¨æŽ¥æ”¶notify设置为true,å¦åˆ™è®¾ç½®ä¸ºfalse。 | | callback | AsyncCallback<void> | 是 | 回调函数。当å‘逿ˆåŠŸï¼Œerr为undefined,å¦åˆ™ä¸ºé”™è¯¯å¯¹è±¡ã€‚ | **错误ç **: 以下错误ç 的详细介ç»è¯·å‚è§[è“牙æœåŠ¡å系统错误ç ](errorcode-bluetoothManager.md)。 | 错误ç ID | é”™è¯¯ä¿¡æ¯ | | -------- | ---------------------------- | |201 | Permission denied. | |401 | Invalid parameter. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. 3. Parameter verification failed. | |801 | Capability not supported. | |2900001 | Service stopped. | |2900099 | Operation failed. | **示例:** ```js import { AsyncCallback, BusinessError } from '@kit.BasicServicesKit'; // 创建descriptors let descriptors: Array<ble.BLEDescriptor> = []; let arrayBuffer = new ArrayBuffer(8); let descV = new Uint8Array(arrayBuffer); descV[0] = 11; let descriptor: ble.BLEDescriptor = {serviceUuid: '00001810-0000-1000-8000-00805F9B34FB', characteristicUuid: '00001820-0000-1000-8000-00805F9B34FB', descriptorUuid: '00002902-0000-1000-8000-00805F9B34FB', descriptorValue: arrayBuffer}; descriptors[0] = descriptor; let arrayBufferC = new ArrayBuffer(8); let characteristic: ble.BLECharacteristic = {serviceUuid: '00001810-0000-1000-8000-00805F9B34FB', characteristicUuid: '00001820-0000-1000-8000-00805F9B34FB', characteristicValue: arrayBufferC, descriptors:descriptors}; try { let device: ble.GattClientDevice = ble.createGattClientDevice('XX:XX:XX:XX:XX:XX'); device.setCharacteristicChangeNotification(characteristic, false, (err: BusinessError) => { if (err) { console.info('notifyCharacteristicChanged callback failed'); } else { console.info('notifyCharacteristicChanged callback successful'); } }); } catch (err) { console.error('errCode: ' + (err as BusinessError).code + ', errMessage: ' + (err as BusinessError).message); } ``` ### setCharacteristicChangeNotification setCharacteristicChangeNotification(characteristic: BLECharacteristic, enable: boolean): Promise<void> 呿œåŠ¡ç«¯å‘é€è®¾ç½®é€šçŸ¥æ¤ç‰¹å¾å€¼è¯·æ±‚。使用Promise异æ¥å›žè°ƒã€‚ **éœ€è¦æƒé™**:ohos.permission.ACCESS_BLUETOOTH **原å化æœåŠ¡API**:从API version 12å¼€å§‹ï¼Œè¯¥æŽ¥å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力**:SystemCapability.Communication.Bluetooth.Core。 **傿•°ï¼š** | 傿•°å | 类型 | å¿…å¡« | 说明 | | -------------- | --------------------------------------- | ---- | ----------------------------- | | characteristic | [BLECharacteristic](#blecharacteristic) | 是 | è“牙低功耗特å¾ã€‚ | | enable | boolean | 是 | å¯ç”¨æŽ¥æ”¶notify设置为true,å¦åˆ™è®¾ç½®ä¸ºfalse。 | **返回值:** | 类型 | 说明 | | ---------------------------------------- | -------------------------- | | Promise<void> | 返回Promise对象。 | **错误ç **: 以下错误ç 的详细介ç»è¯·å‚è§[è“牙æœåŠ¡å系统错误ç ](errorcode-bluetoothManager.md)。 | 错误ç ID | é”™è¯¯ä¿¡æ¯ | | -------- | ---------------------------- | |201 | Permission denied. | |401 | Invalid parameter. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. 3. Parameter verification failed. | |801 | Capability not supported. | |2900001 | Service stopped. | |2900099 | Operation failed. | **示例:** ```js import { AsyncCallback, BusinessError } from '@kit.BasicServicesKit'; // 创建descriptors let descriptors: Array<ble.BLEDescriptor> = []; let arrayBuffer = new ArrayBuffer(8); let descV = new Uint8Array(arrayBuffer); descV[0] = 11; let descriptor: ble.BLEDescriptor = {serviceUuid: '00001810-0000-1000-8000-00805F9B34FB', characteristicUuid: '00001820-0000-1000-8000-00805F9B34FB', descriptorUuid: '00002902-0000-1000-8000-00805F9B34FB', descriptorValue: arrayBuffer}; descriptors[0] = descriptor; let arrayBufferC = new ArrayBuffer(8); let characteristic: ble.BLECharacteristic = {serviceUuid: '00001810-0000-1000-8000-00805F9B34FB', characteristicUuid: '00001820-0000-1000-8000-00805F9B34FB', characteristicValue: arrayBufferC, descriptors:descriptors}; try { let device: ble.GattClientDevice = ble.createGattClientDevice('XX:XX:XX:XX:XX:XX'); device.setCharacteristicChangeNotification(characteristic, false); } catch (err) { console.error('errCode: ' + (err as BusinessError).code + ', errMessage: ' + (err as BusinessError).message); } ``` ### setCharacteristicChangeIndication setCharacteristicChangeIndication(characteristic: BLECharacteristic, enable: boolean, callback: AsyncCallback<void>): void 呿œåŠ¡ç«¯å‘é€è®¾ç½®é€šçŸ¥æ¤ç‰¹å¾å€¼è¯·æ±‚,需è¦å¯¹ç«¯è®¾å¤‡çš„回å¤ã€‚使用Callback异æ¥å›žè°ƒã€‚ **éœ€è¦æƒé™**:ohos.permission.ACCESS_BLUETOOTH **原å化æœåŠ¡API**:从API version 12å¼€å§‹ï¼Œè¯¥æŽ¥å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力**:SystemCapability.Communication.Bluetooth.Core。 **傿•°ï¼š** | 傿•°å | 类型 | å¿…å¡« | 说明 | | -------------- | --------------------------------------- | ---- | ----------------------------- | | characteristic | [BLECharacteristic](#blecharacteristic) | 是 | è“牙低功耗特å¾ã€‚ | | enable | boolean | 是 | å¯ç”¨æŽ¥æ”¶notify设置为true,å¦åˆ™è®¾ç½®ä¸ºfalse。 | | callback | AsyncCallback<void> | 是 | 回调函数。当å‘逿ˆåŠŸï¼Œerr为undefined,å¦åˆ™ä¸ºé”™è¯¯å¯¹è±¡ã€‚ | **错误ç **: 以下错误ç 的详细介ç»è¯·å‚è§[è“牙æœåŠ¡å系统错误ç ](errorcode-bluetoothManager.md)。 | 错误ç ID | é”™è¯¯ä¿¡æ¯ | | -------- | ---------------------------- | |201 | Permission denied. | |401 | Invalid parameter. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. 3. Parameter verification failed. | |801 | Capability not supported. | |2900001 | Service stopped. | |2900099 | Operation failed. | **示例:** ```js import { AsyncCallback, BusinessError } from '@kit.BasicServicesKit'; // 创建descriptors let descriptors: Array<ble.BLEDescriptor> = []; let arrayBuffer = new ArrayBuffer(8); let descV = new Uint8Array(arrayBuffer); descV[0] = 11; let descriptor: ble.BLEDescriptor = {serviceUuid: '00001810-0000-1000-8000-00805F9B34FB', characteristicUuid: '00001820-0000-1000-8000-00805F9B34FB', descriptorUuid: '00002902-0000-1000-8000-00805F9B34FB', descriptorValue: arrayBuffer}; descriptors[0] = descriptor; let arrayBufferC = new ArrayBuffer(8); let characteristic: ble.BLECharacteristic = {serviceUuid: '00001810-0000-1000-8000-00805F9B34FB', characteristicUuid: '00001820-0000-1000-8000-00805F9B34FB', characteristicValue: arrayBufferC, descriptors:descriptors}; try { let device: ble.GattClientDevice = ble.createGattClientDevice('XX:XX:XX:XX:XX:XX'); device.setCharacteristicChangeIndication(characteristic, false, (err: BusinessError) => { if (err) { console.info('notifyCharacteristicChanged callback failed'); } else { console.info('notifyCharacteristicChanged callback successful'); } }); } catch (err) { console.error('errCode: ' + (err as BusinessError).code + ', errMessage: ' + (err as BusinessError).message); } ``` ### setCharacteristicChangeIndication setCharacteristicChangeIndication(characteristic: BLECharacteristic, enable: boolean): Promise<void> 呿œåŠ¡ç«¯å‘é€è®¾ç½®é€šçŸ¥æ¤ç‰¹å¾å€¼è¯·æ±‚,需è¦å¯¹ç«¯è®¾å¤‡çš„回å¤ã€‚使用Promise异æ¥å›žè°ƒã€‚ **éœ€è¦æƒé™**:ohos.permission.ACCESS_BLUETOOTH **原å化æœåŠ¡API**:从API version 12å¼€å§‹ï¼Œè¯¥æŽ¥å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力**:SystemCapability.Communication.Bluetooth.Core。 **傿•°ï¼š** | 傿•°å | 类型 | å¿…å¡« | 说明 | | -------------- | --------------------------------------- | ---- | ----------------------------- | | characteristic | [BLECharacteristic](#blecharacteristic) | 是 | è“牙低功耗特å¾ã€‚ | | enable | boolean | 是 | å¯ç”¨æŽ¥æ”¶notify设置为true,å¦åˆ™è®¾ç½®ä¸ºfalse。 | **返回值:** | 类型 | 说明 | | ---------------------------------------- | -------------------------- | | Promise<void> | 返回Promise对象。 | **错误ç **: 以下错误ç 的详细介ç»è¯·å‚è§[è“牙æœåŠ¡å系统错误ç ](errorcode-bluetoothManager.md)。 | 错误ç ID | é”™è¯¯ä¿¡æ¯ | | -------- | ---------------------------- | |201 | Permission denied. | |401 | Invalid parameter. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. 3. Parameter verification failed. | |801 | Capability not supported. | |2900001 | Service stopped. | |2900099 | Operation failed. | **示例:** ```js import { AsyncCallback, BusinessError } from '@kit.BasicServicesKit'; // 创建descriptors let descriptors: Array<ble.BLEDescriptor> = []; let arrayBuffer = new ArrayBuffer(8); let descV = new Uint8Array(arrayBuffer); descV[0] = 11; let descriptor: ble.BLEDescriptor = {serviceUuid: '00001810-0000-1000-8000-00805F9B34FB', characteristicUuid: '00001820-0000-1000-8000-00805F9B34FB', descriptorUuid: '00002902-0000-1000-8000-00805F9B34FB', descriptorValue: arrayBuffer}; descriptors[0] = descriptor; let arrayBufferC = new ArrayBuffer(8); let characteristic: ble.BLECharacteristic = {serviceUuid: '00001810-0000-1000-8000-00805F9B34FB', characteristicUuid: '00001820-0000-1000-8000-00805F9B34FB', characteristicValue: arrayBufferC, descriptors:descriptors}; try { let device: ble.GattClientDevice = ble.createGattClientDevice('XX:XX:XX:XX:XX:XX'); device.setCharacteristicChangeIndication(characteristic, false); } catch (err) { console.error('errCode: ' + (err as BusinessError).code + ', errMessage: ' + (err as BusinessError).message); } ``` ### on('BLECharacteristicChange') on(type: 'BLECharacteristicChange', callback: Callback<BLECharacteristic>): void 订阅è“牙低功耗设备的特å¾å€¼å˜åŒ–事件。需è¦å…ˆè°ƒç”¨[setCharacteristicChangeNotification](#setcharacteristicchangenotification)æŽ¥å£æˆ–[setCharacteristicChangeIndication](#setcharacteristicchangeindication)æŽ¥å£æ‰èƒ½æŽ¥æ”¶server端的通知。使用Callback异æ¥å›žè°ƒã€‚ **éœ€è¦æƒé™**:ohos.permission.ACCESS_BLUETOOTH **原å化æœåŠ¡API**:从API version 12å¼€å§‹ï¼Œè¯¥æŽ¥å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力**:SystemCapability.Communication.Bluetooth.Core。 **傿•°ï¼š** | 傿•°å | 类型 | å¿…å¡« | 说明 | | -------- | ---------------------------------------- | ---- | ---------------------------------------- | | type | string | 是 | 填写"BLECharacteristicChange"å—符串,表示特å¾å€¼å˜åŒ–事件。 | | callback | Callback<[BLECharacteristic](#blecharacteristic)> | 是 | 表示è“牙低功耗设备的特å¾å€¼å˜åŒ–事件的回调函数。 | **错误ç **: 以下错误ç 的详细介ç»è¯·å‚è§[è“牙æœåŠ¡å系统错误ç ](errorcode-bluetoothManager.md)。 | 错误ç ID | é”™è¯¯ä¿¡æ¯ | | -------- | ---------------------------- | |201 | Permission denied. | |401 | Invalid parameter. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. 3. Parameter verification failed. | |801 | Capability not supported. | **示例:** ```js import { AsyncCallback, BusinessError } from '@kit.BasicServicesKit'; function CharacteristicChange(characteristicChangeReq: ble.BLECharacteristic) { let serviceUuid: string = characteristicChangeReq.serviceUuid; let characteristicUuid: string = characteristicChangeReq.characteristicUuid; let value: Uint8Array = new Uint8Array(characteristicChangeReq.characteristicValue); } try { let device: ble.GattClientDevice = ble.createGattClientDevice('XX:XX:XX:XX:XX:XX'); device.on('BLECharacteristicChange', CharacteristicChange); } catch (err) { console.error('errCode: ' + (err as BusinessError).code + ', errMessage: ' + (err as BusinessError).message); } ``` ### off('BLECharacteristicChange') off(type: 'BLECharacteristicChange', callback?: Callback<BLECharacteristic>): void å–æ¶ˆè®¢é˜…è“牙低功耗设备的特å¾å€¼å˜åŒ–事件。 **éœ€è¦æƒé™**:ohos.permission.ACCESS_BLUETOOTH **原å化æœåŠ¡API**:从API version 12å¼€å§‹ï¼Œè¯¥æŽ¥å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力**:SystemCapability.Communication.Bluetooth.Core。 **傿•°ï¼š** | 傿•°å | 类型 | å¿…å¡« | 说明 | | -------- | ---------------------------------------- | ---- | ---------------------------------------- | | type | string | 是 | 填写"BLECharacteristicChange"å—符串,表示特å¾å€¼å˜åŒ–事件。 | | callback | Callback<[BLECharacteristic](#blecharacteristic)> | å¦ | è¡¨ç¤ºå–æ¶ˆè®¢é˜…è“牙低功耗设备的特å¾å€¼å˜åŒ–事件。ä¸å¡«è¯¥å‚æ•°åˆ™å–æ¶ˆè®¢é˜…该type对应的所有回调。 | **错误ç **: 以下错误ç 的详细介ç»è¯·å‚è§[è“牙æœåŠ¡å系统错误ç ](errorcode-bluetoothManager.md)。 | 错误ç ID | é”™è¯¯ä¿¡æ¯ | | -------- | ---------------------------- | |201 | Permission denied. | |401 | Invalid parameter. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. 3. Parameter verification failed. | |801 | Capability not supported. | **示例:** ```js import { AsyncCallback, BusinessError } from '@kit.BasicServicesKit'; try { let device: ble.GattClientDevice = ble.createGattClientDevice('XX:XX:XX:XX:XX:XX'); device.off('BLECharacteristicChange'); } catch (err) { console.error('errCode: ' + (err as BusinessError).code + ', errMessage: ' + (err as BusinessError).message); } ``` ### on('BLEConnectionStateChange') on(type: 'BLEConnectionStateChange', callback: Callback<BLEConnectionChangeState>): void client端订阅è“牙低功耗设备的连接状æ€å˜åŒ–事件。使用Callback异æ¥å›žè°ƒã€‚ **éœ€è¦æƒé™**:ohos.permission.ACCESS_BLUETOOTH **原å化æœåŠ¡API**:从API version 12å¼€å§‹ï¼Œè¯¥æŽ¥å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力**:SystemCapability.Communication.Bluetooth.Core。 **傿•°ï¼š** | 傿•°å | 类型 | å¿…å¡« | 说明 | | -------- | ---------------------------------------- | ---- | ---------------------------------------- | | type | string | 是 | 填写"BLEConnectionStateChange"å—符串,表示连接状æ€å˜åŒ–事件。 | | callback | Callback<[BLEConnectionChangeState](#bleconnectionchangestate)> | 是 | 表示连接状æ€ï¼Œå·²è¿žæŽ¥æˆ–æ–开。 | **错误ç **: 以下错误ç 的详细介ç»è¯·å‚è§[è“牙æœåŠ¡å系统错误ç ](errorcode-bluetoothManager.md)。 | 错误ç ID | é”™è¯¯ä¿¡æ¯ | | -------- | ---------------------------- | |201 | Permission denied. | |401 | Invalid parameter. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. 3. Parameter verification failed. | |801 | Capability not supported. | **示例:** ```js import { AsyncCallback, BusinessError } from '@kit.BasicServicesKit'; function ConnectStateChanged(state: ble.BLEConnectionChangeState) { console.info('bluetooth connect state changed'); let connectState: ble.ProfileConnectionState = state.state; } try { let device: ble.GattClientDevice = ble.createGattClientDevice('XX:XX:XX:XX:XX:XX'); device.on('BLEConnectionStateChange', ConnectStateChanged); } catch (err) { console.error('errCode: ' + (err as BusinessError).code + ', errMessage: ' + (err as BusinessError).message); } ``` ### off('BLEConnectionStateChange') off(type: 'BLEConnectionStateChange', callback?: Callback<BLEConnectionChangeState>): void å–æ¶ˆè®¢é˜…è“牙低功耗设备的连接状æ€å˜åŒ–事件。 **éœ€è¦æƒé™**:ohos.permission.ACCESS_BLUETOOTH **原å化æœåŠ¡API**:从API version 12å¼€å§‹ï¼Œè¯¥æŽ¥å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力**:SystemCapability.Communication.Bluetooth.Core。 **傿•°ï¼š** | 傿•°å | 类型 | å¿…å¡« | 说明 | | -------- | ---------------------------------------- | ---- | ---------------------------------------- | | type | string | 是 | 填写"BLEConnectionStateChange"å—符串,表示连接状æ€å˜åŒ–事件。 | | callback | Callback<[BLEConnectionChangeState](#bleconnectionchangestate)> | å¦ | è¡¨ç¤ºå–æ¶ˆè®¢é˜…è“牙低功耗设备的连接状æ€å˜åŒ–事件。ä¸å¡«è¯¥å‚æ•°åˆ™å–æ¶ˆè®¢é˜…该type对应的所有回调。 | **错误ç **: 以下错误ç 的详细介ç»è¯·å‚è§[è“牙æœåŠ¡å系统错误ç ](errorcode-bluetoothManager.md)。 | 错误ç ID | é”™è¯¯ä¿¡æ¯ | | -------- | ---------------------------- | |201 | Permission denied. | |401 | Invalid parameter. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. 3. Parameter verification failed. | |801 | Capability not supported. | **示例:** ```js import { AsyncCallback, BusinessError } from '@kit.BasicServicesKit'; try { let device: ble.GattClientDevice = ble.createGattClientDevice('XX:XX:XX:XX:XX:XX'); device.off('BLEConnectionStateChange'); } catch (err) { console.error('errCode: ' + (err as BusinessError).code + ', errMessage: ' + (err as BusinessError).message); } ``` ### on('BLEMtuChange') on(type: 'BLEMtuChange', callback: Callback<number>): void client端订阅MTU状æ€å˜åŒ–事件。使用Callback异æ¥å›žè°ƒã€‚ **éœ€è¦æƒé™**:ohos.permission.ACCESS_BLUETOOTH **原å化æœåŠ¡API**:从API version 12å¼€å§‹ï¼Œè¯¥æŽ¥å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力**:SystemCapability.Communication.Bluetooth.Core。 **傿•°ï¼š** | 傿•°å | 类型 | å¿…å¡« | 说明 | | -------- | ---------------------------------------- | ---- | ---------------------------------------- | | type | string | 是 | 必须填写"BLEMtuChange"å—符串,表示MTU状æ€å˜åŒ–äº‹ä»¶ã€‚å¡«å†™ä¸æ£ç¡®å°†å¯¼è‡´å›žè°ƒæ— 法注册。 | | callback | Callback<number> | 是 | 返回MTUå—节数的值,通过注册回调函数获å–。 | **错误ç **: 以下错误ç 的详细介ç»è¯·å‚è§[è“牙æœåŠ¡å系统错误ç ](errorcode-bluetoothManager.md)。 | 错误ç ID | é”™è¯¯ä¿¡æ¯ | | -------- | ---------------------------- | |201 | Permission denied. | |401 | Invalid parameter. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. 3. Parameter verification failed. | |801 | Capability not supported. | **示例:** ```js import { AsyncCallback, BusinessError } from '@kit.BasicServicesKit'; try { let gattClient: ble.GattClientDevice = ble.createGattClientDevice('XX:XX:XX:XX:XX:XX'); gattClient.on('BLEMtuChange', (mtu: number) => { console.info('BLEMtuChange, mtu: ' + mtu); }); } catch (err) { console.error('errCode: ' + (err as BusinessError).code + ', errMessage: ' + (err as BusinessError).message); } ``` ### off('BLEMtuChange') off(type: 'BLEMtuChange', callback?: Callback<number>): void clientç«¯å–æ¶ˆè®¢é˜…MTU状æ€å˜åŒ–事件。 **éœ€è¦æƒé™**:ohos.permission.ACCESS_BLUETOOTH **原å化æœåŠ¡API**:从API version 12å¼€å§‹ï¼Œè¯¥æŽ¥å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力**:SystemCapability.Communication.Bluetooth.Core。 **傿•°ï¼š** | 傿•°å | 类型 | å¿…å¡« | 说明 | | -------- | ---------------------------------------- | ---- | ---------------------------------------- | | type | string | 是 | 必须填写"BLEMtuChange"å—符串,表示MTU状æ€å˜åŒ–äº‹ä»¶ã€‚å¡«å†™ä¸æ£ç¡®å°†å¯¼è‡´å›žè°ƒæ— 法注册。 | | callback | Callback<number> | å¦ | 返回MTUå—节数的值,通过注册回调函数获å–。ä¸å¡«è¯¥å‚æ•°åˆ™å–æ¶ˆè®¢é˜…该type对应的所有回调。 | **错误ç **: 以下错误ç 的详细介ç»è¯·å‚è§[è“牙æœåŠ¡å系统错误ç ](errorcode-bluetoothManager.md)。 | 错误ç ID | é”™è¯¯ä¿¡æ¯ | | -------- | ---------------------------- | |201 | Permission denied. | |401 | Invalid parameter. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. 3. Parameter verification failed. | |801 | Capability not supported. | **示例:** ```js import { AsyncCallback, BusinessError } from '@kit.BasicServicesKit'; try { let device: ble.GattClientDevice = ble.createGattClientDevice('XX:XX:XX:XX:XX:XX'); device.off('BLEMtuChange'); } catch (err) { console.error('errCode: ' + (err as BusinessError).code + ', errMessage: ' + (err as BusinessError).message); } ``` ## GattService æè¿°service的接å£å‚数定义。 **原å化æœåŠ¡API**:从API version 12å¼€å§‹ï¼Œè¯¥æŽ¥å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力**:SystemCapability.Communication.Bluetooth.Core。 | åç§° | 类型 | å¯è¯» | å¯å†™ | 说明 | | --------------- | ---------------------------------------- | ---- | ---- | ---------------------------------------- | | serviceUuid | string | 是 | 是 | 特定æœåŠ¡ï¼ˆservice)的UUID,例如:00001888-0000-1000-8000-00805f9b34fb。 | | isPrimary | boolean | 是 | 是 | 如果是主æœåŠ¡è®¾ç½®ä¸ºtrue,å¦åˆ™è®¾ç½®ä¸ºfalse。 | | characteristics | Array<[BLECharacteristic](#blecharacteristic)> | 是 | 是 | 当剿œåŠ¡åŒ…å«çš„特å¾åˆ—表。 | | includeServices | Array<[GattService](#gattservice)> | 是 | 是 | 当剿œåŠ¡ä¾èµ–的其它æœåŠ¡ã€‚ | ## BLECharacteristic æè¿°characteristic的接å£å‚数定义 。 **原å化æœåŠ¡API**:从API version 12å¼€å§‹ï¼Œè¯¥æŽ¥å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力**:SystemCapability.Communication.Bluetooth.Core。 | åç§° | 类型 | å¯è¯» | å¯å†™ | 说明 | | ------------------- | ---------------------------------------- | ---- | ---- | ---------------------------------------- | | serviceUuid | string | 是 | 是 | 特定æœåŠ¡ï¼ˆservice)的UUID,例如:00001888-0000-1000-8000-00805f9b34fb。 | | characteristicUuid | string | 是 | 是 | 特定特å¾ï¼ˆcharacteristic)的UUID,例如:00002a11-0000-1000-8000-00805f9b34fb。 | | characteristicValue | ArrayBuffer | 是 | 是 | 特å¾å¯¹åº”的二进制值。 | | descriptors | Array<[BLEDescriptor](#bledescriptor)> | 是 | 是 | 特定特å¾çš„æè¿°ç¬¦åˆ—表。 | | properties | [GattProperties](#gattproperties) | 是 | 是 | 特定特å¾çš„属性æè¿°ã€‚ | ## BLEDescriptor æè¿°descriptor的接å£å‚数定义。 **原å化æœåŠ¡API**:从API version 12å¼€å§‹ï¼Œè¯¥æŽ¥å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力**:SystemCapability.Communication.Bluetooth.Core。 | åç§° | 类型 | å¯è¯» | å¯å†™ | 说明 | | ------------------ | ----------- | ---- | ---- | ---------------------------------------- | | serviceUuid | string | 是 | 是 | 特定æœåŠ¡ï¼ˆservice)的UUID,例如:00001888-0000-1000-8000-00805f9b34fb。 | | characteristicUuid | string | 是 | 是 | 特定特å¾ï¼ˆcharacteristic)的UUID,例如:00002a11-0000-1000-8000-00805f9b34fb。 | | descriptorUuid | string | 是 | 是 | æè¿°ç¬¦ï¼ˆdescriptor)的UUID,例如:00002902-0000-1000-8000-00805f9b34fb。 | | descriptorValue | ArrayBuffer | 是 | 是 | æè¿°ç¬¦å¯¹åº”的二进制值。 | ## NotifyCharacteristic æè¿°server端特å¾å€¼å˜åŒ–æ—¶å‘é€çš„特å¾é€šçŸ¥å‚数定义。 **原å化æœåŠ¡API**:从API version 12å¼€å§‹ï¼Œè¯¥æŽ¥å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力**:SystemCapability.Communication.Bluetooth.Core。 | åç§° | 类型 | å¯è¯» | å¯å†™ | 说明 | | ------------------- | ----------- | ---- | ---- | ---------------------------------------- | | serviceUuid | string | 是 | 是 | 特定æœåŠ¡ï¼ˆservice)的UUID,例如:00001888-0000-1000-8000-00805f9b34fb。 | | characteristicUuid | string | 是 | 是 | 特定特å¾ï¼ˆcharacteristic)的UUID,例如:00002a11-0000-1000-8000-00805f9b34fb。 | | characteristicValue | ArrayBuffer | 是 | 是 | 特å¾å¯¹åº”的二进制值。 | | confirm | boolean | 是 | 是 | 如果是indication,对端需è¦å›žå¤ç¡®è®¤ï¼Œåˆ™è®¾ç½®ä¸ºtrue;如果是notification,对端ä¸éœ€è¦å›žå¤ç¡®è®¤ï¼Œåˆ™è®¾ç½®ä¸ºfalse。 | ## CharacteristicReadRequest æè¿°serverç«¯è®¢é˜…åŽæ”¶åˆ°çš„特å¾å€¼è¯»è¯·æ±‚äº‹ä»¶å‚æ•°ç»“构。 **原å化æœåŠ¡API**:从API version 12å¼€å§‹ï¼Œè¯¥æŽ¥å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力**:SystemCapability.Communication.Bluetooth.Core。 | åç§° | 类型 | å¯è¯» | å¯å†™ | 说明 | | ------------------ | ------ | ---- | ---- | ---------------------------------------- | | deviceId | string | 是 | å¦ | 表示å‘é€ç‰¹å¾å€¼è¯»è¯·æ±‚的远端设备地å€ï¼Œä¾‹å¦‚:"XX:XX:XX:XX:XX:XX"。 | | transId | number | 是 | å¦ | è¡¨ç¤ºè¯»è¯·æ±‚çš„ä¼ è¾“ID,server端回å¤å“应时需填写相åŒçš„ä¼ è¾“ID。 | | offset | number | 是 | å¦ | 表示读特å¾å€¼æ•°æ®çš„èµ·å§‹ä½ç½®ã€‚例如:k表示从第k个å—节开始读,server端回å¤å“应时需填写相åŒçš„offset。 | | characteristicUuid | string | 是 | å¦ | 特定特å¾ï¼ˆcharacteristic)的UUID,例如:00002a11-0000-1000-8000-00805f9b34fb。 | | serviceUuid | string | 是 | å¦ | 特定æœåŠ¡ï¼ˆservice)的UUID,例如:00001888-0000-1000-8000-00805f9b34fb。 | ## CharacteristicWriteRequest æè¿°serverç«¯è®¢é˜…åŽæ”¶åˆ°çš„特å¾å€¼å†™è¯·æ±‚äº‹ä»¶å‚æ•°ç»“构。 **原å化æœåŠ¡API**:从API version 12å¼€å§‹ï¼Œè¯¥æŽ¥å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力**:SystemCapability.Communication.Bluetooth.Core。 | åç§° | 类型 | å¯è¯» | å¯å†™ | 说明 | | ------------------ | ------ | ---- | ---- | ---------------------------------------- | | deviceId | string | 是 | å¦ | 表示å‘é€ç‰¹å¾å€¼å†™è¯·æ±‚的远端设备地å€ï¼Œä¾‹å¦‚:"XX:XX:XX:XX:XX:XX"。 | | transId | number | 是 | å¦ | è¡¨ç¤ºå†™è¯·æ±‚çš„ä¼ è¾“ID,server端回å¤å“应时需填写相åŒçš„ä¼ è¾“ID。 | | offset | number | 是 | å¦ | 表示写特å¾å€¼æ•°æ®çš„èµ·å§‹ä½ç½®ã€‚例如:k表示从第k个å—节开始写,server端回å¤å“应时需填写相åŒçš„offset。 | | isPrepared | boolean | 是 | å¦ | 表示写请求是å¦ç«‹å³æ‰§è¡Œã€‚trueè¡¨ç¤ºç«‹å³æ‰§è¡Œã€‚ | | needRsp | boolean | 是 | å¦ | 表示是å¦è¦ç»™client端回å¤å“应。true表示需è¦å›žå¤ã€‚ | | value | ArrayBuffer | 是 | å¦ | 表示写入的æè¿°ç¬¦äºŒè¿›åˆ¶æ•°æ®ã€‚ | | characteristicUuid | string | 是 | å¦ | 特定特å¾ï¼ˆcharacteristic)的UUID,例如:00002a11-0000-1000-8000-00805f9b34fb。 | | serviceUuid | string | 是 | å¦ | 特定æœåŠ¡ï¼ˆservice)的UUID,例如:00001888-0000-1000-8000-00805f9b34fb。 | ## DescriptorReadRequest æè¿°serverç«¯è®¢é˜…åŽæ”¶åˆ°çš„æè¿°ç¬¦è¯»è¯·æ±‚äº‹ä»¶å‚æ•°ç»“构。 **原å化æœåŠ¡API**:从API version 12å¼€å§‹ï¼Œè¯¥æŽ¥å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力**:SystemCapability.Communication.Bluetooth.Core。 | åç§° | 类型 | å¯è¯» | å¯å†™ | 说明 | | ------------------ | ------ | ---- | ---- | ---------------------------------------- | | deviceId | string | 是 | å¦ | 表示å‘é€æè¿°ç¬¦è¯»è¯·æ±‚çš„è¿œç«¯è®¾å¤‡åœ°å€ï¼Œä¾‹å¦‚:"XX:XX:XX:XX:XX:XX"。 | | transId | number | 是 | å¦ | è¡¨ç¤ºè¯»è¯·æ±‚çš„ä¼ è¾“ID,server端回å¤å“应时需填写相åŒçš„ä¼ è¾“ID。 | | offset | number | 是 | å¦ | 表示读æè¿°ç¬¦æ•°æ®çš„èµ·å§‹ä½ç½®ã€‚例如:k表示从第k个å—节开始读,server端回å¤å“应时需填写相åŒçš„offset。 | | descriptorUuid | string | 是 | å¦ | 表示æè¿°ç¬¦ï¼ˆdescriptor)的UUID,例如:00002902-0000-1000-8000-00805f9b34fb。 | | characteristicUuid | string | 是 | å¦ | 特定特å¾ï¼ˆcharacteristic)的UUID,例如:00002a11-0000-1000-8000-00805f9b34fb。 | | serviceUuid | string | 是 | å¦ | 特定æœåŠ¡ï¼ˆservice)的UUID,例如:00001888-0000-1000-8000-00805f9b34fb。 | ## DescriptorWriteRequest æè¿°serverç«¯è®¢é˜…åŽæ”¶åˆ°çš„æè¿°ç¬¦å†™è¯·æ±‚äº‹ä»¶å‚æ•°ç»“构。 **原å化æœåŠ¡API**:从API version 12å¼€å§‹ï¼Œè¯¥æŽ¥å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力**:SystemCapability.Communication.Bluetooth.Core。 | åç§° | 类型 | å¯è¯» | å¯å†™ | 说明 | | ------------------ | ----------- | ---- | ---- | ---------------------------------------- | | deviceId | string | 是 | å¦ | 表示å‘é€æè¿°ç¬¦å†™è¯·æ±‚çš„è¿œç«¯è®¾å¤‡åœ°å€ï¼Œä¾‹å¦‚:"XX:XX:XX:XX:XX:XX"。 | | transId | number | 是 | å¦ | è¡¨ç¤ºå†™è¯·æ±‚çš„ä¼ è¾“ID,server端回å¤å“应时需填写相åŒçš„ä¼ è¾“ID。 | | offset | number | 是 | å¦ | 表示写æè¿°ç¬¦æ•°æ®çš„èµ·å§‹ä½ç½®ã€‚例如:k表示从第k个å—节开始写,server端回å¤å“应时需填写相åŒçš„offset。 | | isPrepared | boolean | 是 | å¦ | 表示写请求是å¦ç«‹å³æ‰§è¡Œã€‚ | | needRsp | boolean | 是 | å¦ | 表示是å¦è¦ç»™client端回å¤å“应。 | | value | ArrayBuffer | 是 | å¦ | 表示写入的æè¿°ç¬¦äºŒè¿›åˆ¶æ•°æ®ã€‚ | | descriptorUuid | string | 是 | å¦ | 表示æè¿°ç¬¦ï¼ˆdescriptor)的UUID,例如:00002902-0000-1000-8000-00805f9b34fb。 | | characteristicUuid | string | 是 | å¦ | 特定特å¾ï¼ˆcharacteristic)的UUID,例如:00002a11-0000-1000-8000-00805f9b34fb。 | | serviceUuid | string | 是 | å¦ | 特定æœåŠ¡ï¼ˆservice)的UUID,例如:00001888-0000-1000-8000-00805f9b34fb。 | ## ServerResponse æè¿°server端回å¤client端读/写请求的å“åº”å‚æ•°ç»“构。 **原å化æœåŠ¡API**:从API version 12å¼€å§‹ï¼Œè¯¥æŽ¥å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力**:SystemCapability.Communication.Bluetooth.Core。 | åç§° | 类型 | å¯è¯» | å¯å†™ | 说明 | | -------- | ----------- | ---- | ---- | -------------------------------------- | | deviceId | string | 是 | å¦ | 表示远端设备地å€ï¼Œä¾‹å¦‚:"XX:XX:XX:XX:XX:XX"。 | | transId | number | 是 | å¦ | è¡¨ç¤ºè¯·æ±‚çš„ä¼ è¾“ID,与订阅的读/写请求事件æºå¸¦çš„IDä¿æŒä¸€è‡´ã€‚ | | status | number | 是 | å¦ | 表示å“应的状æ€ï¼Œè®¾ç½®ä¸º0å³å¯ï¼Œè¡¨ç¤ºæ£å¸¸ã€‚ | | offset | number | 是 | å¦ | 表示请求的读/写起始ä½ç½®ï¼Œä¸Žè®¢é˜…的读/写请求事件æºå¸¦çš„offsetä¿æŒä¸€è‡´ã€‚ | | value | ArrayBuffer | 是 | å¦ | 表示回å¤å“应的二进制数æ®ã€‚ | ## BLEConnectionChangeState æè¿°Gatt profile连接状æ€ã€‚ **原å化æœåŠ¡API**:从API version 12å¼€å§‹ï¼Œè¯¥æŽ¥å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力**:SystemCapability.Communication.Bluetooth.Core。 | åç§° | 类型 | å¯è¯» | å¯å†™ | 说明 | | -------- | ------------------------------------------------- | ---- | ---- | --------------------------------------------- | | deviceId | string | 是 | å¦ | 表示远端设备地å€ï¼Œä¾‹å¦‚:"XX:XX:XX:XX:XX:XX"。 | | state | [ProfileConnectionState](js-apis-bluetooth-constant.md#profileconnectionstate) | 是 | 是 | 表示BLE连接状æ€çš„æžšä¸¾ã€‚ | ## ScanResult 扫æç»“果上报数æ®ã€‚ **原å化æœåŠ¡API**:从API version 12å¼€å§‹ï¼Œè¯¥æŽ¥å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力**:SystemCapability.Communication.Bluetooth.Core。 | åç§° | 类型 | å¯è¯» | å¯å†™ | 说明 | | -------- | ----------- | ---- | ---- | ---------------------------------- | | deviceId | string | 是 | å¦ | 表示扫æåˆ°çš„设备地å€ï¼Œä¾‹å¦‚:"XX:XX:XX:XX:XX:XX"。基于信æ¯å®‰å…¨è€ƒè™‘,æ¤å¤„获å–的设备地å€ä¸ºéšæœºMAC地å€ã€‚é…对æˆåŠŸåŽï¼Œè¯¥åœ°å€ä¸ä¼šå˜æ›´ï¼›å·²é…å¯¹è®¾å¤‡å–æ¶ˆé…对åŽé‡æ–°æ‰«ææˆ–è“牙æœåŠ¡ä¸‹ç”µæ—¶ï¼Œè¯¥éšæœºåœ°å€ä¼šå˜æ›´ã€‚ | | rssi | number | 是 | å¦ | 表示扫æåˆ°çš„设备的rssi值。 | | data | ArrayBuffer | 是 | å¦ | 表示扫æåˆ°çš„设备å‘é€çš„广æ’包。 | | deviceName | string | 是 | å¦ | 表示扫æåˆ°çš„设备å称。 | | connectable | boolean | 是 | å¦ | 表示扫æåˆ°çš„设备是å¦å¯è¿žæŽ¥ã€‚true表示å¯è¿žæŽ¥ï¼Œfalse表示ä¸å¯è¿žæŽ¥ã€‚ | ## AdvertiseSetting æè¿°è“牙低功耗设备å‘é€å¹¿æ’çš„å‚æ•°ã€‚ **原å化æœåŠ¡API**:从API version 12å¼€å§‹ï¼Œè¯¥æŽ¥å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力**:SystemCapability.Communication.Bluetooth.Core。 | åç§° | 类型 | å¯è¯» | å¯å†™ | 说明 | | ----------- | ------- | ---- | ---- | ---------------------------------------- | | interval | number | 是 | 是 | 表示广æ’间隔,最å°å€¼è®¾ç½®160个slot表示100ms,最大值设置16384个slot,默认值设置为1600个slot表示1s。 | | txPower | number | 是 | 是 | 表示å‘é€åŠŸçŽ‡ï¼Œæœ€å°å€¼è®¾ç½®-127,最大值设置1,默认值设置-7,å•ä½dbm。推è值:高档(1ï¼‰ï¼Œä¸æ¡£ï¼ˆ-7),低档(-15)。 | | connectable | boolean | 是 | 是 | è¡¨ç¤ºæ˜¯å¦æ˜¯å¯è¿žæŽ¥å¹¿æ’,默认值设置为true,表示å¯è¿žæŽ¥ï¼Œfalse表示ä¸å¯è¿žæŽ¥ã€‚ | ## AdvertiseData æè¿°BLEå¹¿æ’æ•°æ®åŒ…的内容,广æ’包数æ®é•¿åº¦ä¸º31个å—节。 **原å化æœåŠ¡API**:从API version 12å¼€å§‹ï¼Œè¯¥æŽ¥å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力**:SystemCapability.Communication.Bluetooth.Core。 | åç§° | 类型 | å¯è¯» | å¯å†™ | 说明 | | --------------- | ---------------------------------------- | ---- | ---- | --------------------------- | | serviceUuids | Array<string> | 是 | 是 | 表示è¦å¹¿æ’çš„æœåŠ¡ UUID 列表。 | | manufactureData | Array<[ManufactureData](#manufacturedata)> | 是 | 是 | 表示è¦å¹¿æ’的广æ’çš„åˆ¶é€ å•†ä¿¡æ¯åˆ—表。 | | serviceData | Array<[ServiceData](#servicedata)> | 是 | 是 | 表示è¦å¹¿æ’çš„æœåŠ¡æ•°æ®åˆ—表。 | | includeDeviceName | boolean | 是 | 是 | è¡¨ç¤ºæ˜¯å¦æºå¸¦è®¾å¤‡å,å¯é€‰å‚数。true表示æºå¸¦ï¼Œfalse或未设置æ¤å‚æ•°è¡¨ç¤ºä¸æºå¸¦ã€‚注æ„å¸¦ä¸Šè®¾å¤‡åæ—¶å¹¿æ’包长度ä¸èƒ½è¶…出31个å—节。 | ## AdvertisingParams<sup>11+</sup> æè¿°é¦–次å¯åŠ¨å¹¿æ’è®¾ç½®çš„å‚æ•°ã€‚ **系统能力**:SystemCapability.Communication.Bluetooth.Core。 | åç§° | 类型 | å¯è¯» | å¯å†™ | 说明 | | ------------------- | ------------------------------- | ----- | ----- | ------------------------ | | advertisingSettings<sup>11+</sup> | [AdvertiseSetting](#advertisesetting) | 是 | 是 | 表示å‘é€å¹¿æ’çš„ç›¸å…³å‚æ•°ã€‚ | | advertisingData<sup>11+</sup> | [AdvertiseData](#advertisedata) | 是 | 是 | 表示广æ’的数æ®åŒ…内容。 | | advertisingResponse<sup>11+</sup> | [AdvertiseData](#advertisedata) | 是 | 是 | è¡¨ç¤ºå›žå¤æ‰«æè¯·æ±‚çš„å“应内容。 | | duration<sup>11+</sup> | number | 是 | 是 | 表示å‘é€å¹¿æ’æŒç»çš„æ—¶é—´ã€‚å•ä½ä¸º10ms,有效范围为1(10ms)到65535(655350ms),如果未指定æ¤å‚数或者将其设置为0,则会连ç»å‘é€å¹¿æ’。 | ## AdvertisingEnableParams<sup>11+</sup> æè¿°ä¸´æ—¶å¯åŠ¨å¹¿æ’è®¾ç½®çš„å‚æ•°ã€‚ **系统能力**:SystemCapability.Communication.Bluetooth.Core。 | åç§° | 类型 | å¯è¯» | å¯å†™ | 说明 | | ------------------- | --------------------- | ----- | ----- | ------------------------ | | advertisingId<sup>11+</sup> | number | 是 | 是 | 表示当å‰å¹¿æ’çš„IDæ ‡è¯†ã€‚ | | duration<sup>11+</sup> | number | 是 | 是 | 表示å‘é€å¹¿æ’æŒç»çš„æ—¶é—´ã€‚å•ä½ä¸º10ms,有效范围为1(10ms)到65535(655350ms),如果未指定æ¤å‚数或者将其设置为0,则会连ç»å‘é€å¹¿æ’。 | ## AdvertisingDisableParams<sup>11+</sup> æè¿°ä¸´æ—¶åœæ¢å¹¿æ’è®¾ç½®çš„å‚æ•°ã€‚ **系统能力**:SystemCapability.Communication.Bluetooth.Core。 | åç§° | 类型 | å¯è¯» | å¯å†™ | 说明 | | ------------------- | --------------------- | ----- | ----- | ------------------------ | | advertisingId<sup>11+</sup> | number | 是 | 是 | 表示当å‰å¹¿æ’çš„IDæ ‡è¯†ã€‚ | ## AdvertisingStateChangeInfo<sup>11+</sup> æè¿°å¹¿æ’å¯åЍã€åœæ¢ç‰çжæ€ä¿¡æ¯ã€‚ **系统能力**:SystemCapability.Communication.Bluetooth.Core。 | åç§° | 类型 | å¯è¯» | å¯å†™ | 说明 | | ------------------- | --------------------------------------- | ----- | ----- | ------------------------ | | advertisingId<sup>11+</sup> | number | 是 | 是 | 表示广æ’IDæ ‡è¯†ã€‚ | | state<sup>11+</sup> | [AdvertisingState](#advertisingstate11) | 是 | 是 | 表示广æ’状æ€ã€‚ | ## ManufactureData æè¿°BLEå¹¿æ’æ•°æ®åŒ…的内容。 **原å化æœåŠ¡API**:从API version 12å¼€å§‹ï¼Œè¯¥æŽ¥å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力**:SystemCapability.Communication.Bluetooth.Core。 | åç§° | 类型 | å¯è¯» | å¯å†™ | 说明 | | ---------------- | ------------------- | ---- | ---- | ------------------ | | manufactureId | number | 是 | 是 | è¡¨ç¤ºåˆ¶é€ å•†çš„ID,由è“牙SIG分é…。 | | manufactureValue | ArrayBuffer | 是 | 是 | è¡¨ç¤ºåˆ¶é€ å•†å‘é€çš„åˆ¶é€ å•†æ•°æ®ã€‚ | ## ServiceData æè¿°å¹¿æ’åŒ…ä¸æœåŠ¡æ•°æ®å†…容。 **原å化æœåŠ¡API**:从API version 12å¼€å§‹ï¼Œè¯¥æŽ¥å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力**:SystemCapability.Communication.Bluetooth.Core。 | åç§° | 类型 | å¯è¯» | å¯å†™ | 说明 | | ------------ | ----------- | ---- | ---- | ---------- | | serviceUuid | string | 是 | 是 | 表示æœåŠ¡çš„UUID。 | | serviceValue | ArrayBuffer | 是 | 是 | 表示æœåŠ¡æ•°æ®ã€‚ | ## ScanFilter 扫æè¿‡æ»¤å‚数。 **原å化æœåŠ¡API**:从API version 12å¼€å§‹ï¼Œè¯¥æŽ¥å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力**:SystemCapability.Communication.Bluetooth.Core。 | åç§° | 类型 | å¿…å¡« | 说明 | | ------------------------------------------ | -------- | ---- | ------------------------------------------------------------ | | deviceId | string | å¦ | 表示过滤的BLE设备地å€ï¼Œä¾‹å¦‚:"XX:XX:XX:XX:XX:XX"。 | | name | string | å¦ | 表示过滤的BLE设备å。 | | serviceUuid | string | å¦ | 表示过滤包å«è¯¥UUIDæœåŠ¡çš„è®¾å¤‡ï¼Œä¾‹å¦‚ï¼š00001888-0000-1000-8000-00805f9b34fb。 | | serviceUuidMask | string | å¦ | 表示过滤包å«è¯¥UUIDæœåŠ¡æŽ©ç 的设备,例如:FFFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFFF。 | | serviceSolicitationUuid | string | å¦ | 表示过滤包å«è¯¥UUIDæœåŠ¡è¯·æ±‚çš„è®¾å¤‡ï¼Œä¾‹å¦‚ï¼š00001888-0000-1000-8000-00805F9B34FB。 | | serviceSolicitationUuidMask | string | å¦ | 表示过滤包å«è¯¥UUIDæœåŠ¡è¯·æ±‚æŽ©ç 的设备,例如:FFFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFFF。 | | serviceData | ArrayBuffer | å¦ | 表示过滤包å«è¯¥æœåŠ¡ç›¸å…³æ•°æ®çš„设备,例如:[0x90,0x00,0xF1,0xF2]。 | | serviceDataMask | ArrayBuffer | å¦ | 表示过滤包å«è¯¥æœåŠ¡ç›¸å…³æ•°æ®æŽ©ç 的设备,例如:[0xFF,0xFF,0xFF,0xFF]。 | | manufactureId | number | å¦ | 表示过滤包å«è¯¥åˆ¶é€ 商ID的设备,例如:0x0006。 | | manufactureData | ArrayBuffer | å¦ | 表示过滤包å«è¯¥åˆ¶é€ 商相关数æ®çš„设备,例如:[0x1F,0x2F,0x3F]。 | | manufactureDataMask | ArrayBuffer | å¦ | 表示过滤包å«è¯¥åˆ¶é€ å•†ç›¸å…³æ•°æ®æŽ©ç 的设备,例如:[0xFF,0xFF,0xFF]。 | ## ScanOptions 扫æçš„é…ç½®å‚æ•°ã€‚ **原å化æœåŠ¡API**:从API version 12å¼€å§‹ï¼Œè¯¥æŽ¥å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力**:SystemCapability.Communication.Bluetooth.Core。 | åç§° | 类型 | å¯è¯» | å¯å†™ | 说明 | | --------- | ----------------------- | ---- | ---- | -------------------------------------- | | interval | number | 是 | 是 | 表示扫æç»“果上报延迟时间,默认值为0。 | | dutyMode | [ScanDuty](#scanduty) | 是 | 是 | è¡¨ç¤ºæ‰«ææ¨¡å¼ï¼Œé»˜è®¤å€¼ä¸ºSCAN_MODE_LOW_POWER。 | | matchMode | [MatchMode](#matchmode) | 是 | 是 | è¡¨ç¤ºç¡¬ä»¶çš„è¿‡æ»¤åŒ¹é…æ¨¡å¼ï¼Œé»˜è®¤å€¼ä¸ºMATCH_MODE_AGGRESSIVE。 | | phyType<sup>12+</sup> | [PhyType](#phytype12) | 是 | 是 | 表示扫æä¸ä½¿ç”¨çš„PHY类型。 | ## GattProperties<a name="GattProperties"></a> æè¿°gatt characteristic的属性。 **原å化æœåŠ¡API**:从API version 12å¼€å§‹ï¼Œè¯¥æŽ¥å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力**:SystemCapability.Communication.Bluetooth.Core。 | åç§° | 类型 | å¿…å¡« | 说明 | | -------- | ------ |---- | ----------- | | write | boolean | å¦ | è¡¨ç¤ºè¯¥ç‰¹å¾æ”¯æŒå†™æ“作,true表示需è¦å¯¹ç«¯è®¾å¤‡çš„回å¤ã€‚ | | writeNoResponse | boolean | å¦ | trueè¡¨ç¤ºè¯¥ç‰¹å¾æ”¯æŒå†™æ“ä½œï¼Œæ— éœ€å¯¹ç«¯è®¾å¤‡å›žå¤ã€‚ | | read | boolean | å¦ | trueè¡¨ç¤ºè¯¥ç‰¹å¾æ”¯æŒè¯»æ“作。 | | notify | boolean | å¦ | true表示该特å¾å¯é€šçŸ¥å¯¹ç«¯è®¾å¤‡ã€‚ | | indicate | boolean | å¦ | true表示该特å¾å¯é€šçŸ¥å¯¹ç«¯è®¾å¤‡ï¼Œéœ€è¦å¯¹ç«¯è®¾å¤‡çš„回å¤ã€‚ | ## GattWriteType<a name="GattWriteType"></a> 枚举,表示gatt写入类型。 **原å化æœåŠ¡API**:从API version 12å¼€å§‹ï¼Œè¯¥æŽ¥å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力**:SystemCapability.Communication.Bluetooth.Core。 | åç§° | 值 | 说明 | | ------------------------------------| ------ | --------------- | | WRITE | 1 | 表示写入特å¾å€¼ï¼Œéœ€è¦å¯¹ç«¯è®¾å¤‡çš„回å¤ã€‚ | | WRITE_NO_RESPONSE | 2 | 表示写入特å¾å€¼ï¼Œä¸éœ€è¦å¯¹ç«¯è®¾å¤‡çš„回å¤ã€‚ | ## ScanDuty æžšä¸¾ï¼Œæ‰«ææ¨¡å¼ã€‚ **原å化æœåŠ¡API**:从API version 12å¼€å§‹ï¼Œè¯¥æŽ¥å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力**:SystemCapability.Communication.Bluetooth.Core。 | åç§° | 值 | 说明 | | --------------------- | ---- | ------------ | | SCAN_MODE_LOW_POWER | 0 | 表示低功耗模å¼ï¼Œé»˜è®¤å€¼ã€‚ | | SCAN_MODE_BALANCED | 1 | 表示å‡è¡¡æ¨¡å¼ã€‚ | | SCAN_MODE_LOW_LATENCY | 2 | 表示低延迟模å¼ã€‚ | ## MatchMode æžšä¸¾ï¼Œç¡¬ä»¶è¿‡æ»¤åŒ¹é…æ¨¡å¼ã€‚ **原å化æœåŠ¡API**:从API version 12å¼€å§‹ï¼Œè¯¥æŽ¥å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力**:SystemCapability.Communication.Bluetooth.Core。 | åç§° | 值 | 说明 | | --------------------- | ---- | ---------------------------------------- | | MATCH_MODE_AGGRESSIVE | 1 | 表示硬件上报扫æç»“果门é™è¾ƒä½Žï¼Œæ¯”如扫æåˆ°çš„功率较低或者一段时间扫æåˆ°çš„æ¬¡æ•°è¾ƒå°‘也触å‘上报,默认值。 | | MATCH_MODE_STICKY | 2 | 表示硬件上报扫æç»“果门é™è¾ƒé«˜ï¼Œæ›´é«˜çš„功率门é™ä»¥åŠæ‰«æåˆ°å¤šæ¬¡æ‰ä¼šä¸ŠæŠ¥ã€‚ | ## AdvertisingState<sup>11+</sup> 枚举,广æ’状æ€ã€‚ **系统能力**:SystemCapability.Communication.Bluetooth.Core。 | åç§° | 值 | 说明 | | -------- | ---- | ------------------------------ | | STARTED<sup>11+</sup> | 1 | 表示首次å¯åŠ¨å¹¿æ’åŽçš„状æ€ã€‚ | | ENABLED<sup>11+</sup> | 2 | 表示临时å¯åŠ¨å¹¿æ’åŽçš„状æ€ã€‚ | | DISABLED<sup>11+</sup> | 3 | è¡¨ç¤ºä¸´æ—¶åœæ¢å¹¿æ’åŽçš„状æ€ã€‚ | | STOPPED<sup>11+</sup> | 4 | è¡¨ç¤ºå®Œå…¨åœæ¢å¹¿æ’åŽçš„状æ€ã€‚ | ## PhyType<sup>12+</sup> 枚举,扫æä¸ä½¿ç”¨çš„PHY类型。 **原å化æœåŠ¡API**:从API version 12å¼€å§‹ï¼Œè¯¥æŽ¥å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力**:SystemCapability.Communication.Bluetooth.Core。 | åç§° | 值 | 说明 | | -------- | ---- | ------------------------------ | | PHY_LE_1M<sup>12+</sup> | 1 | 表示扫æä¸ä½¿ç”¨1M PHY。 | | PHY_LE_ALL_SUPPORTED<sup>12+</sup> | 255 | 表示扫æä¸ä½¿ç”¨è“牙å议支æŒçš„PHY模å¼ã€‚ |