- 当前 Bug 的表现(可附上截图)
现在主要是安卓收不到特征值变化的值 ,苹果一直是正常,我安桌手机是最新的oppo reno 10倍变焦版
特征值属性:
properties: {read: false, write: true, notify: true, indicate: false}
我的方法:
wx.notifyBLECharacteristicValueChange({
deviceId,
serviceId,
characteristicId: item.uuid,
state: true,
type: 'notification'})
我就算加type:notification也没起作用
网上有人说,在安卓write指令后,一定要再读一次特征值,要不然onBLECharacteristicValueChange监听不了变化,但我这个特征值是不支持read属性的,所以这种方法对我来说没用。
- 预期表现
通过我多次测试,发现writeBLECharacteristicValue其实是成功了的,通过硬件响应知道的,并且硬件已收到指令,特征值一直在变(我通过苹果设备验证),我是连接的一个心电图检测的硬件设备,当发送一个开始检测命令后,设备会按秒来改变特征值,在IOS设备下一切正常我是能监听到值的改变,但在安桌设备下onBLECharacteristicValueChange方法都没进,我有真机比较苹果和安桌,苹果和安桌最大的差别是苹果在特征值变化前它会进入internal/async_hooks.js中的emitHook方法,我也不知道这个是干嘛用的,但安卓并不会进入这个方法。(write和监听的service不一样)
- 复现路径
因为你们没有我这种设备,你们没办法复现
- 提供一个最简复现 Demo
同上
小程序安卓ios都能获取特征值及操作打印,但是打包成app会报错1007当前特征值不支持此操作,然后打印不了
最后我找到原因了,那是因为安卓蓝牙每次发送的数据不能超过20字节,但苹果却可以收到,希望我的回复能帮助到别人,后面我和厂商沟通让他们拆包发送数据才彻底解决此问题,以前我在社区见过是说不超过80字节就可以的,不知道现在为什么变成20字节。希望你们官方能重视这种问题,我看到社区有多人反应类似问题,但你们稍遇到麻烦点的问题就躲,真搞不懂你们是什么意思,还说联系我,联系毛线,一个人都没找过我
"write":true,
"notify":false,
"indicate":false
我读是ok 的返回也是ok 但是返回的参数拿不到,value是空对象,是因为notify,indicate 的原因吗?
你好,麻烦在手机微信那里上传下日志: 我->设置->帮助与反馈右上角有个上报日志的入口,麻烦提供一下微信号,时间点
微信号:vencent0324; 上传时间2019-5-27 15:39
补充一点,特征值的变化每次都是57个字节,我看网上有说微信是限制为80个字节,应该不会有影响吧
看日志没有什么异常,也有事件正确丢出,Android是不是偶然能收到事件?
---
试试原生ble app有没有问题,减小定位问题的难度。
https://github.com/search?l=Java&q=ble&type=Repositories
ps:留个微信号,我加一下你了解下具体情况?没有设备也很难看出来.
原生的没有问题,我用厂家原生的APP试过了,是可以的,我也问过厂家是不是有什么特殊的东西之类的,厂家说没有,就说开户notify然后监听就可以,我的微信号kaye1022
人呢?咋没人管了啊!你们不能遇到麻烦的问题就不管了啊!