我正在尝试写BLE设备的特征。根据文档,该特性具有不同用途的读写能力。我已经从阅读中获得成功,但是在写时遇到了一些问题。每次我尝试对其进行写操作时,onWriteCharacterstic函数都会到达状态码6,该状态码应为GATT_REQUEST_NOT_SUPPORTED。

我不确定是什么原因造成的。我向我的应用程序添加了所有必要的蓝牙许可,并且文档指出它可以写。

我的代码看起来像这样(简化):

@Override
public void onServicesDiscovered( BluetoothGatt gatt, int status ){
    if( status == BluetoothGatt.GATT_SUCCESS ){
        mGatt = gatt;
        mService= gatt.getService(UUID_SERVICE);
        mChar = mService.getCharacteristic(UUID_CHAR);
        byte[] value = {...}
        mChar.setValue(value);
        boolean retval = mGatt.writeCharacteristic(mChar); //retval is true
    }
}

@Override
public void onCharacteristicWrite (BluetoothGatt gatt, BluetoothGattCharacteristic characteristic, int status)
{
... //status here is 6
}


我还对功能的特性getProperties()和getPermissions()进行了一些检查。 getPermissions()函数返回0,这与android文档中的任何内容都不匹配,而getProperties()返回10,这也很奇怪。使用属性意味着它支持通知,但不支持。

最佳答案

手机似乎有问题。蓝牙关闭几个小时后,它可以正常工作。

10-04 16:05