title: Read characteristic value using Android BLE
body: <p>I am relatively new to BLE, android development and java. I am trying to send 20 pieces of data from a microcontroller, via BLE, to my android phone. Using the nRF connect application, I know that the services and values are being created correctly from the microcontroller.</p>
  
  <p>To read them on the android application, I am using the template BluetoothLeGatt application provided in Android Studio. It shows me the services and characteristics (for some reason it shows more services than I have actually created), however only one service shows me a value that is not NULL in the end.
   I have encoded the value 0x22 in my microcontroller, and the Android Log says gives me the following</p>
  
  <p><code>03-24 17:13:29.498 23696-23696/com.example.android.bluetoothlegatt D/BLE_VALUE_READ: [B@b95cc24</code> </p>
  
  <p>instead of 0x22. This is using the function </p>
  
  <p><code>Log.d("BLE_VALUE_READ", String.valueOf(characteristic.getValue()));</code></p>
  
  <p>I have placed the command inside this function of the template application. </p>
  
  <pre><code>public void readCharacteristic(BluetoothGattCharacteristic characteristic) {
      if (mBluetoothAdapter == null || mBluetoothGatt == null) {
          Log.w(TAG, "BluetoothAdapter not initialized");
          return;
      }
      mBluetoothGatt.readCharacteristic(characteristic);
      Log.d("CharacteristicRead", String.valueOf(characteristic)); // try to get characteristic uuid?
      Log.d("BLE_VALUE_READ", String.valueOf(characteristic.getValue())); // Try to read value
  }
  </code></pre>
  
  <p>How can I get to the actual value of that is in the service/characteristic, which is 0x22? 
  I want to read 20 values in total and then store them in an array as float values in order to ultimately use them for image reconstruction. </p>
  
  <p>Any help would be very much appreciated.</p>
  
  <p>Thank you!</p>