Android BLE,读写特性

Tim*_*Tim 28 android bluetooth-lowenergy android-bluetooth

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

我的开发工具是三星Galaxy J和Android 4.3.

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

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

onCharacteristicWrite
onCharacteristicRead
onCharacteristicChanged
onDescriptorRead
onDescriptorWrite
Run Code Online (Sandbox Code Playgroud)

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

characteristics.setValue(data)
gatt.writeCharacteristic(characteristics)
Run Code Online (Sandbox Code Playgroud)

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

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

use*_*060 50

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

onDescriptorRead和onDescriptorWrite

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

onCharacteristicWrite

这用于将数据发送到BLE设备,通常在BLE设备的数据模式下.键入时会调用此回调

gatt.writeCharacteristic(characteristics);
Run Code Online (Sandbox Code Playgroud)

onCharacteristicRead

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

gatt.readCharacteristic(characteristics);
Run Code Online (Sandbox Code Playgroud)

onCharacteristicChanged

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

通常BLE设备具有很少的特性,为了简单起见,我列举了一些特性

  • - 写特征
  • - 读特征

为清楚起见,当您发送数据时,您将需要使用WRITE特性,然后当BLE设备响应Android应用程序时将调用READ特性

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

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

gatt.writeCharacteristic(characteristics);
gatt.writeCharacteristic(characteristics);
Run Code Online (Sandbox Code Playgroud)

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

  • @Marie Amida延迟取决于ble设备硬件的缓冲处理能力,这种方式不是全面的,你可能不得不在以后的任何时候改变延迟,所以最好采用`synchronized`方式,我会建议 (2认同)