El conector Bluetooth de Android se bloquea

Estoy teniendo un problema donde cuando llamo sock.connect () sólo cuelga indefinidamente. No hay excepción ni tiempo de espera.

try { Method m = dev.getClass().getMethod("createRfcommSocket", new Class[] {int.class}); sock = (BluetoothSocket) m.invoke(dev, 1); sock.connect(); Thread.sleep(100); in = sock.getInputStream(); out = sock.getOutputStream(); } catch(ConnectTimeoutException ex) { return false; } catch(IOException ex) { return false; } catch(Exception ex) { return false; } 

La razón es que otra aplicación está utilizando el dispositivo bluetooth ya. Estoy tratando de hacer que mi conexión no y por lo menos lanzar una excepción o algo que me haga saber que el dispositivo ya está en uso por otra aplicación.

¿Alguna otra sugerencia para abordar esto?

Gracias.

¿Por qué llamas a Thread.Sleep? BluetoothSocket.connect es una llamada de bloqueo. Esto significa que no se llamará Thread.Sleep hasta que connect devuelve una conexión satisfactoria o lanza una excepción.

¿Estás llamando a esto en una actividad? Como esto colgará su actividad. Usted debe tener 3 hilos para manejar bluetooth, un hilo aceptar, conectar el hilo y un hilo conectado. Al igual que en el ejemplo de BluetoothChat aquí:

http://developer.android.com/resources/samples/BluetoothChat/index.html

  • Android: conexión a varios dispositivos bluetooth sin emparejamiento
  • Recibir audio vía Bluetooth en Android
  • Android detectar Bluetooth desconectar inmediatamente Máximo 2 segundos
  • Android Bluetooth IOException: conexión rechazada
  • ¿Cómo crear un socket Android RFCOMM sin ninguna entrada del usuario?
  • Aplicación de congelación de socket Android Bluetooth
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.