Android BLE,读写特性

时间:2014-06-03 06:12:20

标签: android bluetooth-lowenergy android-bluetooth

我目前正在开发Android BLE,并且在Android BLE堆栈中遇到很多问题..

我的开发工具是Samsung Galaxy J with Android 4.3。

我想知道如何从BLE读取特征并写入特征(就像我验证我收到的数据,然后我使用BLE发送另一个数据)

我在理解Android BLE回调如何工作方面遇到了严重的问题, 我不明白这5个功能......而且手册不清楚,任何好的灵魂都可以用简单的形式解释???

onCharacteristicWrite
onCharacteristicRead
onCharacteristicChanged
onDescriptorRead
onDescriptorWrite

我目前的情况是,我设法读取onCharacteristicChanged()回调中的数据,然后我验证了收到的数据我尝试使用

发送数据
characteristics.setValue(data)
gatt.writeCharacteristic(characteristics)

但是,Android BLE堆栈没有调用onCharacteristicsWrite(),事实上,Android只是挂在那里..

我尝试谷歌关于Android BLE,没有太多的信息,只有一堆抱怨BLE堆栈的不稳定性......

2 个答案:

答案 0 :(得分:46)

来自Android BLE的每个回调都有其功能;

onDescriptorRead和onDescriptorWrite

这用于写入/读取BLE设备的配置设置,某些制造商可能需要将一些数据发送到BLE设备并通过读取确认它,然后才能连接到BLE设备

onCharacteristicWrite

这用于将数据发送到BLE设备,通常是在BLE设备的数据模式下。 键入

时会调用此回调
gatt.writeCharacteristic(characteristics);

onCharacteristicRead

这用于从BLE设备读取数据 编写此代码时会调用回调

gatt.readCharacteristic(characteristics);

onCharacteristicChanged

当您尝试使用writeCharacteristic(特征)发送数据并且BLE设备以某个值响应时,将调用此回调。

通常BLE设备的特性很少,为了简单起见,我将其命名为一些特征

  • WRITE - 写特征
  • 阅读 - 阅读特征

要说清楚,当您发送数据时,您需要使用 WRITE 特征,然后当BLE设备响应Android应用时,将调用 READ 特征

非常重要的一点是Android BLE堆栈允许您一次只写一个特征!!

示例:如果您尝试同时调用两次写入特征

gatt.writeCharacteristic(characteristics);
gatt.writeCharacteristic(characteristics);

Android BLE堆栈不会发出第二个写入特征!

答案 1 :(得分:-2)

setValue:characteristics.setValue(data)之前,您应该gatt.setCharacteristicNotification(Char,true)使用setNotification