【发布时间】:2014-02-13 13:44:34
【问题描述】:
如何读取BluetoothGattCharacteristic 属性,例如特征Readable、Writable 或Notifiable。
【问题讨论】:
标签: android bluetooth-lowenergy gatt characteristics
如何读取BluetoothGattCharacteristic 属性,例如特征Readable、Writable 或Notifiable。
【问题讨论】:
标签: android bluetooth-lowenergy gatt characteristics
/**
* @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;
}
【讨论】:
我遇到了类似的问题,由于运算符“|”,示例代码仅在特征为 READ 时才有效。如果特征是其他类型,例如通知或写入,则代码将始终将其设置为 READ。正确的代码应该如下:
if((charaProp & BluetoothGattCharacteristic.PROPERTY_READ) > 0){
} else if(charaProp | BluetoothGattCharacteristic.PROPERTY_NOTIFICATION) > 0){
}
(...继续其他情况)
同样,谷歌示例代码不正确。
大卫
【讨论】: