我正在尝试写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,这也很奇怪。使用属性意味着它支持通知,但不支持。
最佳答案
手机似乎有问题。蓝牙关闭几个小时后,它可以正常工作。