uni-app 蓝牙小程序能搜到ble5.0设备 android搜索不到设备

发布于 1周前 作者 ionicwang 来自 Uni-App

uni-app 蓝牙小程序能搜到ble5.0设备 android搜索不到设备

操作步骤

onBluetoothDeviceFound: function () {
    var that = this;
    console.log("112222")
    uni.onBluetoothDeviceFound((res) => {
        // console.log(res,"222222")
        res.devices.forEach((device) => {
            console.log(device, "name")
            // 去掉名字未知的蓝牙设备
            if (!device.name && !device.localName) {
                return;
            }
            this.devices.push(device)
        });
    });
},

预期结果

能搜索到所有蓝牙设备

实际结果

只能搜索到部分蓝牙设备,ble5.0的设备搜索不到

bug描述

uniapp 低功耗 蓝牙搜索 小程序可以搜到ble5.0设备,android搜索不到设备。平板自己蓝牙可以搜到ble5.0设备

开发环境信息

项目创建方式 PC开发环境操作系统 PC开发环境操作系统版本号 HBuilderX类型 HBuilderX版本号 手机系统 手机系统版本号 手机厂商 手机机型 页面类型 vue版本 打包方式
HBuilderX Windows win11 正式 4.45 Android Android 15 小米 xiaomi Pad 7 vue vue2 云端

1 回复

在开发uni-app蓝牙小程序时,如果遇到Android设备无法搜索到BLE 5.0设备的问题,这通常与Android系统的蓝牙堆栈、设备兼容性以及uni-app蓝牙API的使用方式有关。以下是一个简化的代码示例,展示了如何在uni-app中使用蓝牙API进行设备搜索,并包含了一些可能帮助解决问题的注意事项。

蓝牙搜索代码示例

// 初始化蓝牙适配器
uni.openBluetoothAdapter({
  success: function (res) {
    console.log('蓝牙适配器初始化成功', res)
    // 开始扫描设备
    uni.startBluetoothDevicesDiscovery({
      allowDuplicatesKey: false,
      success: function (discoveryRes) {
        console.log('开始扫描设备', discoveryRes)
        // 监听找到新设备的事件
        uni.onBluetoothDeviceFound(function (devicesRes) {
          devicesRes.devices.forEach(device => {
            console.log('找到设备:', device)
            // 这里可以添加设备筛选逻辑,比如根据设备名称或地址
          })
        })

        // 设置扫描超时处理,避免无限扫描
        setTimeout(() => {
          uni.stopBluetoothDevicesDiscovery({
            success: function () {
              console.log('停止扫描设备')
            }
          })
        }, 10000) // 扫描10秒后停止
      },
      fail: function (err) {
        console.error('扫描设备失败', err)
      }
    })
  },
  fail: function (err) {
    console.error('蓝牙适配器初始化失败', err)
  }
})

注意事项

  1. Android系统版本:确保Android设备系统版本支持BLE 5.0。某些旧版本Android可能不支持或支持有限。

  2. 设备兼容性:不是所有Android设备都能很好地支持BLE 5.0。测试多个设备以确认是否为特定设备问题。

  3. 权限问题:确保应用已请求并获得了必要的蓝牙权限。在manifest.json中添加必要的权限声明。

  4. API调用时机:确保在调用蓝牙API前,用户已授权蓝牙权限,且蓝牙适配器已初始化成功。

  5. 硬件限制:部分Android设备由于硬件限制,可能无法扫描到所有BLE设备,尤其是BLE 5.0设备。

  6. 日志与调试:利用Android Studio等工具查看系统日志,可能有助于诊断问题。

  7. uni-app版本:确保使用的uni-app版本支持最新的蓝牙API,且没有已知的蓝牙相关bug。

通过上述代码和注意事项,可以帮助开发者更好地定位和解决Android设备在uni-app蓝牙小程序中无法搜索到BLE 5.0设备的问题。

回到顶部