Каков надлежащий метод для чтения характеристики GATT в Android?

При попытке прочитать значение характеристики Bluetooth с низким энергопотреблением GATT в Android API 18 я столкнулся с следующей дилеммой: каков правильный способ получить значение, сохраненное в характеристике? И на каком уровне стека должно произойти это действие?

При проведении моих собственных исследований я наткнулся на то, что я понимаю, на два возможных метода:

  • BluetoothGatt.readCharacteristic(характеристика BluetoothGattCharacteristic)
  • BluetoothGattCharacteristic.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);
    }
    

Выше был исходный код, который привел меня к этой проблеме. В нем я пытаюсь прочитать значение признака и просто переключаю его состояние с помощью кнопки.

Ответ 1

BluetoothGatt.readCharacteristic(BluetoothGattCharacteristic characteristic)

Эта функция обновляет ваш объект BluetoothGattCharacteristic (на вашем устройстве Android), используя значение признака из Bluetooth.

BluetoothGattCharacteristic.getValue()

Эта функция является только функцией getter объекта BluetoothGattCharacteristic. Существует никаких транзакций между Android и Bluetooth-устройством.