harmony 鸿蒙蓝牙设置
蓝牙设置
简介
本指南主要提供了开启蓝牙、关闭蓝牙和获取蓝牙开关状态的开发指导。开发者在使用蓝牙其他功能时,应确保蓝牙子系统已正常开启。
开发步骤
申请蓝牙权限
需要申请权限ohos.permission.ACCESS_BLUETOOTH。如何配置和申请权限,具体操作请参考声明权限和向用户申请授权。
导入所需API模块
导入access和错误码模块。
import { access } from '@kit.ConnectivityKit';
import { BusinessError } from '@kit.BasicServicesKit';
订阅蓝牙开关状态变化事件
通过订阅开关状态变化事件,可以获取实时的蓝牙开关状态。蓝牙开启或者关闭过程中,涉及多种蓝牙状态的跃迁。其中STATE_OFF表示蓝牙已关闭,此状态下,应用不可以使用蓝牙其他功能;STATE_ON表示蓝牙已打开,此状态下,应用可以使用蓝牙其他功能。
// 定义蓝牙开关状态变化函数回调
function onReceiveEvent(data: access.BluetoothState) {
let btStateMessage = '';
switch (data) {
case access.BluetoothState.STATE_OFF:
// 表示蓝牙是关闭的
btStateMessage += 'STATE_OFF';
break;
case access.BluetoothState.STATE_TURNING_ON:
btStateMessage += 'STATE_TURNING_ON';
break;
case access.BluetoothState.STATE_ON:
// 表示蓝牙是开启的,此时应用才可以使用蓝牙其他功能
btStateMessage += 'STATE_ON';
break;
case access.BluetoothState.STATE_TURNING_OFF:
btStateMessage += 'STATE_TURNING_OFF';
break;
case access.BluetoothState.STATE_BLE_TURNING_ON:
btStateMessage += 'STATE_BLE_TURNING_ON';
break;
case access.BluetoothState.STATE_BLE_ON:
btStateMessage += 'STATE_BLE_ON';
break;
case access.BluetoothState.STATE_BLE_TURNING_OFF:
btStateMessage += 'STATE_BLE_TURNING_OFF';
break;
default:
btStateMessage += 'unknown state';
break;
}
console.info('bluetooth state: ' + btStateMessage);
}
try {
// 发起订阅
access.on('stateChange', onReceiveEvent);
} catch (err) {
console.error('errCode: ' + (err as BusinessError).code + ', errMessage: ' + (err as BusinessError).message);
}
开启蓝牙
若应用获取到的蓝牙开关状态是关闭的,当需要使用蓝牙时,则需要主动开启蓝牙。通过订阅蓝牙开关状态,判断蓝牙是否开启成功。
系统弹出对话框并提示应用“想要开启蓝牙”,如下图1。若用户同意授权,将开启蓝牙。
图1 开启蓝牙对话框
try {
// 主动获取蓝牙当前的开关状态
let state = access.getState();
if (state == access.BluetoothState.STATE_OFF) {
// 若蓝牙是关闭的,则主动开启蓝牙
access.enableBluetooth();
}
} catch (err) {
console.error('errCode: ' + (err as BusinessError).code + ', errMessage: ' + (err as BusinessError).message);
}
关闭蓝牙
若应用不需要使用蓝牙时,可根据实际情况判断是否需要主动关闭蓝牙。通过订阅蓝牙开关状态,判断蓝牙是否关闭成功。
系统弹出对话框并提示应用“想要关闭蓝牙”,如下图2。若用户同意授权,将关闭蓝牙。
图2 关闭蓝牙对话框
try {
// 主动获取蓝牙当前的开关状态
let state = access.getState();
if (state == access.BluetoothState.STATE_ON) {
// 若蓝牙是开启的,则主动关闭蓝牙
access.disableBluetooth();
}
} catch (err) {
console.error('errCode: ' + (err as BusinessError).code + ', errMessage: ' + (err as BusinessError).message);
}
完整示例
import { access } from '@kit.ConnectivityKit';
import { BusinessError } from '@kit.BasicServicesKit';
export class AdapterManager {
// 定义蓝牙开关状态变化函数回调
onReceiveEvent = (data: access.BluetoothState) => {
let btStateMessage = '';
switch (data) {
case access.BluetoothState.STATE_OFF:
// 表示蓝牙是关闭的
btStateMessage += 'STATE_OFF';
break;
case access.BluetoothState.STATE_TURNING_ON:
btStateMessage += 'STATE_TURNING_ON';
break;
case access.BluetoothState.STATE_ON:
// 表示蓝牙是开启的,此时应用才可以使用蓝牙其他功能
btStateMessage += 'STATE_ON';
break;
case access.BluetoothState.STATE_TURNING_OFF:
btStateMessage += 'STATE_TURNING_OFF';
break;
case access.BluetoothState.STATE_BLE_TURNING_ON:
btStateMessage += 'STATE_BLE_TURNING_ON';
break;
case access.BluetoothState.STATE_BLE_ON:
btStateMessage += 'STATE_BLE_ON';
break;
case access.BluetoothState.STATE_BLE_TURNING_OFF:
btStateMessage += 'STATE_BLE_TURNING_OFF';
break;
default:
btStateMessage += 'unknown state';
break;
}
console.info('bluetooth state: ' + btStateMessage);
};
// 开启蓝牙
public openBluetooth() {
try {
access.on('stateChange', this.onReceiveEvent);
} catch (err) {
console.error('errCode: ' + (err as BusinessError).code + ', errMessage: ' + (err as BusinessError).message);
}
try {
// 主动获取蓝牙当前的开关状态
let state = access.getState();
if (state == access.BluetoothState.STATE_OFF) {
// 若蓝牙是关闭的,则主动开启蓝牙
access.enableBluetooth();
}
} catch (err) {
console.error('errCode: ' + (err as BusinessError).code + ', errMessage: ' + (err as BusinessError).message);
}
}
// 关闭蓝牙
public closeBluetooth() {
try {
// 主动获取蓝牙当前的开关状态
let state = access.getState();
if (state == access.BluetoothState.STATE_ON) {
// 若蓝牙是开启的,则主动关闭蓝牙
access.disableBluetooth();
}
} catch (err) {
console.error('errCode: ' + (err as BusinessError).code + ', errMessage: ' + (err as BusinessError).message);
}
}
}
let adapterManager = new AdapterManager();
export default adapterManager as AdapterManager;
你可能感兴趣的鸿蒙文章
0
赞
- 所属分类: 后端技术
- 本文标签:
热门推荐
-
2、 - 优质文章
-
3、 gate.io
-
8、 golang
-
9、 openharmony
-
10、 Vue中input框自动聚焦