What is the proper method for reading a GATT characteristic in Android?
-
21-12-2019 - |
Question
In attempting to read the value of a Bluetooth Low-Energy GATT characteristic in the Android API 18, I came across the following dilemma: What is the proper way to retrieve the value stored in a characteristic? And at which level of the stack should this action take place?
In conducting my own research, I stumbled upon what I understand are two possible methods:
- BluetoothGatt.readCharacteristic(BluetoothGattCharacteristic characteristic)
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); }
Above is the original code which led me to this issue. In it, I attempt to read the value of a characteristic, and simply toggle its state using a button.
Solution
BluetoothGatt.readCharacteristic(BluetoothGattCharacteristic characteristic)
This function is updating your BluetoothGattCharacteristic object (on your Android device) using characteristic value from the Bluetooth .
BluetoothGattCharacteristic.getValue()
This function is just a getter function of the BluetoothGattCharacteristic object. There is not any transaction between android and the bluetooth device.