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:
- ¿Cómo puedo recibir mensajes pendientes con la API cercana de google?
- Android BLE Gatt timeout después de gatt.writeDescriptor ()
- Propiedades de difusión para el bluetooth, wifi y el modo de timbre
- ¿Transferir un archivo entre dispositivos Android?
- Conectar Android a wii remoto con bluetooth
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
- Android - ¿Cómo habilitar Bluetooth para estar siempre encendido?
- Conexión Bluetooth entre Android y Lego Mindstorm NXT
- Maneje los clics del audífono bluetooth (ACTION_VOICE_COMMAND y ACTION_WEB_SEARCH) en Android
- Conectar obdsim a Torque (aplicación android) Ubuntu
- ¿Cómo puedo volver a conectar mi aplicación en cada apertura al mismo dispositivo bluetooth de baja energía?
- IOS 7 Multipeer Connectivity es compatible con Android Wi-Fi Direct?
- Error Android Bluetooth LE: Error al registrar la devolución de llamada
- Transmisión de audio entre el dispositivo bluetooth externo y el teléfono Android
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
- ¿Cómo analizar el comportamiento de Dalvik GC?
- Android: la lista desplegable / selección de Spinner no se muestra