本文简单介绍如何判断蓝牙BLE4.0的 BluetoothGattCharacteristic 属性
1、先看UUID定义;
/**
* 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 ;
* 可以广播,二进制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) {
}