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