本文简单介绍如何判断蓝牙BLE4.0的 BluetoothGattCharacteristic 属性
1、先看UUID定义;
2、BluetoothGattCharacteristic的属性定义;
/**
- Characteristic proprty: Characteristic is broadcastable.
- 可以广播,二进制0001
*/
public static final int PROPERTY_BROADCAST = 0x01;
/** - Characteristic property: Characteristic is readable.
- 可读,二进制0010
*/
public static final int PROPERTY_READ = 0x02;
/** - Characteristic property: Characteristic can be written without response.
- 只可写,二进制0100
*/
public static final int PROPERTY_WRITE_NO_RESPONSE = 0x04;
/** - Characteristic property: Characteristic can be written.
- 可写,二进制1000
*/
public static final int PROPERTY_WRITE = 0x08;
/** - Characteristic property: Characteristic supports notification
- 支持通知,二进制0001 0000
*/
public static final int PROPERTY_NOTIFY = 0x10;
/** - Characteristic property: Characteristic supports indication
- 支持指示,二进制0010 0000
*/
public static final int PROPERTY_INDICATE = 0x20;
/** - Characteristic property: Characteristic supports write with signature
- 支持写签名,二进制0100 0000
*/
public static final int PROPERTY_SIGNED_WRITE = 0x40;
/** - Characteristic property: Characteristic has extended properties
- 可扩展属性,二进制1000 0000
*/
public static final int PROPERTY_EXTENDED_PROPS = 0x80;
3、由二进制得出其属性由八个标志位表示,拥有的属性值是相加的,所以可以用 & 方法判断其属性;
// 可读 if ((charaProp & BluetoothGattCharacteristic.PROPERTY_READ) > 0) { } // 可写,注:要 & 其可写的两个属性 if ((charaProp & BluetoothGattCharacteristic.PROPERTY_WRITE_NO_RESPONSE) > 0 || (charaProp & BluetoothGattCharacteristic.PROPERTY_WRITE) > 0) { } // 可通知,可指示 if ((charaProp & BluetoothGattCharacteristic.PROPERTY_NOTIFY) > 0 || (charaProp & BluetoothGattCharacteristic.PROPERTY_INDICATE) > 0) { }
欢迎加入“六度交流”
QQ群:174254613