我正在使用BLE开发一个应用程序,我必须向外围设备发送一些命令才能获得响应。写特征代码如下:
public void writeCustomCharacteristic(String value) {
this.value = "";
if (mBluetoothAdapter == null || mBluetoothGatt == null) {
Log.w(TAG, "BluetoothAdapter not initialized");
return;
}
/*check if the service is available on the device*/
BluetoothGattService mCustomService = mBluetoothGatt.getService(SERVICE_UUID);
if (mCustomService == null) {
Log.w(TAG, "Custom BLE Service not found");
return;
}
/*get the read characteristic from the service*/
BluetoothGattCharacteristic mWriteCharacteristic = mCustomService.getCharacteristic(CHARACTERSTICS_UUID);
mWriteCharacteristic.setWriteType(BluetoothGattCharacteristic.WRITE_TYPE_DEFAULT);
mWriteCharacteristic.setValue(value.getBytes());
if (!mBluetoothGatt.writeCharacteristic(mWriteCharacteristic)) {
Log.w(TAG, "Failed to write characteristic");
}
}
写完特征后,我在下面的方法得到了回复,它返回状态代码14,官方文档中也没有提到:
public void onCharacteristicWrite(BluetoothGatt gatt, BluetoothGattCharacteristic characteristic, int status) {
System.out.println("BluetoothLeService.onCharacteristicWrite");
System.out.println(BluetoothGatt.GATT_SUCCESS + " :status: " + status);
}
答案 0 :(得分:2)
状态码14可能表示ATT错误代码14,在蓝牙核心规范v5.0,第3卷,第F部分,第3.4.1.1节表3.3中定义。
此错误代码是从远程设备发送的,因此它很可能在Android端没有错误。 ATT中的错误代码14表示"不太可能错误"。您需要调查远程设备发送此错误代码的原因。