Cómo crear Insecure RFCOMM Socket en Android?

Estoy buscando manera de conectar sobre rfcomm socket insegura. Pude encontrar la manera mencionada abajo

Method m = device.getClass().getMethod("createInsecureRfcommSocket", new Class[] {int.class}); tmp = (BluetoothSocket) m.invoke(device, 1); 

Esto por el momento es hacer lo que quiero. Incluso la documentación aquí dice que necesitamos usar createInsecureRfcommSocketToServiceRecord para conexiones inseguras. Pero no existe tal método. La única manera que encontré fue usando la reflexión como se muestra arriba. E incluso en que el método que se pasa en createInsecureRfcommSocket y no createInsecureRfcommSocketToServiceRecord. Sólo quería saber cuán confiable es esta manera. Si menciono createInsecureRfcommSocketToServiceRecord en el método de la conexión nunca sucede.

createInsecureRfcommSocketToServiceRecord() se incluyó a partir de Android API Level 10, por lo que la documentación le animará a utilizarlo ya que los documentos siempre siguen la última versión de la API. Si está apuntando a una API inferior a 10 (también conocida como 2.3.3 o Gingerbread), entonces ese método no está públicamente accesible para usted.

El método que está llamando a través de la reflexión createInsecureRfcommSocket() es un método privado dentro de BluetoothDevice que ha estado presente desde aproximadamente Android 2.0. El problema con la llamada de métodos ocultos es que no están garantizados para estar allí en todos los dispositivos, o en el futuro … por lo que está jugando un poco. Mi conjetura es que su método trabajará probablemente la mayor parte del tiempo en la mayoría de los dispositivos 2.0+, puesto que los servicios requeridos para poner su primo público createRfcommSocketToServiceRecord() son tan similares en la capa de la pila.

En pocas palabras, si desea una compatibilidad universal garantizada con la implementación de Bluetooth, tendrá que orientar el nivel 2.3.3 (API Level 10) con su aplicación. Con una API pública ahora expuesta para RFCOMM insegura, es difícil decir si es más o menos probable que la implementación privada subyacente cambie.

Bueno, la mayoría de las respuestas respondidas aquí, son antes del 30 de marzo de 2011, en este post.

Mientras buscaba la solución de un problema similar en mi aplicación, he encontrado este blog escrito el 30 de marzo.

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

http://mobisocial.stanford.edu/news/2011/03/bluetooth-reflection-and-legacy-nfc/

La solución se ha vuelto muy simple ahora. Solo incluye InsecureBluetooth.java en tu proyecto y cambia 2 líneas en BluetoothChatService.java.

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

y

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

Eso es !

¿Has visto este createInsecureRfcommSocketToServiceRecord

  • Transferencia de datos Android + Arduino Bluetooth
  • Android Bluetooth Serial RFCOMM velocidad baja en baudios / transmisión lenta
  • ¿Howt para conectar dos dispositivos vía bluetooth que envía el código pairng por el parámetro? JAVA-Android
  • La conexión Bluetooth de Android falla (Error: no se encontró ningún bt sock, scn 1)
  • Android Bluetooth no muestra diálogo de emparejamiento
  • Cómo borrar mediante programación la caché de nombres de Bluetooth en Android?
  • Bluetooth + Android + topología scatternet
  • Transferencia de Bluetooth La aplicación se detiene después de usar InputStream.read () sin error
  • Android 4.0 y 4.1 problemas de Bluetooth. Detectar los comms rotos y eliminar el emparejamiento
  • ACTION_DISCOVERY_STARTED nunca se llama android
  • Servidor Android Bluetooth de Baja Energía
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.