咨询获取蓝牙设备广播数据的问题

发布于 7 年前作者 jpan7136 次浏览最后编辑 7 年前来自 ask

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

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

4 回复
huangwei
huangwei1 楼6 年前

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

leijun
leijun2 楼6 年前

谢谢,已经可以正常获取了。但是红米手机上(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(‘’);

}

kchen
kchen3 楼6 年前

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

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

str = buf2hex(data)

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

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

你可以尝试一下

qiangli
qiangli4 楼5 年前

startBluetoothDevicesDiscovery

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

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