从蓝牙低功耗 GATT 特性中检索大的 32 位无符号整数

Posted

技术标签:

【中文标题】从蓝牙低功耗 GATT 特性中检索大的 32 位无符号整数【英文标题】:Retrieving a large 32 bit unsigned integer from a Bluetooth low energy GATT characteristic 【发布时间】:2013-07-31 10:46:56 【问题描述】:

我正在尝试使用我的BluetoothGattCharacteristic 实例的getIntValue 方法从蓝牙4.0 特性中检索一个非常大(可能是2^32 - 1)的无符号32 位整数。

我将FORMAT_UINT32 传递给getIntValue,但是因为它返回一个Integer,所以它不能返回一个大于2^31 - 1 的数字。当我尝试获取大于 2^31 - 1 的值时,它错误地返回负整数。

如果getIntValue 不可能返回无符号的 32 位整数,那么接受 FORMAT_UINT32 的意义何在?有什么我遗漏的吗?

我唯一的选择是使用getValue() 并手动将其转换为long

【问题讨论】:

【参考方案1】:

看起来这对我有用:

long value = characteristic.getIntValue(BluetoothGattCharacteristic.FORMAT_UINT32, 0) & 0x00000000ffffffffL;

【讨论】:

以上是关于从蓝牙低功耗 GATT 特性中检索大的 32 位无符号整数的主要内容,如果未能解决你的问题,请参考以下文章

在 Android 低功耗蓝牙上读取 GATT 属性的问题

蓝牙低功耗profile:ATT和GATT(转载)

低功耗蓝牙 GATT 配置文件测量解析值

GATT特性BLE读取速度慢

Android BLE低功耗蓝牙开发极简系列(二)之读写操作

如何在 Windows 桌面应用程序中配对和搜索手机上的蓝牙低功耗服务?