我目前正在开发Android BLE,并且遇到了很多Android BLE堆栈的问题。
我的开发工具是搭载Android 4.3的三星Galaxy J。
我想知道如何从BLE读取特征和写入特征(就像我验证我收到了什么数据,然后使用BLE发送另一个数据)
而且我在理解Android BLE回调是如何工作的时候遇到了严重的问题,我不明白这5个functions...and的说明书不清楚,有谁能用简单的形式解释一下?
onCharacteristicWrite
onCharacteristicRead
onCharacteristicChanged
onDescriptorRead
onDescriptorWrite我目前的情况是,我设法读取了onCharacteristicChanged()回调中的数据,然后验证了接收到的数据,并尝试使用
characteristics.setValue(data)
gatt.writeCharacteristic(characteristics)但是,Android BLE堆栈并没有调用onCharacteristicsWrite(),事实上,Android只是挂在那里。
我试着用谷歌搜索Android BLE,没有太多信息,只有一堆关于BLE堆栈有多不稳定的抱怨......
发布于 2014-06-12 15:31:23
Android BLE的每个回调函数都有自己的函数;
onDescriptorRead和onDescriptorWrite
这用于写入/读取BLE设备的配置设置,某些制造商可能需要向BLE设备发送一些数据并通过读取来确认,然后才能连接到BLE设备
onCharacteristicWrite
这用于将数据发送到BLE设备,通常在BLE设备的数据模式下。此回调在您键入以下内容时调用
gatt.writeCharacteristic(characteristics);onCharacteristicRead
这用于从BLE设备读取数据当您编写此代码时会调用回调
gatt.readCharacteristic(characteristics);onCharacteristicChanged
当您尝试使用writeCharacteristic(特征)发送数据,而BLE设备使用某个值进行响应时,将调用此回调。
通常,BLE设备有几个特征,为了简单起见,我列举了几个特征
为了清楚起见,当你发送数据时,你需要使用WRITE characteristics,然后当BLE设备响应时,安卓应用程序将调用READ characteristics
需要注意的一个非常重要的点是,Android BLE堆栈允许您一次只写入一个特征!!
示例:如果您尝试同时调用两次写入特征
gatt.writeCharacteristic(characteristics);
gatt.writeCharacteristic(characteristics);Android BLE堆栈将不会发出第二次写入特征!
发布于 2017-05-01 22:08:04
在使用setValue:characteristics.setValue(data)之前,您应该使用gatt.setCharacteristicNotification(Char,true) to setNotification。
https://stackoverflow.com/questions/24008249
复制相似问题