Android如何阅读BLE属性可读可写通知GATT特性

如何阅读BluetoothGattCharacteristic属性,如特征ReadableWritableNotifiable

  /** * @return Returns <b>true</b> if property is writable */ public static boolean isCharacteristicWriteable(BluetoothGattCharacteristic pChar) { return (pChar.getProperties() & (BluetoothGattCharacteristic.PROPERTY_WRITE | BluetoothGattCharacteristic.PROPERTY_WRITE_NO_RESPONSE)) != 0; } /** * @return Returns <b>true</b> if property is Readable */ public static boolean isCharacterisitcReadable(BluetoothGattCharacteristic pChar) { return ((pChar.getProperties() & BluetoothGattCharacteristic.PROPERTY_READ) != 0); } /** * @return Returns <b>true</b> if property is supports notification */ public boolean isCharacterisiticNotifiable(BluetoothGattCharacteristic pChar) { return (pChar.getProperties() & BluetoothGattCharacteristic.PROPERTY_NOTIFY) != 0; } 

我碰到类似的问题,因为操作符“|”,只有在特征为READ时,示例代码才起作用。 如果特性属于其他types(如通知或写入),代码将始终将其设置为READ。 正确的代码应该如下所示:

 if((charaProp & BluetoothGattCharacteristic.PROPERTY_READ) > 0){ } else if(charaProp | BluetoothGattCharacteristic.PROPERTY_NOTIFICATION) > 0){ } 

(…继续其他情况)

再次,谷歌示例代码是不正确的。

大卫