蓝牙api allowDuplicatesKey参数设置
wx.startBluetoothDevicesDiscovery(OBJECT)
根据文档所述我调用该api时将allowDuplicatesKey设为了false,在
wx.onBluetoothDeviceFound(CALLBACK)这个回调内依然检测出deviceId和name相同的设备
剔除业务逻辑后的代码如下:
wx.openBluetoothAdapter({ // 初始化蓝牙适配器 success: function (res) { wx.startBluetoothDevicesDiscovery({ // 开始搜寻附近的蓝牙外围设备 allowDuplicatesKey: false , success: function (res) { wx.getBluetoothDevices({ // 获取所有已发现的蓝牙设备,包括已经和本机处于连接状态的设备 success: function (res) { wx.hideLoading(); }, fail: function (res) { wx.hideLoading(); } }) wx.onBluetoothDeviceFound( function (devices) { console.log(devices.devices[0]); }) }, fail: function (res) { wx.hideLoading(); } }) }, fail: function (res) { wx.hideLoading(); } }) |
调试结果:
可以看到console出来的设备有很多是重复的这里仅列举了一个,不知道是使用的姿势不对吗?调试用的真机是iOS10.3.2,微信版本是6.5.9
6 回复
@ifwang 目前这个问题暂时不影响我们的业务逻辑,因为我们测试用的蓝牙设备是非专业人士焊接的,引脚貌似有点问题经常松动,所以我弄了一个测试页面就想保证一下能发现测试用蓝牙设备。您可以把我的问题优先级靠后,麻烦您了。由于提问题时的代码现在已经废弃了,我重新改动了一下,这里贴上测试页面的完整代码,请您关注7月14日11:00开始的连接行为,感谢!微信号是Fireloli
var app = getApp(); Page({ data: { devices: [] }, clear() { this .setData({ devices: [] }) }, retry() { this .bluetoothConn( 'none' ); }, stop() { wx.stopBluetoothDevicesDiscovery({ // 如果成功后就停止搜索 success: function (res) { } }) }, bluetoothWarn(url, msg, confirm) { let self = this ; wx.showModal({ title: '提示' , content: msg, confirmText: confirm, success: function (res) { console.log(res); if (res.confirm) { self.bluetoothConn(url); } else if (res.cancel) { console.log( '已取消' ); } } }) }, bluetoothConn(url) { let self = this , data = []; if (wx.openBluetoothAdapter) { wx.showLoading({ title: '正在获取商品' }) wx.openBluetoothAdapter({ // 初始化蓝牙适配器 success: function (res) { wx.startBluetoothDevicesDiscovery({ // 开始搜寻附近的蓝牙外围设备 allowDuplicatesKey: false , success: function (res) { wx.getBluetoothDevices({ // 获取所有已发现的蓝牙设备,包括已经和本机处于连接状态的设备 success: function (res) { wx.hideLoading(); }, fail: function (res) { wx.hideLoading(); self.bluetoothWarn(url, '获取蓝牙设备失败' , '重连' ); } }) wx.onBluetoothDeviceFound( function (devices) { console.log(devices.devices[0]); data.push(devices.devices[0]); // if (devices.devices[0].name == 'BLE SPS') { // wx.hideLoading(); // wx.createBLEConnection({ // deviceId: devices.devices[0].deviceId, // success: function (res) { // wx.hideLoading(); // wx.getConnectedBluetoothDevices({ // services: devices.devices[0].advertisServiceUUIDs, // success: function (res) { // console.log(res) // } // }) // wx.stopBluetoothDevicesDiscovery({ // success: function (res) { // } // }) // }, // fail: function (res) { // wx.hideLoading(); // bluetoothWarn(url, '连接蓝牙设备失败', '重连'); // } // }) // } self.setData({ devices: data }) }) }, fail: function (res) { wx.hideLoading(); self.bluetoothWarn(url, '请保持在机器附近' , '重连' ); } }) }, fail: function (res) { wx.hideLoading(); self.bluetoothWarn(url, '请打开手机蓝牙' , '已开启' ); } }) } else { wx.showModal({ title: '提示' , content: '当前微信版本过低,无法使用该功能,请升级到最新微信版本后重试。' }) return ; } }, onLoad: function (options) { this .bluetoothConn( 'none' ); }, }) |
结果还是一样,不过之前重复的那台65设备已经不见了