2

在为 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,在很大程度上可以执行读写。

4

0 回答 0