蓝牙控制uniApp
蓝牙控制 uniApp 的实现方法
在 uniApp 中实现蓝牙控制功能,主要依赖于 uniApp 提供的蓝牙 API。以下为具体实现步骤:
准备工作 确保设备支持蓝牙功能,并在 manifest.json 文件中配置蓝牙权限。对于安卓平台,需要添加以下权限:
<uses-permission android:name="android.permission.BLUETOOTH"/>
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
初始化蓝牙模块 调用 uni.openBluetoothAdapter 初始化蓝牙适配器。示例代码:
uni.openBluetoothAdapter({
success(res) {
console.log('蓝牙适配器初始化成功');
},
fail(err) {
console.error('蓝牙适配器初始化失败', err);
}
});
搜索蓝牙设备 使用 uni.startBluetoothDevicesDiscovery 开始搜索附近的蓝牙设备:
uni.startBluetoothDevicesDiscovery({
services: ['FFE0'], // 指定服务UUID,可选
success(res) {
console.log('开始搜索蓝牙设备');
},
fail(err) {
console.error('搜索蓝牙设备失败', err);
}
});
监听发现新设备 通过 uni.onBluetoothDeviceFound 监听新发现的设备:

uni.onBluetoothDeviceFound(function(devices) {
console.log('发现新设备', devices.devices);
// 这里可以更新设备列表
});
连接蓝牙设备 找到目标设备后,使用 uni.createBLEConnection 建立连接:
uni.createBLEConnection({
deviceId: '目标设备ID',
success(res) {
console.log('连接成功');
},
fail(err) {
console.error('连接失败', err);
}
});
获取服务与特征值 连接成功后,获取设备的服务和特征值:
uni.getBLEDeviceServices({
deviceId: '设备ID',
success(res) {
console.log('获取服务成功', res.services);
// 获取特征值
uni.getBLEDeviceCharacteristics({
deviceId: '设备ID',
serviceId: '服务UUID',
success(res) {
console.log('获取特征值成功', res.characteristics);
}
});
}
});
读写数据 通过特征值进行数据读写操作:

// 写入数据
uni.writeBLECharacteristicValue({
deviceId: '设备ID',
serviceId: '服务UUID',
characteristicId: '特征值UUID',
value: '要写入的数据',
success(res) {
console.log('写入成功');
}
});
// 监听数据变化
uni.notifyBLECharacteristicValueChange({
deviceId: '设备ID',
serviceId: '服务UUID',
characteristicId: '特征值UUID',
state: true,
success(res) {
console.log('监听成功');
}
});
uni.onBLECharacteristicValueChange(function(res) {
console.log('收到数据', res.value);
});
断开连接 完成操作后断开蓝牙连接:
uni.closeBLEConnection({
deviceId: '设备ID',
success(res) {
console.log('断开连接成功');
}
});
注意事项
- 不同平台的蓝牙实现可能略有差异,需要测试兼容性
- 安卓设备需要开启GPS定位权限才能正常使用蓝牙
- iOS设备需要用户明确授权蓝牙权限
- 蓝牙通信距离有限,通常在10米范围内
- 部分低功耗蓝牙设备可能需要特殊处理
常见问题解决
无法搜索到设备 检查设备是否处于可发现模式,确认蓝牙服务UUID正确,确保设备与手机距离足够近。
连接不稳定 尝试降低通信速率,检查周围无线干扰情况,确保设备电量充足。
数据传输错误 验证数据格式是否符合设备要求,检查特征值是否支持读写操作,确认数据分包大小合适。



