尝试在Android API 18中读取Bluetooth Low-Energy GATT特性的值时,遇到了以下难题:检索存储在特性中的值的正确方法是什么?以及该操作应在堆栈的哪个级别进行?

在进行自己的研究时,我偶然发现自己了解两种可能的方法:

  • BluetoothGatt .readCharacteristic(BluetoothGattCharacteristic特性)
  • BluetoothGatt特性 .getValue()
    public void onClick(View v){
        byteValue = mBTValueCharacteristic.getValue();
        if ((byteValue[0] & 0x01) == 1)
            byteValue[0] = 0x00;
        else
            byteValue[0] = 0x01;
    
        mBTValueCharacteristic.setValue(byteValue);
        mBTGatt.writeCharacteristic(mBTValueCharacteristic);
    }
    

  • 上面是导致我遇到此问题的原始代码。在其中,我尝试读取特征的值,并使用按钮简单地切换其状态。

    最佳答案

    BluetoothGatt.readCharacteristic(BluetoothGattCharacteristic characteristic)
    

    此功能正在使用Bluetooth中的特征值更新您的BluetoothGattCharacteristic对象(在您的Android设备上)。
    BluetoothGattCharacteristic.getValue()
    

    此函数只是BluetoothGattCharacteristic对象的getter函数。 android和蓝牙设备之间没有任何交易。

    10-05 21:16