uniapp startbluetoothdevicesdiscovery如何使用
在uniapp中使用startBluetoothDevicesDiscovery方法时,始终无法搜索到附近的蓝牙设备,请问正确的参数配置应该是怎样的?我按照官方文档设置了services参数和allowDuplicatesKey参数,但依然没有反应,是否需要额外权限配置?能否提供一个完整的示例代码?
2 回复
在uniapp中,使用uni.startBluetoothDevicesDiscovery开启蓝牙设备搜索。先调用uni.openBluetoothAdapter初始化蓝牙模块,然后使用此方法开始搜索附近设备。需在success回调中处理发现的设备。注意及时调用stopBluetoothDevicesDiscovery停止搜索以节省电量。
在 UniApp 中使用 startBluetoothDevicesDiscovery 方法可以启动蓝牙设备发现,用于扫描附近的蓝牙外围设备。以下是使用步骤和示例代码:
使用步骤
- 检查蓝牙适配器状态:确保设备蓝牙已开启。
- 开始发现设备:调用
startBluetoothDevicesDiscovery扫描设备。 - 监听发现新设备事件:通过
onBluetoothDeviceFound获取扫描到的设备信息。 - 停止扫描:使用
stopBluetoothDevicesDiscovery停止扫描以节省电量。
示例代码
// 在页面或组件中编写方法
methods: {
// 启动蓝牙设备发现
startScan() {
// 检查蓝牙适配器状态
uni.openBluetoothAdapter({
success: (res) => {
console.log('蓝牙适配器打开成功');
// 开始发现设备
uni.startBluetoothDevicesDiscovery({
services: ['0000FFE0-0000-1000-8000-00805F9B34FB'], // 可选,指定服务UUID
allowDuplicatesKey: false, // 是否允许重复上报设备
interval: 0, // 上报设备的间隔,0表示实时上报
success: (res) => {
console.log('开始扫描设备');
// 监听发现新设备事件
uni.onBluetoothDeviceFound((devices) => {
console.log('发现新设备:', devices.devices);
// 处理设备列表,例如更新到页面数据中
this.deviceList = devices.devices;
});
},
fail: (err) => {
console.error('启动扫描失败:', err);
}
});
},
fail: (err) => {
console.error('蓝牙适配器打开失败:', err);
uni.showToast({ title: '请开启蓝牙', icon: 'none' });
}
});
},
// 停止扫描
stopScan() {
uni.stopBluetoothDevicesDiscovery({
success: (res) => {
console.log('停止扫描成功');
}
});
}
}
注意事项
- 权限:确保应用有蓝牙使用权限(在 manifest.json 中配置)。
- 兼容性:仅支持 App 端和部分小程序平台,H5 不支持。
- 服务 UUID:
services参数可选,指定后可过滤设备,提高扫描效率。 - 设备列表处理:在
onBluetoothDeviceFound回调中更新设备数据,建议去重处理。
实际应用
通常在页面加载时开始扫描,用户选择设备后停止扫描。记得在页面卸载时调用 stopBluetoothDevicesDiscovery 和 closeBluetoothAdapter 释放资源。
如果有问题,检查错误回调并参考 UniApp 官方文档调整参数。

