BLE如何从设备下载所有数据?
Posted
技术标签:
【中文标题】BLE如何从设备下载所有数据?【英文标题】:BLE how to downlaod all data from device? 【发布时间】:2018-02-22 09:04:35 【问题描述】:我正在构建一个从 BLE 设备下载所有信息的应用。此 BLE 设备有两个特征可供读取。
我应该读取这些特性,直到 BLE 设备有数据存储。所以我创建了一个循环,等到BLE设备有数据,我调用方法readCharacteristic。
所以我创建了一个具有我特征的队列来阅读。这是代码:
if(ReadQueue!= null && ReadQueue.size()>0)
new Thread(new Runnable()
@Override
public void run()
int index =0;
for(index=0; index < ReadQueue.size(); index++)
mGatt.readCharacteristic(ReadQueue.get(index));
).start();
但是使用这段代码,我只能读取第一个特征,如果我在这行之后调用 sleep,我可以读取所有特征。
mGatt.readCharacteristic(ReadQueue.get(index));
现在,有没有办法循环下载所有特征???
【问题讨论】:
【参考方案1】:按顺序(无延迟)调用 readCharacteristic 将不起作用。
您必须等待onCharacteristicRead 才能拨打第二个电话。
当您使用 connectGatt 连接到 BLE 设备时,您必须提供 BluetoothGattCallback。在该 BluetoothGattCallback 对象中实现 onCharacteristicRead,它将在每个 readCharacteristic 实际完成后调用。在该函数中,您应该读取队列中的下一个特征,直到没有。
【讨论】:
我怎么能等到 onCharacteristicRead 在启动第二个代码之前完成你的代码??? @bircastri 编辑以添加更多描述。如果您可以展示如何维护 ReadQueue 对象,也许我可以写一个简短的示例。以上是关于BLE如何从设备下载所有数据?的主要内容,如果未能解决你的问题,请参考以下文章