studio activar android bluetooth serial-port

activar - bluetooth android studio



Bluetooth SPP entre Android y otro dispositivo, UUID y PIN preguntas (1)

Si puede proporcionar el nombre / enlace al dispositivo médico (si es un dispositivo comercial), puede ayudar a leer su guía para adivinar más sobre lo que podría estar sucediendo. Aqui hay algunas sugerencias :

  1. Además del UUID del puerto serie, cada servicio a través del SPP puede tener un UUID específico personalizado; por ejemplo, el dispositivo médico podría buscar el servicio con el que es compatible utilizando este UUID específico para cada cliente.
    Si el dispositivo médico actualmente se conecta a una PC o algún otro punto de acceso con éxito y transfiere datos, podría intentar leer el registro SDP de ese dispositivo y determinar qué UUID específico además del UUID SPP está en uso, si lo hubiera, y usar el Lo mismo en su aplicación también.

  2. Si el dispositivo médico no puede encontrar su teléfono / aplicación, podría ser porque no se puede detectar. El dispositivo Android por defecto no es detectable, incluso cuando usted es un servidor, solo podrá conectarse y no podrá detectarse, puede intentar que sea detectable mediante programación o mediante la configuración y ver si el dispositivo médico puede encontrar su dispositivo. Ver aquí - Habilitación de la capacidad de descubrimiento en Android

  3. Para el emparejamiento de PIN, el dispositivo Android debe iniciar el proceso de emparejamiento cuando un dispositivo no emparejado intenta conectarse, puede intentarlo después de pasar por las recomendaciones (1) y (2), el emparejamiento de PIN se usa si uno de los dispositivos es Antes de la versión Bluetooth 2.1, incluso con los dispositivos más nuevos, se requerirá una contraseña de 6 dígitos con alguna intervención / confirmación del usuario en el teléfono para permitir el emparejamiento (es solo una buena política de seguridad para no permitir que esto suceda automáticamente sin el usuario). intervención), es de esperar que el emparejamiento solo requiera la primera vez que se produzca una conexión, más tarde no requerirá la intervención del usuario para conexiones posteriores.

Estoy intentando implementar una aplicación de Android para recibir datos de un dispositivo médico, pero no puedo pasar por el proceso de descubrimiento y hacer que el teléfono y el dispositivo se emparejen o conecten entre sí.

Describiendo el dispositivo médico: el dispositivo está utilizando el protocolo de descubrimiento de servicios (SDP) y el perfil de puerto serie (SPP). Inicia un procedimiento de consulta para descubrir (hasta 10) puntos de acceso circundantes con un filtro COD y un nombre de servicio coincidentes. Luego establece de forma secuencial una conexión (utilizando el Procedimiento de página) con el punto de acceso al verificar el PIN. Una vez que el PIN coincide, los datos se cargan. Al cargar los datos, el dispositivo espera un reconocimiento. El decreto es el maestro e inicia la comunicación.

No tengo control del dispositivo médico. Todo lo que puedo hacer es iniciarlo y esperar el procedimiento descrito anteriormente (después de una medición).

La aplicación de Android: comencé desde el ejemplo de chat de Bluetooth en las páginas de desarrolladores. Hasta ahora, he reemplazado el UUID con el 00001101-0000-1000-8000-00805f9b34fb para usar SPP y establecer el Nombre del servicio en el nombre apropiado. Puedo confirmar que esto parece correcto a través de la inspección del servicio desde una computadora. Dado que el dispositivo médico es el que consulta e inicia la comunicación, mi servicio está utilizando un BluetoothServerSocket y el método accept() para comenzar a escucharlo.

  1. En las páginas de desarrolladores, he leído que el UUID debe coincidir entre las aplicaciones que intentan comunicarse. Dado que no puedo configurar un UUID para el dispositivo médico, me pregunto si esto va a ser un problema o si es suficiente que el dispositivo médico esté utilizando el perfil SP.

  2. Si el nombre del servicio y el UUID son correctos y el dispositivo médico intentaría conectarse a mi servicio Bluetooth que está escuchando las conexiones, el sistema Android me solicitará que ingrese el PIN manualmente para poder vincular los dispositivos (ya que el dispositivo médico tiene un PIN preestablecido)?

  3. No he encontrado nada en la API del SDK de Android que me permita configurar un PIN para mi servicio de Bluetooth (en caso de que no sea así), ¿es esto posible?

He leído que normalmente el PIN lo genera el sistema hoy en día y lo único que se necesita es una confirmación del usuario. Supongo que no en mi sistema, ya que el dispositivo es un poco más antiguo.

¡Le agradecería si quisiera compartir algunos conocimientos, sugerencias y suposiciones sobre cualquier cosa relacionada con lo que he descrito anteriormente!

Gracias de antemano, Fredrik

EDITAR:

Ahora tengo el dispositivo emparejado con una caja bluegiga y se comunican correctamente. Ahora estoy buscando los criterios a cumplir para que el dispositivo de presión arterial se conecte a mi teléfono. Puedo inspeccionar, desde una computadora con Linux ( sdptool search SP en un terminal), el servicio Bluetooth provisto por la bluegiga y compararlo con el servicio Bluetooth que proporciono en el Android. Estos valores son los que obtengo:

~ $ sdptool search SP

Preguntando ...

Buscando SP en 8C: 71: F8: E5: XX: XX. . .

Nombre del servicio: 1808130054

Servicio RecHandle: 0x10003

Lista de identificación de clase de servicio:

UUID 128: 00001101-0000-1000-8000-00805f9b34fb

Lista de descriptores de protocolo:

"L2CAP" (0x0100)

"RFCOMM" (0x0003)

Canal: 13

´

Búsqueda de SP en 00: 07: 80: 88: XX: XX. . .

Nombre del servicio: 1808130054

Descripción del servicio: 1808130054

Servicio RecHandle: 0x10005

Lista de identificación de clase de servicio:

"Puerto serie" (0x1101)

Lista de descriptores de protocolo:

"L2CAP" (0x0100)

"RFCOMM" (0x0003)

Canal: 12

Base de idiomas Lista de Attr:

code_ISO639: 0x656e

conteniendo: 0x6a

base_offset: 0x100

El primer dispositivo encontrado es el teléfono (mac = 8C: 71 ... Google Nexus S) y el segundo (mac = 00: 07 ...) es el bluegiga . Me doy cuenta de que no hay Descripción del servicio en el dispositivo Android. Creo que la diferencia más importante está en la lista de ID de clase de servicio. UUID 128 en Android, pero un formato totalmente diferente que describe esto en la bluegiga .

  1. ¿Es posible implementar el uso de Id. De clase de servicio con otro formato que no sea UUID en Android?

  2. ¿Se puede manipular el registro de servicio registrado en la base de datos de descubrimiento de servicios?

  3. ¿Sería posible implementar de alguna manera directamente hacia BlueZ, utilizando el desarrollo nativo c / c ++?

/ Fredrik