uniapp 蓝牙通讯
uniapp 蓝牙通讯实现步骤
uniapp 提供了一套跨平台的蓝牙通信 API,支持在 iOS 和 Android 设备上进行蓝牙设备的搜索、连接和数据传输。以下是实现蓝牙通信的关键步骤和代码示例。
初始化蓝牙模块
在开始蓝牙操作前,需要初始化蓝牙模块并检查设备是否支持蓝牙功能。使用 uni.openBluetoothAdapter 方法初始化蓝牙适配器。
uni.openBluetoothAdapter({
success(res) {
console.log('蓝牙适配器初始化成功');
},
fail(err) {
console.error('蓝牙适配器初始化失败', err);
}
});
搜索蓝牙设备
初始化成功后,调用 uni.startBluetoothDevicesDiscovery 方法开始搜索附近的蓝牙设备。搜索到的设备会通过 onBluetoothDeviceFound 事件返回。
uni.startBluetoothDevicesDiscovery({
success(res) {
console.log('开始搜索蓝牙设备');
},
fail(err) {
console.error('搜索蓝牙设备失败', err);
}
});
uni.onBluetoothDeviceFound(function(devices) {
console.log('发现蓝牙设备', devices);
});
连接蓝牙设备
搜索到目标设备后,通过设备的 deviceId 调用 uni.createBLEConnection 方法进行连接。

uni.createBLEConnection({
deviceId: '目标设备的deviceId',
success(res) {
console.log('蓝牙设备连接成功');
},
fail(err) {
console.error('蓝牙设备连接失败', err);
}
});
获取蓝牙服务
连接成功后,调用 uni.getBLEDeviceServices 方法获取设备的服务列表。
uni.getBLEDeviceServices({
deviceId: '目标设备的deviceId',
success(res) {
console.log('获取蓝牙服务成功', res.services);
},
fail(err) {
console.error('获取蓝牙服务失败', err);
}
});
获取特征值
获取到服务列表后,通过服务的 serviceId 调用 uni.getBLEDeviceCharacteristics 方法获取特征值列表。
uni.getBLEDeviceCharacteristics({
deviceId: '目标设备的deviceId',
serviceId: '目标服务的serviceId',
success(res) {
console.log('获取特征值成功', res.characteristics);
},
fail(err) {
console.error('获取特征值失败', err);
}
});
读写数据
获取到特征值后,可以通过 uni.readBLECharacteristicValue 和 uni.writeBLECharacteristicValue 方法进行数据的读取和写入。

// 读取数据
uni.readBLECharacteristicValue({
deviceId: '目标设备的deviceId',
serviceId: '目标服务的serviceId',
characteristicId: '目标特征值的characteristicId',
success(res) {
console.log('读取数据成功');
},
fail(err) {
console.error('读取数据失败', err);
}
});
// 写入数据
uni.writeBLECharacteristicValue({
deviceId: '目标设备的deviceId',
serviceId: '目标服务的serviceId',
characteristicId: '目标特征值的characteristicId',
value: '要写入的数据',
success(res) {
console.log('写入数据成功');
},
fail(err) {
console.error('写入数据失败', err);
}
});
监听数据变化
通过 uni.onBLECharacteristicValueChange 方法监听特征值的数据变化。
uni.onBLECharacteristicValueChange(function(res) {
console.log('接收到数据', res.value);
});
断开连接
完成蓝牙通信后,调用 uni.closeBLEConnection 方法断开与设备的连接。
uni.closeBLEConnection({
deviceId: '目标设备的deviceId',
success(res) {
console.log('断开连接成功');
},
fail(err) {
console.error('断开连接失败', err);
}
});
关闭蓝牙适配器
最后,调用 uni.closeBluetoothAdapter 方法关闭蓝牙适配器以释放资源。
uni.closeBluetoothAdapter({
success(res) {
console.log('蓝牙适配器关闭成功');
},
fail(err) {
console.error('蓝牙适配器关闭失败', err);
}
});
注意事项
- 在 iOS 设备上,部分蓝牙操作需要在用户授权后进行。
- 蓝牙通信涉及硬件操作,建议在真机环境下测试。
- 蓝牙设备的
deviceId和serviceId等参数需要根据实际设备进行调整。 - 数据传输时需要注意数据的格式和编码,确保发送和接收的数据一致。






