No entiendo lo que denota un UUID bluetooth. ¿Los UUID denotan protocolos (por ejemplo, RFCOMM )? Si es así, ¿por qué los createRfcommSocketToServiceRecord()
métodos requieren UUID, cuando especifican rfcomm directamente en sus nombres? ¿Por qué el código de muestra de BluetoothChat tiene un UUID codificado aparentemente arbitrario?
Mi pregunta surge porque, según esta pregunta , obtengo una excepción de puntero nulo cuando los dispositivos que ejecutan 4.0.4 intentan conectarse (a un dispositivo externo que no sea Android) mediante la reflexión. Sin embargo, la solución a esa pregunta no me funciona. UUID muuid = device.getUuids()[0].getUuid();
plantea una excepción.
Editar : resolví ese problema codificando el UUID para el servicio de puerto serie según esta respuesta (usando UUID.fromString("00001101-0000-1000-8000-00805f9b34fb");
).
Me desconcierta aún más por qué necesito proporcionar un UUID para crear un socket rfcomm no seguro usando createInsecureRfcommSocketToServiceRecord(),
pero no usando el método de reflexión.
¿Alguien puede arreglarme?