BLE 连接设备与交换数据问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了BLE 连接设备与交换数据问题相关的知识,希望对你有一定的参考价值。

参考技术A 最近在进行安卓APP的开发,需要通低功耗蓝牙与设备进行交互,刚刚才可以成功交互数据,在这里记录一些遇到的主要的问题。

之前没有蓝牙开发的经验,所以尝试着用传统蓝牙的方式,用过BluetoothSocket与设备连接,总是报 IOException.

低功耗蓝牙与传统蓝牙的连接方式不同,低功耗蓝牙是通过BluetoothGatt,以service和characteristic的方式来交互数据的。

使用Gatt时,想要获取service或者characteristic,都是需要先知道与之对应的Uuid,这个就只能与硬件工程师做好沟通。
在与设备交互时,先要对可接受通知的characteristic a进行setCharacteristicNotification,然后对可写的characteristic b写入数据,设备收到b写入了数据,回调onCharacteristicChanged函数,返回characteristic c给APP,c里包含APP请求的数据。
做好这些事情后,向设备的某一个characteristic写数据时,onCharacteristicWrite函数成功的被回调,但是onCharacteristicChanged函数没有被回掉。这说明虽然成功的在b中写入了数据,但设备并没有调用回调函数。解决办法是在setCharacteristicNotification中订阅这个characteristic的所有descriptor。

以上是关于BLE 连接设备与交换数据问题的主要内容,如果未能解决你的问题,请参考以下文章

BLE 设备在完美运行数周后停止与 Android 连接

安卓BLE知识及EasyBle的使用

与华为手机的蓝牙低功耗(BLE)设备连接问题[关闭]

与 BLE 设备保持连接的 Android 应用

GATT连接后如何与BLE设备配对

如何使用 Bluez5.50 使用 BLE 连接加密数据