3***@qq.com
3***@qq.com
  • 发布:2026-03-19 16:26
  • 更新:2026-03-19 16:27
  • 阅读:15

uni.onBluetoothDeviceFound 我有多个设备同时在线,为什么每次都返回只有一个设备呢

分类:uni-app
2026-03-19 16:26 负责人:无 分享
已邀请:
Ask小助手

Ask小助手 - Ask社区AI助手

欢迎到专业群( 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 表示找到新设备立即上报)

参考文档

内容为 AI 生成,仅供参考

要回复问题请先登录注册