针对Android 4.4.2 OS三星和三星(A8)Android 5.1.1编写的相同代码的奇怪场景。
if(mBluetoothGattCharacteristic==null){
return;
}
byte [] mCommandData=new byte[64];
mCommandData[0]=Constants.REMOTE_CMD;
mCommandData[1]=(byte) mRemoteCommand;
mBluetoothGattCharacteristic.setWriteType(BluetoothGattCharacteristic.WRITE_TYPE_NO_RESPONSE);
boolean isUpdated= mBluetoothGattCharacteristic.setValue(mCommandData);
boolean isWriteDone=mBluetoothGatt.writeCharacteristic(mBluetoothGattCharacteristic);
LogUtils.i("LOG", "Ble Write set is---"+ isUpdated + " Characteristics Write done"+ isWriteDone);
/**
* Create New Command Release Key
*/
byte [] mCommandRelease=new byte[64];
mCommandRelease[0]=Constants.REMOTE_CMD;
mCommandData[1]=(byte)Constants.IR_KEY_RELEASE;
isUpdated= mBluetoothGattCharacteristic.setValue(mCommandData);
isWriteDone=mBluetoothGatt.writeCharacteristic(mBluetoothGattCharacteristic);
LogUtils.i("LOG", "Ble Write set is---"+ isUpdated + " Characteristics Write done"+ isWriteDone);
在上面的android 4.4.2 writeCharacteristic
代码中,对于两个命令写都是真的。
但是在android 5.1.1的情况下,它在第一次写入时为true,在接下来继续写入时它会在writeCharacteristic
现在解决方案我想在android 5.1.1中我必须等待onCharacteristicWrite
然后再写下一个命令。
如果任何一个已知的此类问题引导我,这只会发生在三星设备上吗?
答案 0 :(得分:-1)
现在,我将下一个命令放在onCharacteristicWrite
,
我发现我们不应该写这样的代码:
BluetoothGattCharacteristic.setValue(mCommandData);
boolean isWriteDone=mBluetoothGatt.writeCharacteristic(mBluetoothGattCharacteristic);
然后再次发送下一个命令:
BluetoothGattCharacteristic.setValue(mNextCommdn);
boolean isWriteDone=mBluetoothGatt.writeCharacteristic(mBluetoothGattCharacteristic);
因此我们尝试在GATT配置文件上执行两次写操作,然后只有第一次可以成功执行。
所以我在第一个命令的结果接收上写下我的下一个命令:
将在onCharacteristicWrite
中收到。