Android Bluetooth no muestra diálogo de emparejamiento

Estoy intentando emparejar mi HTC myTouch 3G con un dispositivo de Bluetooth que arroje datos vía SPP al teléfono. He mirado los ejemplos de Chat y los encontré carentes de lo que necesito debido al hecho de las altas velocidades de datos que necesitaré y el ejemplo de Chat bloquea en el subproceso de interfaz de usuario. Pero dicho mi principal problema es cuando intento conectar un dispositivo que no está actualmente emparejado, la API de Bluetooth dice que se abrirá automáticamente un cuadro de diálogo si el dispositivo requiere un código de emparejamiento. Esto nunca sucede. ¿Cómo me aseguro de que lo haga? Aquí está mi código …

BluetoothSocket btSocket; String macAddress = data.getStringExtra("mac"); Log.d(TAG, "Found Device " + macAddress); // Get the Bluetooth adapter on the device BluetoothAdapter bta = ((MyApplication)this.getApplication()).getBtState(); BluetoothDevice btDevice = bta.getRemoteDevice(macAddress); BluetoothSocket tmp = null; try { tmp = btDevice.createRfcommSocketToServiceRecord(UUID.fromString("00001101-0000-1000-8000-00805F9B34FB")); } catch (IOException e) { e.printStackTrace(); } if (tmp != null) { btSocket = tmp; bta.cancelDiscovery(); try { btSocket.connect(); } catch (IOException e) { try { Log.e(TAG, "------------- Close IOException"); btSocket.close(); } catch (IOException e2) { Log.e(TAG, "unable to close() socket during connection failure", e2); } } } 

Aquí está el error que tengo también:

 ERROR/BluetoothEventLoop.cpp(149): event_filter: Received signal org.bluez.Adapter:DeviceCreated from /org/bluez/14284/hci0 ERROR/BluetoothEventLoop.cpp(149): event_filter: Received signal org.bluez.Adapter:PropertyChanged from /org/bluez/14284/hci0 ERROR/BluetoothEventLoop.cpp(149): event_filter: Received signal org.bluez.Device:PropertyChanged from /org/bluez/14284/hci0/dev_00_02_5B_00_A5_0B ERROR/BluetoothEventLoop.cpp(149): event_filter: Received signal org.bluez.Device:PropertyChanged from /org/bluez/14284/hci0/dev_00_02_5B_00_A5_0B DEBUG/BluetoothService(149): updateDeviceServiceChannelCache(00:02:5B:00:A5:0B) DEBUG/BluetoothService(149): uuid(application): 00001101-0000-1000-8000-00805f9b34fb 1 DEBUG/BluetoothService(149): Making callback for 00001101-0000-1000-8000-00805f9b34fb with result 1 VERBOSE/BluetoothEventRedirector(13691): Received android.bleutooth.device.action.UUID ERROR/MainApp(14272): ------------- Close IOException ERROR/BluetoothService.cpp(149): stopDiscoveryNative: D-Bus error in StopDiscovery: org.bluez.Error.Failed (Invalid discovery session) ERROR/BluetoothEventLoop.cpp(149): event_filter: Received signal org.bluez.Device:PropertyChanged from /org/bluez/14284/hci0/dev_00_02_5B_00_A5_0B VERBOSE/BluetoothEventRedirector(13691): Received android.bleutooth.device.action.UUID 

Una cosa extraña acerca de esto que parece un error, es que si ejecuto este código y falla, a continuación, apagar el Bluetooth y volver a encender el dispositivo se muestra como emparejado en la pila. Por lo que entiendo el chip Bluetooth en el myTouch es 2.1 y el chip que estamos tratando de conectarse a es 1.2

Actualmente estoy teniendo algunos problemas con Bluetooth (usando SPP) en algunos teléfonos. Una cosa que usted podría intentar, es utilizar la reflexión al crear el zócalo.

He utilizado un Nexus S mientras desarrollaba mi servicio Bluetooth (en realidad estoy usando el método listenUsingRfcommWithServiceRecord) funciona bien en ese teléfono. También funciona bien en SonyEricsson Xperia ARC y SonyEricsson X10 Mini Pro. No funcionó en HTC Wildfire (2.2.1), HTC Legend (2.2) ni en Samsung Galaxy S (2.2.1).

También debo mencionar que el dispositivo que estoy recibiendo datos de los usos Bluetooth 1.2 también, como el suyo, por lo que no debería ser un problema.

Cuando intenté usar la reflexión de repente tuve éxito en el Wildfire, desafortunadamente todavía no hay progreso en Legend ni en el Galaxy S. Aquí es donde estoy atrapado. Muchos foros afirman que algunos fabricantes tienen una pila Bluetooth propietaria, así que supongo que esto es lo que está causando estos problemas. ¡En fin, buena suerte!

 UUID MY_UUID = UUID.fromString("00001101-0000-1000-8000-00805f9b34fb"); Method m = mAdapter.getClass().getMethod("createRfcommSocketToServiceRecord", new Class[] { UUID.class }); tmpSocket = (BluetoothServerSocket) m.invoke(mAdapter, new Object[] { MY_UUID }); 

Una vez más esto parece ser un error en el bluetooth para ese teléfono, otros teléfonos con el mismo chip de BT y la versión no tienen ese problema

  • Nodificación de la señal de la señal de Bluetooth
  • Bluetooth -> fallo en el descubrimiento del servicio
  • Problema con el archivo de envío de Bluetooth de Android
  • Detección de cambios de estado realizados en BluetoothAdapter?
  • Cómo escanear periódicamente dispositivos bluetooth en android
  • ActivityManager: Advertencia: Actividad no iniciada, su tarea actual ha sido llevada al frente
  • Android 6 bluetooth
  • Android Bluetooth .conect () excepción Nexus 7 OBDII adaptador
  • Conectarse al conector Bluetooth de Android
  • Android OBD-II Bluetooth código de ejemplo API no funciona
  • ¿Inicia Bluetooth desde el ADB o al arrancar?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.