uniapp startbluetoothdevicesdiscovery如何使用

在uniapp中使用startBluetoothDevicesDiscovery方法时,始终无法搜索到附近的蓝牙设备,请问正确的参数配置应该是怎样的?我按照官方文档设置了services参数和allowDuplicatesKey参数,但依然没有反应,是否需要额外权限配置?能否提供一个完整的示例代码?

2 回复

在uniapp中,使用uni.startBluetoothDevicesDiscovery开启蓝牙设备搜索。先调用uni.openBluetoothAdapter初始化蓝牙模块,然后使用此方法开始搜索附近设备。需在success回调中处理发现的设备。注意及时调用stopBluetoothDevicesDiscovery停止搜索以节省电量。


在 UniApp 中使用 startBluetoothDevicesDiscovery 方法可以启动蓝牙设备发现,用于扫描附近的蓝牙外围设备。以下是使用步骤和示例代码:

使用步骤

  1. 检查蓝牙适配器状态:确保设备蓝牙已开启。
  2. 开始发现设备:调用 startBluetoothDevicesDiscovery 扫描设备。
  3. 监听发现新设备事件:通过 onBluetoothDeviceFound 获取扫描到的设备信息。
  4. 停止扫描:使用 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 不支持。
  • 服务 UUIDservices 参数可选,指定后可过滤设备,提高扫描效率。
  • 设备列表处理:在 onBluetoothDeviceFound 回调中更新设备数据,建议去重处理。

实际应用

通常在页面加载时开始扫描,用户选择设备后停止扫描。记得在页面卸载时调用 stopBluetoothDevicesDiscoverycloseBluetoothAdapter 释放资源。

如果有问题,检查错误回调并参考 UniApp 官方文档调整参数。

回到顶部