在为 IOT 开发应用程序时,尝试与 BLE 外围设备进行通信。使用 BLE Lollipop API。
每个BluetoothGattService 可以提供不同的BluetoothGattCharacteristic,每个代表一个特定的值,可以是Read、Write 或Notified。
价值以各种形式传达。但是没有办法知道特定特征的编码格式。
我认为这个 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)
但它们仅在通信数据不复杂的某些情况下有用,例如
设备名称-> (getStringValue)
BatteryLevel ->(getIntValue(BluetoothGattCharacteristic.FORMAT_UINT8,0))
它们很容易成为诱饵,但 外围首选连接参数等特性却无处可寻。
我已经使用静态哈希图根据分配的编号检索规范名称,该编号似乎越来越大,以包括所有适应的 BLE 配置文件。
我想知道是否有更好的方法可以适当地获取 BluetoothGattCharacteristics 值?
另外,有不同的方式来写特征值和在某些地方特定值,我应该如何处理这种不确定性?
看看这个 android 应用程序BLEScanner,在很大程度上可以执行读写。