studio scanner recibir por para libreria dispositivos detectar datos conectar con buscar app android bluetooth connection cyanogenmod

scanner - Conexión Bluetooth de Android segura insegura



libreria bluetooth android (1)

He estado jugando con la API bluetooth para Android 2.2 (API nivel 8, HTC Desire) y tenía una aplicación que se conectaba a un dispositivo Bluetooth incrustado usando:

device.createRfcommSocketToServiceRecord(DEV_UUID);

Esto generó una solicitud de emparejamiento como se esperaba, sin embargo, para optimizar el proceso de conexión, quería evitar la interacción del usuario cuando el emparejamiento se movió al nivel de API 10 (HTC Desire con CyanogenMod 7) para poder usar:

device.createInsecureRfcommSocketToServiceRecord(DEV_UUID);

Al probar esto, también funciona como se espera (sin necesidad de solicitar al usuario que se vincule), sin embargo, cuando intento crear el RfcommSocket seguro bajo el nivel de API 10 como antes con el 2.2 obtengo una excepción de conexión rechazada ...

java.io.IOException: Connection refused at android.bluetooth.BluetoothSocket.connectNative(Native Method) at android.bluetooth.BluetoothSocket.connect(BluetoothSocket.java:204)

Por lo que puedo decir, esto debería funcionar de la misma manera, lo que hace que el usuario se empareje?

EDITAR:

Intenté nuevamente usando el siguiente código y el resultado es el mismo (trabajando para inseguro pero no para seguro), intentaré ponerme las manos en un dispositivo stock 2.3 para probar.

try { Method m = dev.getClass().getMethod("createInsecureRfcommSocketToServiceRecord", new Class[] { UUID.class } ); BluetoothSocket bs = (BluetoothSocket)m.invoke(dev, devUUID); Log.d("TEST", "Method Invoked"); bs.connect(); Log.d("TEST", "Connected to socket"); bs.close(); Log.d("TEST", "Closed Socket"); }


Mientras busco la solución de un problema similar en mi aplicación, he encontrado este blog de code.google.com

Ayudará a todos aquellos que todavía están buscando esta solución problema en SO

http://mobisocial.stanford.edu/news/2011/03/bluetooth-reflection-and-legacy-nfc/ (el enlace ya no funciona)

La solución se ha vuelto muy simple ahora. Simplemente incluya InsecureBluetooth.java en su proyecto y cambie 2 líneas en BluetoothChatService.java.

tmp = InsecureBluetooth.listenUsingRfcommWithServiceRecord(mAdapter, NAME, MY_UUID, true);

y

tmp = InsecureBluetooth.createRfcommSocketToServiceRecord(device, MY_UUID, true);

Eso es !