我目前正在开发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堆栈的不稳定性......
答案 0 :(得分:46)
来自Android BLE的每个回调都有其功能;
这用于写入/读取BLE设备的配置设置,某些制造商可能需要将一些数据发送到BLE设备并通过读取确认它,然后才能连接到BLE设备
这用于将数据发送到BLE设备,通常是在BLE设备的数据模式下。 键入
时会调用此回调gatt.writeCharacteristic(characteristics);
这用于从BLE设备读取数据 编写此代码时会调用回调
gatt.readCharacteristic(characteristics);
当您尝试使用writeCharacteristic(特征)发送数据并且BLE设备以某个值响应时,将调用此回调。
通常BLE设备的特性很少,为了简单起见,我将其命名为一些特征
要说清楚,当您发送数据时,您需要使用 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
。