我制作了一个连接到 ble 设备并从中接收数据的应用程序。我在提示和观察部分关注了这个链接“ http://toastdroid.com/2014/09/22/android-bluetooth-low-energy-tutorial ”,它对所有 GATT 操作进行排队。我怎么做?
2782 次
2 回答
3
查看 NordicSemiconductors 开源项目Puck Central,或者更具体地说是GattManager 类,它完美地演示了如何对所有 GATT 操作进行排队。
但是,如果您不想自己处理这种低级蓝牙细节,我可以推荐很棒的库RxAndroidBle,它为您完成了很多繁重的工作。
于 2016-09-19T16:22:52.763 回答
2
要将请求排队,您可以创建一个队列类,其中包含请求的 Arraylist。
每次您要发出请求时,将其添加到队列并开始处理队列(如果尚未处理队列)。处理完当前项目后,检查是否还有要处理的项目并继续处理它们。
您可能还需要添加超时,以防其中一个请求被卡住。
关于如何使用处理程序处理队列的示例代码:
private void startProcessingQueue() {
if (queueIsRunning) {
return;
}
queueIsRunning = true;
h.postDelayed(new Runnable(){
public void run(){
processQueue();
if(queue.isEmpty()) {
queueIsRunning = false;
return;
}
h.postDelayed(this, QUEUE_PROCESSING_DELAY);
}
}, QUEUE_PROCESSING_DELAY);
}
于 2016-09-19T01:26:15.660 回答