Как читать BluetoothGattCharacteristic
Свойства, подобные характеристикам Readable
, Writable
или Notifiable
.Android Как читать свойства BLE Считываемое записываемое Уведомляемые характеристики GATT
8
A
ответ
12
/**
* @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;
}
0
Я столкнулся с аналогичной проблемой, когда образец кода ТОЛЬКО работает, когда характеристика READ из-за оператора «|». Если символ имеет другие типы, такие как «Уведомление» или «Запись», код всегда будет устанавливать его как «ЧИТАТЬ». Правильный код должен быть следующим:
if((charaProp & BluetoothGattCharacteristic.PROPERTY_READ) > 0){
} else if(charaProp | BluetoothGattCharacteristic.PROPERTY_NOTIFICATION) > 0){
}
(... Продолжить с другими случаями)
Опять же, пример кода Google не является правильным.
Дэвид
+0
Вы имеете в виду «charaProp & BluetoothGattCharacteristic.PROPERTY_NOTIFICATION», правильно? – Emil
Я действительно не знаю, почему, но в Android официального образца "если ((charaProp | BluetoothGattCharacteristic.PROPERTY_READ)> 0)" Использование '&', на мой взгляд, правильно, но '| «работает для меня. В любом случае, не могли бы вы объяснить, почему у этих свойств BluetoothGattCharacteristic есть значения, которые у них есть? Например, 0x02 для PROPERTY_READ. В любом сервисе Read - это мое первое свойство. – Krystian
Это служебный адрес, у вас есть другой адрес для каждой службы, запущенной на устройстве. –