title: Android BLE - Connecting to multiple devices at once
body: <p>I am developing an Android Application that connects to a BLE Device and reads the Gatt Services and Gatt Characteristics. I used the BluetoothLeGatt sample project from the Android Development Site as my reference.</p>
  
  <p>So far, I am able to programmatically connect to a device (I took note of my Device's Address to be able to do this) and filter out the specific Gatt Service I want to read and that Services' specific Characteristics by taking note of the UUID of both the Service and the Characteristics. The sample provided by Google also updates whenever there's a message sent from my BLE Device to my Android Application. Overall, I have no problems at this end. </p>
  
  <p>However, upon reading up further on GATT, I found that it is possible to connect to multiple BLE devices (all slaves OR servers - being the ones that send the data) using a single Android Application (as master OR client - as the one who receives said data). So what I tried to do was to have 2 BLE Devices (different Address), took note of their Address, and then my application tries to connect to them once the application sees that those 2 addresses are up and running. </p>
  
  <p>In code, I call this function when I see my 2 BLE Devices:</p>
  
  <pre><code>private void connectToDevice(){
  
      mDeviceName = deviceList.get(currentIndex).getName();
      mDeviceAddress = deviceList.get(currentIndex).getAddress();
  
      Log.e(TAG, "connecting to device name = " + mDeviceName);
  
      mBluetoothLeService.connect(mDeviceAddress);
  }
  </code></pre>
  
  <p>Where <code>currentIndex</code> is initially set to zero. Then once I get a successful connection, I do:</p>
  
  <pre><code>private final BroadcastReceiver mGattUpdateReceiver = new BroadcastReceiver() {
      @Override
      public void onReceive(Context context, Intent intent) {
          final String action = intent.getAction();
          if (BluetoothLeService.ACTION_GATT_CONNECTED.equals(action)) {
              Log.e(TAG, "connected");
              mConnected = true;
  
              if(currentIndex &lt; deviceList.size()-1) currentIndex ++;
              connectToDevice();
  
          } 
      }
  };
  </code></pre>
  
  <p>Where I check if I still have devices to connect to in my <code>deviceList</code>, if so, increment my counter and then connect until I exhaust everything in my list. </p>
  
  <p>However, I seem to have no success at all using this method.</p>
  
  <p>Kindly note that switching connection (round robin) between my devices isn't an option. This will be an issue when I have a lot of devices and it's important to get their messages real time without delays. This said, I have to have a live connection to my devices.</p>
  
  <p>Has anyone tried to connect to multiple BLE Devices in Android? I'm not sure on how to proceed on this.</p>