Conexión a un puerto bluetooth específico en un dispositivo bluetooth mediante Android

¿Hay alguna forma de que Android se conecte a un dispositivo Bluetooth utilizando un puerto específico en lugar de usar UUID de servicio? Sé que esta opción está disponible en otras plataformas que proporcionan soporte Bluetooth (por ejemplo, Java ME especificando una URL de estilo "btspp: //").

¡Gracias!

Ok, ha sido un tiempo, pero he encontrado una solución al problema. En realidad, tenía la intención de renunciar y utilizar UUID, pero seguí recibiendo una excepción de Service Discovery Failed (IO), y cuando traté de encontrar una solución al problema de descubrimiento de servicio, encontré la solución a mi pregunta original … Ain ' t algo de vida

De todos modos, este es el enlace que encontré , aunque debe tener en cuenta que hay un error en la respuesta (que en realidad simplemente conectado al puerto 1, en lugar de utilizar un servicio UUID).

Y después de esta breve lección de historia, aquí está la solución:

Mediante la reflexión, es posible crear el socket Rfcomm que se conecta a un número de puerto en lugar de UUID:

int bt_port_to_connect = 5; // just an example, could be any port number you wish BluetoothDevice device = ... ; // get the bluetooth device (eg, using bt discovery) BluetoothSocket deviceSocket = null; ... // IMPORTANT: we create a reference to the 'createInsecureRfcommSocket' method // and not(!) to the 'createInsecureRfcommSocketToServiceRecord' (which is what the // android SDK documentation publishes Method m = device.getClass().getMethod("createInsecureRfcommSocket", new Class[] {int.class}); deviceSocket = (BluetoothSocket) m.invoke(device,bt_port_to_connect); 

Algunas cosas a notar:

  1. ya que estamos utilizando Invoke, el primer parámetro es el objeto en el que invocamos el método, el segundo parámetro de invoke es en realidad el primer parámetro de la función)
  2. También hay una versión segura disponible ('createRfcommSocket'), que acepta un número de canal bluetooth como un solo parámetro (de nuevo, ya que se invoca estilo, necesitará pasar el objeto para invocar el método, como se menciona en – 1-)
  3. He encontrado lo que parece ser un enlace a los prototipos de estas funciones

Buena suerte a todos.

Las conexiones Bluetooth para Android se realizan exclusivamente a través de UUID. Cada dispositivo Bluetooth tiene un UUID para cada servicio que ejecuta (consulte Bluetooth SDP).

Acaba de darle a Android el UUID para que lo vea y, en modo cliente, encontrará un zócalo para conectarse automáticamente (incluido el puerto). En el modo servidor, esperará a que el dispositivo especificado inicie una conexión utilizando el UUID especificado. El objeto BluetoothSocket también es válido cuando se establece la conexión (use getInput / Output Stream) Consulte la documentación de Server Socket y la documentación de Client Socket .


Si realmente quieres comprobar todo, puedes ver lo que Android decodifica desde el SDP del otro dispositivo y el UUID que proporcionaste.

Utilice este tutorial para obtener la interfaz Bluetooth (muy fácil de hacer). Entonces el código debería ser algo como esto:

 IBluetooth ib =getIBluetooth(); Int otherDevicePort = ib.getRemoteServiceChannel(otherDeviceAddress, UUID); 
  • NoSQL para aplicaciones móviles?
  • Android: mensajes de alta prioridad con la mensajería en la nube de google (con corona sdk)
  • ¿Cuál es el agente de usuario de Chrome para Android después de que el usuario cambie a la versión de escritorio?
  • Creación de una versión móvil de un sitio web
  • Código Nativo de Android C ++
  • Error StackOverflow, excepción View.inflate
  • Firefox móvil ignora completamente Viewport
  • Agregar un contacto a la Libreta de direcciones del dispositivo móvil desde una página web HTML
  • Chrome en Android no amplía el elemento de encabezado en el cambio de orientación
  • ¿Cómo puedo desarrollar aplicaciones móviles usando HTML5?
  • ¿Qué opciones están disponibles para manejar la introducción de texto en Android con Adobe AIR?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.