12

如何读取BluetoothGattCharacteristic属性喜欢是特征ReadableWritable或者Notifiable

4

2 回答 2

16
    /**
     * @return Returns <b>true</b> if property is writable
     */
    public static boolean isCharacteristicWritable(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 isCharacteristicReadable(BluetoothGattCharacteristic pChar) {
        return ((pChar.getProperties() & BluetoothGattCharacteristic.PROPERTY_READ) != 0);
    }

    /**
     * @return Returns <b>true</b> if property is supports notification
     */
    public boolean isCharacteristicNotifiable(BluetoothGattCharacteristic pChar) {
        return (pChar.getProperties() & BluetoothGattCharacteristic.PROPERTY_NOTIFY) != 0;
    }
于 2014-01-23T06:26:43.953 回答
0

我遇到了类似的问题,其中示例代码仅在特征为 READ 时才有效,因为运算符“|”。如果特征是其他类型,例如通知或写入,则代码将始终将其设置为 READ。正确的代码应该如下:

if((charaProp & BluetoothGattCharacteristic.PROPERTY_READ) > 0){ 

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

(……继续其他情况)

同样,谷歌示例代码不正确。

大卫

于 2017-03-15T17:55:07.270 回答