uni-app 获取蓝牙设备列表

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

uni-app 获取蓝牙设备列表

h5+可以使用蓝牙接口吗?

12 回复

var main = plus.android.runtimeMainActivity(); var Context = plus.android.importClass(“android.content.Context”); BManager = main.getSystemService(Context.BLUETOOTH_SERVICE); plus.android.importClass(BManager); //引入相关的method函数 BAdapter = BManager.getAdapter(); plus.android.importClass(BAdapter);//引入相关的method函数,这样之后才会有isEna var lists = BAdapter.getBondedDevices(); plus.android.importClass(lists); var resultDiv = document.getElementById(‘bluetooth_list’); var iterator = lists.iterator(); plus.android.importClass(iterator); while(iterator.hasNext()) { var d = iterator.next(); plus.android.importClass(d); console.log(“名称:”+d.getName()+",地址:"+d.getAddress()); }


在uniapp中这个方法可以获取已配对的蓝牙列表,但是要在BManager和BAdapter 前加var,并注释掉//var resultDiv = document.getElementById(‘bluetooth_list’); 好像因为vue语法不支持DOM的操作

getName() 和 getAddress这两个方法有文档吗

厉害了,果断收藏。

这上面贴的代码,好像都不是获取可用蓝牙设备列表,而是获取配对过的蓝牙设备列表,确认下?

function bluetooth_list(){ var main = plus.android.runtimeMainActivity(); var Context = plus.android.importClass(“android.content.Context”); var lists = BAdapter.getBondedDevices(); plus.android.importClass(lists); var resultDiv = document.getElementById(‘bluetooth_list’); var iterator = lists.iterator(); plus.android.importClass(iterator); while (iterator.hasNext()) { var d = iterator.next(); plus.android.importClass(d); console.log(d.getAddress()); } }

您好,请问一下,用这个方法只能获取一次设备列表,我退出页面重新进来就获取不到了是为什么呢?

问下蓝牙传输数据怎么写

这个只支持低功耗蓝牙吗

想问下,我输出了BManager、BAdapter、lists、iterator。这个上面三个都有uuid,哪个是我蓝牙的uuid啊。

uni-app 中获取蓝牙设备列表,你可以使用 uni.openBluetoothAdapteruni.startBluetoothDevicesDiscovery API。以下是一个完整的示例代码,展示了如何在 uni-app 中实现获取蓝牙设备列表的功能。

首先,确保你的 manifest.json 文件中已经配置了蓝牙权限:

{
  "mp-weixin": {
    "appid": "your-app-id",
    "setting": {
      "bluetooth": true
    }
  }
}

然后,在你的页面脚本中,可以这样实现:

Page({
  data: {
    devices: [] // 用于存储发现的蓝牙设备列表
  },

  onLoad() {
    this.initBluetooth();
  },

  // 初始化蓝牙适配器
  initBluetooth() {
    uni.openBluetoothAdapter({
      success: (res) => {
        console.log('蓝牙适配器初始化成功', res);
        this.startDiscovery();
      },
      fail: (err) => {
        console.error('蓝牙适配器初始化失败', err);
      }
    });
  },

  // 开始发现蓝牙设备
  startDiscovery() {
    uni.startBluetoothDevicesDiscovery({
      allowDuplicatesKey: false, // 是否允许重复上报同一设备,默认为 false
      success: (res) => {
        console.log('开始发现蓝牙设备', res);
        this.onDeviceFound();
      },
      fail: (err) => {
        console.error('发现蓝牙设备失败', err);
      }
    });
  },

  // 监听找到新设备的事件
  onDeviceFound() {
    uni.onBluetoothDeviceFound((devices) => {
      console.log('找到新设备', devices.devices);
      this.setData({
        devices: [...this.data.devices, ...devices.devices] // 更新设备列表
      });
    });
  },

  // 停止发现蓝牙设备(通常在页面卸载时调用)
  stopDiscovery() {
    uni.stopBluetoothDevicesDiscovery({
      success: (res) => {
        console.log('停止发现蓝牙设备', res);
      },
      fail: (err) => {
        console.error('停止发现蓝牙设备失败', err);
      }
    });
  },

  onUnload() {
    this.stopDiscovery(); // 页面卸载时停止发现蓝牙设备
  }
});

在这个示例中,我们首先初始化蓝牙适配器,然后开始发现蓝牙设备。通过监听 onBluetoothDeviceFound 事件,我们可以实时获取到找到的新设备,并将其添加到设备列表中。在页面卸载时,我们调用 stopBluetoothDevicesDiscovery 来停止发现蓝牙设备,以节省系统资源。

请注意,实际开发中还需要处理用户权限问题,以及针对不同平台的兼容性问题。此外,蓝牙操作通常比较耗电,因此应合理控制蓝牙扫描的频率和时间。

回到顶部