BLE通知会冻结所有其他已读取特征的活动

时间:2018-09-30 05:49:46

标签: android bluetooth-lowenergy

启用通知后
 BluetoothGatt gatt= leBluetoothService.getmBluetoothGatt();
        gatt.setCharacteristicNotification(chracteristicId, enable);
        try {
            Thread.sleep(1000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }



        BluetoothGattDescriptor descriptor = chracteristicId.getDescriptor(
                UUID.fromString(SampleGattAttributes.CLIENT_CHARACTERISTIC_CONFIG));
        descriptor.setValue(BluetoothGattDescriptor.ENABLE_NOTIFICATION_VALUE);
        gatt.writeDescriptor(descriptor);

我无法从任何其他特征读取数据。它冻结了所有特征。为什么会这样呢?启用通知后,它也不会从该特征读取数据。

编辑:

在调用设置的通知后,所有读取和通知开始堆叠,而不是执行它。我对每个操作都使用了同步静态方法。

  public static void AddOperation(Operation opr) {
        operations.add(opr) ;
        Log.d("operations",String.valueOf(operations.size()));
        if (currentOperation ==null){
            currentOperation = opr;

            request(opr);


        }
    }

    private static synchronized void request(Operation operation) {
        Log.d("kala", ""+operation);
        operation.execute();


    }
    public static synchronized void operationCompleted() {
        currentOperation = null;
        if (operations.peek() != null) {
            currentOperation = operations.poll();
            Log.d("kalaa", ""+currentOperation);
            currentOperation.execute();
        }

    }

所有读取操作均执行良好,但如果特性已通知属性,则操作开始堆叠。有什么方法可以查看设置通知的时间?

0 个答案:

没有答案