咨询获取蓝牙设备广播数据的问题
发布于 6 年前 作者 jpan 6988 次浏览 来自 问答

连接体重秤(广播模式)设备,实时体重数据是通过广播数据获取,在ios上wx.onBluetoothDeviceFound方法会根据广播数据的变化多次搜索到蓝牙设备,从而提取广播数据。但是在android设备上,只能搜索到一次设备。

请问安卓上是否作了去重复处理。那如果要通过小程序 监听蓝牙广播应该如何操作

4 回复

Array.prototype.map.call(new Uint8Array(buffer), x => (‘00’ + x.toString(16)).slice(-2)).join(’’); 返回的数据什么格式?还需要后续处理吗?应为这样得到的数据和我在app(iOS)端获取的数据不一样?🙏🙏🙏

谢谢,已经可以正常获取了。但是红米手机上(android4.4.4)参数无效。

还有一个小问题,两个系统广播数据类型不同,Ios广播数据需要base64ToArrayBuffer转换后才是ArrayBuffer类型

ios:

var data = wx.base64ToArrayBuffer(advertisData)

var str = buf2hex(data)

android:

buf2hex(advertisData)

function buf2hex(buffer) {

  return Array.prototype.map.call(new Uint8Array(buffer), x => (‘00’ + x.toString(16)).slice(-2)).join(’’);

}

数据格式是   ‘551A2B…’ (具体根据蓝牙协议)

之前我遇到个问题  在微信6.5.7 解析广播数据 需要使用data = wx.base64ToArrayBuffer(advertisData)

str = buf2hex(data)

之后的版本直接使用buf2hex(advertisData)

解析notify数据的时候  直接使用buf2hex(res.value)

你可以尝试一下

startBluetoothDevicesDiscovery

allowDuplicatesKeyboolean是否允许重复上报同一设备如果允许重复上报,则onDeviceFound 方法会多次上报同一设备,但是 RSSI 值会有不同

可以先尝试下这个参数,后面会公开出去。

回到顶部