Android: como funcionam os UUIDs bluetooth?

Eu não entendo o que um bluetooth UUID denota. Os UUIDs denotam protocolos (por exemplo,RFCOMM) Se sim, por quecreateRfcommSocketToServiceRecord() métodos requerem UUIDs, quando especificam rfcomm diretamente em seus nomes? Por que o código de exemplo BluetoothChat tem um UUID aparentemente arbitrário e codificado?

Minha pergunta surge porque, conformeessa questãoEstou recebendo uma exceção de ponteiro nulo quando dispositivos que executam o 4.0.4 tentam se conectar (a um dispositivo externo, não-android) usando reflexão. No entanto, a solução para essa pergunta não funciona para mim.UUID muuid = device.getUuids()[0].getUuid(); levanta uma exceção.

Editar: Eu resolvi esse problema codificando o UUID para serviço de porta serial conformeesta resposta (usandoUUID.fromString("00001101-0000-1000-8000-00805f9b34fb");).

Fico ainda mais intrigado com a necessidade de fornecer um UUID para criar um soquete rfcomm não seguro usandocreateInsecureRfcommSocketToServiceRecord(), mas não usando o método de reflexão.

Alguém pode me endireitar?

questionAnswers(5)

yourAnswerToTheQuestion