Android Ble写

时间:2016-09-15 07:56:28

标签: android bluetooth-lowenergy

针对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然后再写下一个命令。

如果任何一个已知的此类问题引导我,这只会发生在三星设备上吗?

1 个答案:

答案 0 :(得分:-1)

现在,我将下一个命令放在onCharacteristicWrite

中来解决问题

我发现我们不应该写这样的代码:

BluetoothGattCharacteristic.setValue(mCommandData);
boolean isWriteDone=mBluetoothGatt.writeCharacteristic(mBluetoothGattCharacteristic);
然后再次发送下一个命令:

BluetoothGattCharacteristic.setValue(mNextCommdn);
boolean isWriteDone=mBluetoothGatt.writeCharacteristic(mBluetoothGattCharacteristic);

因此我们尝试在GATT配置文件上执行两次写操作,然后只有第一次可以成功执行。

所以我在第一个命令的结果接收上写下我的下一个命令: 将在onCharacteristicWrite中收到。