uni-app开发app时真机调试蓝牙模块uni.onBluetoothDeviceFound不进入回调

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

uni-app开发app时真机调试蓝牙模块uni.onBluetoothDeviceFound不进入回调



  uni.startBluetoothDevicesDiscovery({  
    allowDuplicatesKey: true,  
    success: (res) => {  
      uni.onBluetoothDeviceFound((devices) => {  
        console.log('发现蓝牙设备', devices);  
      });  
      console.log('开始扫描蓝牙设备成功', res);  
    },  
    fail: (err) => {  
      console.error('开始扫描蓝牙设备失败', err);  
    }  
  });  

找其他回答说  

  uni.onBluetoothDeviceFound((devices) => {  
    console.log('发现蓝牙设备', devices);  
  });  

  uni.startBluetoothDevicesDiscovery({  
    allowDuplicatesKey: true,  
    success: (res) => {  

      console.log('开始扫描蓝牙设备成功', res);  
    },  
    fail: (err) => {  
      console.error('开始扫描蓝牙设备失败', err);  
    }  
  });  

也是一样无法进入 uni.onBluetoothDeviceFound的回调  

1 回复

在开发uni-app应用时,如果在使用蓝牙模块进行真机调试时,uni.onBluetoothDeviceFound 回调没有触发,这通常意味着蓝牙扫描没有正确启动或设备没有找到任何蓝牙设备。以下是一些可能的原因和对应的代码示例,帮助你排查和解决问题。

1. 确保已正确初始化蓝牙适配器

首先,确保在调用 uni.onBluetoothDeviceFound 之前已经初始化蓝牙适配器,并且适配器状态为可用。

uni.openBluetoothAdapter({
  success: function (res) {
    console.log('蓝牙适配器初始化成功', res);
    // 开始扫描
    startBluetoothDevicesDiscovery();
  },
  fail: function (err) {
    console.error('蓝牙适配器初始化失败', err);
  }
});

2. 开始蓝牙设备发现

确保在适配器初始化成功后,调用 uni.startBluetoothDevicesDiscovery 开始扫描设备。

function startBluetoothDevicesDiscovery() {
  uni.startBluetoothDevicesDiscovery({
    allowDuplicatesKey: false, // 是否允许重复上报同一设备
    success: function (res) {
      console.log('开始扫描蓝牙设备', res);
    },
    fail: function (err) {
      console.error('扫描蓝牙设备失败', err);
    }
  });

  // 监听找到新设备的事件
  uni.onBluetoothDeviceFound(function (devices) {
    devices.forEach(device => {
      console.log('找到蓝牙设备:', device);
    });
  });
}

3. 检查权限和设备状态

确保你的应用有访问蓝牙的权限,并且设备蓝牙已开启。在某些操作系统(如iOS)上,用户需要在系统设置中手动允许应用访问蓝牙。

4. 处理扫描停止

在实际应用中,你可能需要在某个时刻停止蓝牙扫描,可以通过调用 uni.stopBluetoothDevicesDiscovery 来实现。

function stopBluetoothDevicesDiscovery() {
  uni.stopBluetoothDevicesDiscovery({
    success: function (res) {
      console.log('停止扫描蓝牙设备', res);
    },
    fail: function (err) {
      console.error('停止扫描蓝牙设备失败', err);
    }
  });
}

5. 调试和日志

如果以上步骤都正确无误,但问题依旧存在,建议增加更多的日志输出,检查每一步的回调结果,以确定是哪一步出现了问题。

通过上述步骤,你应该能够定位到 uni.onBluetoothDeviceFound 不进入回调的具体原因,并采取相应的措施解决问题。如果问题依旧存在,可能需要检查具体的设备和操作系统版本是否有已知的蓝牙兼容性问题。

回到顶部