队列Android Gatt操作

时间:2016-09-16 13:31:04

标签: android android-activity android-bluetooth android-ble

我创建了一个应用程序连接到ble设备并从中接收数据。我正在关注此链接" http://toastdroid.com/2014/09/22/android-bluetooth-low-energy-tutorial"在提示和观察部分,它说要排队所有关贸总协定的行动。我怎么做?

2 个答案:

答案 0 :(得分: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);
}

答案 1 :(得分:1)

查看NordicSemiconductors开源项目Puck Central,或者更具体地说是GattManager class,他们完美地演示了如何对所有GATT操作进行排队。

如果你不想自己处理这种低级别的蓝牙特性,我可以推荐一款很棒的图书馆RxAndroidBle,它可以帮助你解决很多问题。