开发IOT应用程序时尝试与BLE外围设备进行通信。使用BLE Lollipop API。
每个BluetoothGattService都可以提供不同的BluetoothGattCharacteristic,每个都代表一定的值,可以是Read,Write或Notified。
Value is communicated in various formats。但是无法知道特定特征编码的格式。
我认为这个mKeySize可能是一个解决方案但是,它既不可访问也不在BluetoothGattCharacteristic中用于确定任何值输出。
/**
* Returns the deisred key size.
* @hide
*/
/*package*/ int getKeySize() {
return mKeySize;
}
我利用以下功能来检查所需的输出。
String getStringValue (int offset)
getIntValue(int formatType, int offset)
getFloatValue(int formatType, int offset)
但它们仅在通信数据不复杂的某些情况下有用,例如
DeviceName - > (向GetStringValue)
BatteryLevel - >(getIntValue(BluetoothGattCharacteristic.FORMAT_UINT8,0))
它们很容易诱饵,但像Peripheral Preferred Connection Parameters这样的特征无处可识别。
我已经使用静态hashmap根据指定的编号检索规范名称,这些编号似乎越来越大,包括所有适应的BLE配置文件。
我想知道有没有更好的方法可以正确获取BluetoothGattCharacteristics值?
此外,有不同的方法来编写特征值,在某些地方具体值,我该如何处理这种不确定性?
查看这个android应用程序BLEScanner,在很大程度上可以执行读写操作。