@SuppressLint("MissingPermission") // We check before this is called
    public void readCharacteristic(final BluetoothGattCharacteristic characteristic) {
        if (mBluetoothAdapter == null || mBluetoothGatt == null) {
            Log.w(TAG, "BluetoothAdapter not initialized");
            return;
        }
        mBluetoothGatt.readCharacteristic(characteristic);
    }
Request a read on a given {@code BluetoothGattCharacteristic}. The read result is reported
asynchronously through the {@code BluetoothGattCallback#onCharacteristicRead(android.bluetooth.BluetoothGatt, android.bluetooth.BluetoothGattCharacteristic, int)}
callback.

@param characteristic The characteristic to read from.
sample_app/src/main/java/uk/co/alt236/btlescan/services/BluetoothLeService.java