蓝牙4.0 笔记

1.数据重复混乱,本来回复的数据应该是A1,A2,B1,B2 .结果上来的数据为A1,B1,A2,B2

而我这边做了队列等待,是依次发送的,日志输出显示我这边的发送是正确的,怀疑是Android手机蓝牙底层的缺陷,但通过蓝牙的空中抓包,发现这边同一时间给蓝牙发送了2次相同数据,经过仔细调试,发现在连接断开,然后直接重连时,这种状况基本是必现得,初步怀疑是连接的问题,通过仔细观察蓝牙底层输出日志,发现断开重连时新开启了一个连接线程mClientIf 与上次的不一样,而且当发送数据的时候,上次的mClientIf 被自动重连了,导致我这边在新的mClientIf上发送的数据,同时也会在上一个mClientIf上再发送一次,导致数据的重复发送,和数据的重复响应。

解决方案:一,在重新连接是 关闭掉上一个连接,调用mBluetoothGatt.close()方法。二,不新建一个连接,重用上一个连接 mBluetoothGatt.connect()

if (address.equals(mCurMac) && mBluetoothGatt != null) {// 上一个连接还在
            Log.i(TAG,"重连上一个连接");
            if (!mBluetoothGatt.connect()) {
                mState = STATE_UNCONNECTED;
                bleConnLisener.onFailed(IBleConnectionListener.EXCEP_CONNECT_FAILED);
            }
        } else {
         
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值