title: Bluetooth Connection failed "java.io.IOException: read failed, socket might closed or timeout, read ret: -1"
body: <p>I am trying to connect devices through my app installed in Nexus 5.I want to make an app like <a href="https://play.google.com/store/apps/details?id=pip.UIofPIP&amp;hl=en" rel="nofollow noreferrer">rainbow contacts</a> in android. In my app I aim to connect to another device through Bluetooth and transfer set of contacts or files.
  I followed <a href="https://stackoverflow.com/questions/18657427/ioexception-read-failed-socket-might-closed-bluetooth-on-android-4-3?rq=1">this question</a>, but the workaround mentioned there is not working for me
  <a href="http://pastecode.org/index.php/view/61117096" rel="nofollow noreferrer">Here</a> is my full code.
  This is the code snippet from my application where I have tried to get the socket and make connections.</p>
  
  <p><strong>I am able to get through pairing device dialog ,but when i trying to paired then error is raised</strong></p>
  
  <pre><code>//to create socket
  if (secure) {
              bluetoothSocket = device.createRfcommSocketToServiceRecord(uuid);
          } else {
              bluetoothSocket = device.createInsecureRfcommSocketToServiceRecord(uuid);
          }
  //connection establishment
  try {
  
                  bluetoothSocket.connect();
                  success = true;
                  break;
              } catch (IOException e) {
                  //try the fallback
                  try {
                      Class&lt;?&gt; clazz = tmp.getRemoteDevice().getClass();
                      Class&lt;?&gt;[] paramTypes = new Class&lt;?&gt;[] {Integer.TYPE};
                      Method m = clazz.getMethod("createRfcommSocket", paramTypes);
                      Object[] params = new Object[] {Integer.valueOf(1)};
                      bluetoothSocket  = (BluetoothSocket) m.invoke(tmp.getRemoteDevice(), params);
                      Thread.sleep(500);
                      bluetoothSocket.connect();
                      success = true;
                      break;
                  } catch (FallbackException e1) {
                      Log.w("BT", "Could not initialize FallbackBluetoothSocket classes.", e);
                  } catch (InterruptedException e1) {
                      Log.w("BT", e1.getMessage(), e1);
                  } catch (IOException e1) {
                      Log.w("BT", "Fallback failed. Cancelling.", e1);
                  }
              }
  </code></pre>
  
  <p>Error I am getting </p>
  
  <pre><code>09-06 13:44:57.247  27860-27860/com.example.gauravdubey.myapplication I/BT﹕ Attempting to connect to Protocol: 00001101-0000-1000-8000-00805f9b34fb
  09-06 13:44:57.247  27860-27860/com.example.gauravdubey.myapplication W/BluetoothAdapter﹕ getBluetoothService() called with no BluetoothManagerCallback
  09-06 13:44:57.247  27860-27860/com.example.gauravdubey.myapplication D/BluetoothSocket﹕ connect(), SocketState: INIT, mPfd: {ParcelFileDescriptor: FileDescriptor[56]}
  09-06 13:44:58.667  27860-27860/com.example.gauravdubey.myapplication W/BluetoothAdapter﹕ getBluetoothService() called with no BluetoothManagerCallback
  09-06 13:44:58.667  27860-27860/com.example.gauravdubey.myapplication D/BluetoothSocket﹕ connect(), SocketState: INIT, mPfd: {ParcelFileDescriptor: FileDescriptor[59]}
  09-06 13:45:03.267  27860-27860/com.example.gauravdubey.myapplication W/BT﹕ Fallback failed. Cancelling.
      java.io.IOException: read failed, socket might closed or timeout, read ret: -1
              at android.bluetooth.BluetoothSocket.readAll(BluetoothSocket.java:505)
              at android.bluetooth.BluetoothSocket.waitSocketSignal(BluetoothSocket.java:482)
              at android.bluetooth.BluetoothSocket.connect(BluetoothSocket.java:324)
              at com.example.gauravdubey.myapplication.BluetoothConnector$FallbackBluetoothSocket.connect(BluetoothConnector.java:198)
              at com.example.gauravdubey.myapplication.BluetoothConnector.connect(BluetoothConnector.java:62)
              at com.example.gauravdubey.myapplication.ConnectThread.run(ConnectThread.java:101)
              at com.example.gauravdubey.myapplication.MainActivity$1.onItemClick(MainActivity.java:288)
              at android.widget.AdapterView.performItemClick(AdapterView.java:299)
              at android.widget.AbsListView.performItemClick(AbsListView.java:1113)
              at android.widget.AbsListView$PerformClick.run(AbsListView.java:2911)
              at android.widget.AbsListView$3.run(AbsListView.java:3645)
              at android.os.Handler.handleCallback(Handler.java:733)
              at android.os.Handler.dispatchMessage(Handler.java:95)
              at android.os.Looper.loop(Looper.java:136)
              at android.app.ActivityThread.main(ActivityThread.java:5001)
              at java.lang.reflect.Method.invokeNative(Native Method)
              at java.lang.reflect.Method.invoke(Method.java:515)
              at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
              at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
              at dalvik.system.NativeStart.main(Native Method)
  09-06 13:45:03.267  27860-27860/com.example.gauravdubey.myapplication V/connectThread﹕ Could not connect to device: B0:D0:9C:8B:A4:47
  09-06 13:45:03.267  27860-27860/com.example.gauravdubey.myapplication I/Choreographer﹕ Skipped 361 frames!  The application may be doing too much work on its main thread.
  </code></pre>
  
  <p>So what i am doing wrong ? any help would be appreciated </p>