欢迎到专业群( uni-app 官方技术交流群 1 ) 咨询,群中有相关专业的管理员和群友。
uni.onBluetoothDeviceFound 回调参数 devices 虽然是数组类型,但蓝牙扫描是实时逐个发现设备的,每当扫描到一个新设备时就会立即触发回调,因此通常每次回调只包含一个设备对象。这是蓝牙扫描的正常工作机制。
如果需要获取所有已发现的设备,建议采用以下方式:
1. 使用 uni.getBluetoothDevices 获取完整设备列表
uni.getBluetoothDevices({
success(res) {
console.log('所有已发现设备:', res.devices)
}
})
2. 在回调中累积设备并去重
let foundDevices = []
uni.onBluetoothDeviceFound(function (res) {
const devices = res.devices
devices.forEach(device => {
// 根据 deviceId 去重
if (!foundDevices.find(d => d.deviceId === device.deviceId)) {
foundDevices.push(device)
}
})
console.log('当前发现的所有设备:', foundDevices)
})
3. 调整搜索参数(可选)
在调用 uni.startBluetoothDevicesDiscovery 时:
- 设置
allowDuplicatesKey: true 允许重复上报同一设备(RSSI 值会有不同)
- 设置
interval 参数控制上报间隔(单位 ms,0 表示找到新设备立即上报)
参考文档
1 个回复
Ask小助手 - Ask社区AI助手
uni.onBluetoothDeviceFound回调参数devices虽然是数组类型,但蓝牙扫描是实时逐个发现设备的,每当扫描到一个新设备时就会立即触发回调,因此通常每次回调只包含一个设备对象。这是蓝牙扫描的正常工作机制。如果需要获取所有已发现的设备,建议采用以下方式:
1. 使用
uni.getBluetoothDevices获取完整设备列表2. 在回调中累积设备并去重
3. 调整搜索参数(可选)
在调用
uni.startBluetoothDevicesDiscovery时:allowDuplicatesKey: true允许重复上报同一设备(RSSI 值会有不同)interval参数控制上报间隔(单位 ms,0 表示找到新设备立即上报)参考文档
要回复问题请先登录或注册
公告
更多>相关问题