1# 蓝牙设置开发指导
2
3## 简介
4蓝牙设置主要提供了开启蓝牙、关闭蓝牙、获取蓝牙状态的方法,帮助开发者实现基本蓝牙功能。
5
6## 场景介绍
7主要场景有:
8
9- 开启、关闭蓝牙
10
11## 接口说明
12
13完整的 JS API 说明以及实例代码请参考:[access 接口](../../reference/apis-connectivity-kit/js-apis-bluetooth-access.md)。
14
15具体接口说明如下表。
16
17| 接口名                             | 功能描述                                                                       |
18| ---------------------------------- | ------------------------------------------------------------------------------ |
19| enableBluetooth()                  | 开启蓝牙。                                                                       |
20| disableBluetooth()                 | 关闭蓝牙。                                                                       |
21| getState()                         | 获取蓝牙开关状态。                                                                |
22| on(type: 'stateChange')            | 订阅蓝牙设备开关状态事件。                                                         |
23| off(type: 'stateChange')           | 取消订阅蓝牙设备开关状态事件。                                                     |
24
25
26## 主要场景开发步骤
27
28### 开启、关闭蓝牙
291. import需要的access模块。
302. 需要SystemCapability.Communication.Bluetooth.Core系统能力。
313. 开启蓝牙。
324. 关闭蓝牙。
335. 示例代码:
34
35    ```ts
36    import { access } from '@kit.ConnectivityKit';
37    import { AsyncCallback, BusinessError } from '@kit.BasicServicesKit';
38
39    // 开启蓝牙
40    access.enableBluetooth();
41    access.on('stateChange', (data) => {
42      let btStateMessage = '';
43      switch (data) {
44        case 0:
45          btStateMessage += 'STATE_OFF';
46          break;
47        case 1:
48          btStateMessage += 'STATE_TURNING_ON';
49          break;
50        case 2:
51          btStateMessage += 'STATE_ON';
52          break;
53        case 3:
54          btStateMessage += 'STATE_TURNING_OFF';
55          break;
56        case 4:
57          btStateMessage += 'STATE_BLE_TURNING_ON';
58          break;
59        case 5:
60          btStateMessage += 'STATE_BLE_ON';
61          break;
62        case 6:
63          btStateMessage += 'STATE_BLE_TURNING_OFF';
64          break;
65        default:
66          btStateMessage += 'unknown status';
67          break;
68      }
69      if (btStateMessage == 'STATE_ON') {
70        access.off('stateChange');
71      }
72      console.info('bluetooth statues: ' + btStateMessage);
73    })
74
75    // 关闭蓝牙
76    access.disableBluetooth();
77    access.on('stateChange', (data) => {
78      let btStateMessage = '';
79      switch (data) {
80        case 0:
81          btStateMessage += 'STATE_OFF';
82          break;
83        case 1:
84          btStateMessage += 'STATE_TURNING_ON';
85          break;
86        case 2:
87          btStateMessage += 'STATE_ON';
88          break;
89        case 3:
90          btStateMessage += 'STATE_TURNING_OFF';
91          break;
92        case 4:
93          btStateMessage += 'STATE_BLE_TURNING_ON';
94          break;
95        case 5:
96          btStateMessage += 'STATE_BLE_ON';
97          break;
98        case 6:
99          btStateMessage += 'STATE_BLE_TURNING_OFF';
100          break;
101        default:
102          btStateMessage += 'unknown status';
103          break;
104      }
105      if (btStateMessage == 'STATE_OFF') {
106        access.off('stateChange');
107      }
108      console.info("bluetooth statues: " + btStateMessage);
109    })
110    ```
111
1126. 错误码请参见[蓝牙服务子系统错误码](../../reference/apis-connectivity-kit/errorcode-bluetoothManager.md)。
1137. 如何验证:
114执行开启蓝牙代码,记录日志“bluetooth statues: STATE_ON”,则表示开启蓝牙成功。执行关闭蓝牙代码,记录日志“bluetooth statues: STATE_OFF”,则表示蓝牙关闭成功。