收藏
回答

wx.setBLEMTU部分安卓机型设置失败?

wx.setBLEMTU

1.部分华为和vivo机型协商MTU值调用失败,使用wx.getBLEMTU获取到的值为203(未设置MTU前为23),但是接收数据只有20字节。

回答关注问题邀请回答
收藏

2 个回答

  • Demons
    Demons
    01-22

    请具体描述问题出现的流程,并提供能复现问题的简单代码片段(https://developers.weixin.qq.com/miniprogram/dev/devtools/minicode.html)。

    01-22
    有用
    回复 1
    • 忧郁的白衬衫
      忧郁的白衬衫
      01-22
      这个跟代码没什么关系,部分安卓用户升级安卓系统后,这个接口设置就会报错,协商的MTU值会改变(203),但接收的数据始终为20字节。调试机型为vivo x100pro,使用蓝牙调试助手(app)设置MTU,回复失败,值修改为(203)同wx.setBLEMTU的结果,但接收的数据有超过20字节。
      01-22
      回复
  • 成龙
    成龙
    01-23

    同问,相同的代码逻辑,在一些手机可以设置成功MTU,在个别手机就设置失败。

    uni.setBLEMTU({
    						deviceId: deviceId,
    						mtu: 160,
    						success(res) {
    							console.log('setBLEMTU:',res);
    							uni.getBLEDeviceCharacteristics({
    								deviceId:deviceId,
    								serviceId: '0000FFF0-0000-1000-8000-00805F9B34FB',
    								success(res) {
    									console.warn("获取需要监听的特征值:",res);
    									// 获取到特征值后立即对指定特征值进行监听
    									uni.notifyBLECharacteristicValueChange({
    										characteristicId: '0000FFFE-0000-1000-8000-00805F9B34FB',
    										deviceId: deviceId,
    										serviceId: '0000FFF0-0000-1000-8000-00805F9B34FB',
    										state: true,
    										success(res) {
    											console.log('监听特征值成功:',res);
    										},
    										fail(res) {
    											console.log('监听特征值失败:',res);
    										}
    									})
    								},fail(res) {
    									console.warn("获取需要监听的特征值失败:",res);
    								}
    							})
    						},
    
    01-23
    有用
    回复 2
    • 成龙
      成龙
      01-23
      我已使用onBLEMTUChange监听回调解决
      01-23
      回复
    • 忧郁的白衬衫
      忧郁的白衬衫
      发表于移动端
      01-23回复成龙
      华为和 vivo 有些机型还是有问题,我已经老老实实分包了。
      01-23
      回复
登录 后发表内容