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