Android BLE,读写特性

标签 android bluetooth-lowenergy android-bluetooth

我目前正在开发 Android BLE,在 Android BLE 堆栈方面遇到了很多问题..

我的开发工具是搭载 Android 4.3 的三星 Galaxy J。

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

我在理解 Android BLE 回调如何工作时遇到了严重问题, 这5个功能我看不懂……而且说明书也不清楚,哪位好心人能用简单的形式解释一下???

onCharacteristicWrite
onCharacteristicRead
onCharacteristicChanged
onDescriptorRead
onDescriptorWrite

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

characteristics.setValue(data)
gatt.writeCharacteristic(characteristics)

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

我尝试在谷歌上搜索有关 Android BLE 的信息,没有太多信息,只有一堆关于 BLE 堆栈不稳定的提示......

最佳答案

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

onDescriptorRead 和 onDescriptorWrite

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

onCharacteristicWrite

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

gatt.writeCharacteristic(characteristics);

onCharacteristicRead

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

gatt.readCharacteristic(characteristics);

onCharacteristicChanged

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

通常 BLE 设备的特性很少,为了简单起见,我列举几个特性

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

明确一点,当你发送数据时,你需要使用WRITE特性,然后当BLE设备响应时Android应用会调用READ特性

需要注意的一个非常重要的一点是,Android BLE 堆栈允许您一次只编写一个特性!!

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

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

Android BLE 栈不会发出第二次写入特性!

关于Android BLE,读写特性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24008249/

相关文章:

ios - 适用于 Iphone 4s 的蓝牙 LE 应用程序的后台时间问题

android - android 中的斑马扫描仪集成

Android - ICS 4.0 中的 MediaPlayer 缓冲区大小

android-3.0-honeycomb - 使android 2.2版本的应用兼容android 3.0

java - 在 ViewPager 中使用多个图像

Android 应用程序,通过 UART 通过 BLE 模块接收微 Controller 发送的数据

javascript - 如何将准确的时间戳信息从 Android 地理定位应用程序发送到 Postgresql 数据库?

ios - CBPeripheral setNotifyValue WithResponse 不调用 didWriteValueForCharacteristic

bluetooth - 解释来自没有发布 GATT 配置文件的 BLE 设备的数据

java - 蓝牙设备连接问题