BLE如何从设备下载所有数据?

时间:2018-02-22 09:04:36

标签: android bluetooth-lowenergy

我正在构建一个从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 个答案:

答案 0 :(得分:1)

按顺序调用readCharacteristic(无延迟)将不起作用。

在启动第二个电话之前,您必须等待onCharacteristicRead第一个电话。

使用connectGatt连接BLE设备时,必须提供BluetoothGattCallback。在BluetoothGattCallback对象中实现onCharacteristicRead,它将在每个readCharacteristic实际完成后调用。在该函数内部,您应该读取队列中的下一个特征,直到没有。