感觉小程序的蓝牙就是坑,太多不完善了。
安卓接收蓝牙数据丢失因为特殊原因,没有办法订阅蓝牙notify 功能,只能通过定时任务,每秒向蓝牙发送一个获取蓝牙二进制数据的命令,IOS系统测试是正常的,可以接收到完整的数据,但是安卓系统接收数据的时候就会丢失,被限制在20字节内了。多次测试后发现一个奇怪的现象,就是 在苹果手机微信小程序退出后,再在安卓手机登录微信再进入小程序的时候,连接蓝牙后,第一次读取可以读取到完整的蓝牙数据,之后就不行了。 [图片]
2018-07-19你好这问题解决了没有,还有就是有时候名字为空,什么都不显示
wx.getBluetoothDevices返回的name是“未知设备”现象如下: 用下面的代码,在从来没有扫描过本小程序的iOS上,扫描进入,调用对应代码,会打印出一系列的: 扫到的:未知设备 扫到的:未知设备 扫到的:未知设备 扫到的:未知设备 而关闭系统蓝牙再打开,再扫,还是如此。 而将微信后台清掉,再进入微信,进入本小程序,再扫,每个设备的名字就准确的扫描出来了。之后,就都能准确扫到了。 使用新的iOS手机能复现。 代码片段如下: wx.startBluetoothDevicesDiscovery({ services: ['FFE5'], // 只搜索含有FFE5主服务的uuid allowDuplicatesKey: false, interval: 100, success: function (res) { console.log('开启BLE发现服务成功') that.DeviceScanInterval(operType) }, fail: function (res) { } }) DeviceScanInterval: function (operType) { wx.getBluetoothDevices({ success: function (res) { console.log('在寻找设备:' + that.data.DeviceId) that.data.signalStrength = 0 var i = 0 for (; i < res.devices.length; i++) { console.log('扫到的:' + res.devices[i].name) if (res.devices[i].name == that.data.DeviceId) { console.log('已搜索到指定设备') //-------------停止蓝牙BLE扫描------------------ wx.stopBluetoothDevicesDiscovery({ complete: function () { } }, }) break } } }, fail: function (res) { console.log(res) that.data.signalStrength = 0 }, }) }
2018-05-30