北极大尾巴狼
北极大尾巴狼
  • 发布:2022-08-01 20:50
  • 更新:2022-11-02 15:45
  • 阅读:1205

onBLECharacteristicValueChange android无返回值

分类:uni-app

安卓写入之后监听不到返回的事件怎么解决 的呀。还是说当时你写的时候某一个hbuilder版本是好的,现在更新之后,出bug了嘛。但是我如果用read会得到一些数据,但是不是我预想的数据。另外设备我用ios测试是正常的。看到回一下吧。感谢。

2022-08-01 20:50 负责人:无 分享
已邀请:
老醒

老醒

我看了下安卓的源码,如果写入失败,是没有回调返回错误信息的,我推测可能是写特征值因为某些原因失败了吧,我建议看看下面2个方法能不能找到线索:

第一种可能,安卓我设置了默认MTU是185字节(和苹果的缺省MTU值一致),看看写入值是不是超过了185,如果超过了,会不会报错我没试过,主要我自己没传过那么多字节,可以发个小点的值

第二种可能,可能发生了我也不清楚的异常导致写特征值失败,可以看看安卓有没有打印什么异常信息,使用adb命令查看APP实时日志,HBuilderX自带的adb.exe在【HBuilderX\plugins\launcher\tools\adbs】,或者如果你是离线打包直接在android studio 控制台看,日志关键字“读取特征值失败:”或“writeListener”

  • 老醒

    ble.writeBLECharacteristicValue({  
    deviceId:'DDCC-EE-AA-BB-CC',
    serviceId:'0000-1902-C503',
    characteristicId:'0000-1902-C503-0001',
    value:'0010'//两个字节:[0,1]
    },(res)=>{
    if(res.status=='2500'){
    //看看这里有没有返回2500
    }
    })

    2022-08-02 19:20

  • 北极大尾巴狼 (作者)

    回复 老醒: 您好,感谢回复。我用您的插件,在安卓上读取出来的服务uuid 和用 uni 提供的ble接口在 ios上面读取出来的服务的uuid,同样的uuid,但是他的读写权限确实不一样的,ios上面的可以写的,安卓上面不可以写。但是我用ble调试app,发现读出来的服务和ios上面是一样的。另外,我用了好多插件,包括一些调试的app,所有人的notify功能都是失败的。只有您这个插件notify是成功了的,但是写入数据也还是没有从监听的接口获取到数据。主动read是可以监听到数据的。

    2022-08-12 17:00

  • 北极大尾巴狼 (作者)

    直接写0010是可以进入2500的

    2022-08-12 17:00

  • 北极大尾巴狼 (作者)

    我用原生写,把20字节发送量增加到最大,然后就可以了,猜测是发送虽然没有超过20,但是接受超过了20,卡住了。ios随便。

    2022-08-18 16:14

5***@qq.com

5***@qq.com

这个事情真的很神奇,我中午测试还没有问题,相同的包相同的硬件,下午安卓就获取不到回调了,IOS则一直是正常的。

该问题目前已经被锁定, 无法添加新回复