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 {