title: Android Bluetooth LE - Read Characteristics not working on Samsung
body: <p>I am trying to read the characteristics from a BLE device continously .</p>
  
  <p>I have created a Runnable in my service class:</p>
  
  <pre><code>private class BackgroundRunnableForRead implements Runnable
      {
  
  
          private volatile  boolean isRunning = true ;
          @Override
          public void run() {
              try {
              BluetoothLeService.this.backgroundRunID = Thread.currentThread().getId();
              while( isRunning) {
  
                      List&lt;BluetoothGattService&gt; gattServices = BluetoothLeService.this.getSupportedGattServices();
  
                      if (gattServices != null &amp;&amp; gattServices.size() &gt; 0) {
                          BluetoothGattCharacteristic characteristic = getCharacteristic(gattServices);
  
                          if (characteristic != null &amp;&amp; (characteristic.getProperties() &amp; 2) &gt; 0) {
                              BluetoothLeService.this.readCharacteristic(characteristic);
                          }
                      }
                  }
              }
              catch(Exception e)
              {
                  isRunning= false;
                  e.printStackTrace();
              }
  
          }
  
          public void kill()
          {
              this.isRunning = false;
          }
      }
  </code></pre>
  
  <p>And on successful discovery of services i am calling:</p>
  
  <pre><code>public void startReadingCharacteristics()
      {
          System.out.println("BluetoothLeService.startReadingCharacteristics");
          this.mBackgroundRunnable = new BackgroundRunnableForRead();
          mReadThread =  new Thread(mBackgroundRunnable);
          mReadThread.start();
  
      }
  </code></pre>
  
  <p>And this is my on characterics read callback - </p>
  
  <pre><code>public void  onCharacteristicRead(BluetoothGatt gatt,
                                           BluetoothGattCharacteristic characteristic,
                                           int status) {
              System.out.println("BluetoothLeService.onCharacteristicRead" + status);
              if (status == BluetoothGatt.GATT_SUCCESS) {
                  broadcastUpdate(ACTION_DATA_AVAILABLE, characteristic);
              }
  
          }
  </code></pre>
  
  <p>The application works fine on Nexus 5 , Nexus 4 and Motorola G .</p>
  
  <p>When i am running this code on Samsung S6 it does not work, <code>onCharacteristicRead()</code> is not called .</p>
  
  <p>I read that making sequential calls to <code>readCharacteristics()</code> can cause problems as it waits for onCharacteristicRead to execute.</p>