2013-10-28 22 views
14

Mentre stavo guardando Stack e Internet per una soluzione semplice per ottenere il UUID del dispositivo che sto utilizzando attualmente. Ho inciampato su posts like this ma nessuno di loro sembrava aiutarmi.Android - Ottieni UUID Bluetooth per questo dispositivo

Il dottore mi dice about thisgetUuids() funzione, ma quando si passa attraverso il doc per Android Bluetooth ho finiscono per avere un BluetoothAdapter, ma ho bisogno di un BluetoothDevice per eseguire questa funzione.

Così ho bisogno di sapere quanto segue:

1) è la funzione che restituisce davvero il dispositivo UUID? Perché il nome dice plurale (getUuid s)

2) Come ottengo un'istanza di questo BluetoothDevice?

Grazie!

+0

in ogni caso, come hai potuto sapere che l'UUID è per il tuo dispositivo bluetooth @Ron? – gumuruh

risposta

15

utilizzando la riflessione si può invocare il metodo nascosto getUuids() sul BluetoothAdater:

BluetoothAdapter adapter = BluetoothAdapter.getDefaultAdapter(); 

Method getUuidsMethod = BluetoothAdapter.class.getDeclaredMethod("getUuids", null); 

ParcelUuid[] uuids = (ParcelUuid[]) getUuidsMethod.invoke(adapter, null); 

for (ParcelUuid uuid: uuids) { 
    Log.d(TAG, "UUID: " + uuid.getUuid().toString()); 
} 

Questo è il risultato su un Nexus S:

UUID: 00001000-0000-1000-8000-00805f9b34fb 
UUID: 00001001-0000-1000-8000-00805f9b34fb 
UUID: 00001200-0000-1000-8000-00805f9b34fb 
UUID: 0000110a-0000-1000-8000-00805f9b34fb 
UUID: 0000110c-0000-1000-8000-00805f9b34fb 
UUID: 00001112-0000-1000-8000-00805f9b34fb 
UUID: 00001105-0000-1000-8000-00805f9b34fb 
UUID: 0000111f-0000-1000-8000-00805f9b34fb 
UUID: 0000112f-0000-1000-8000-00805f9b34fb 
UUID: 00001116-0000-1000-8000-00805f9b34fb 

in cui, per esempio, 0000111f-0000-1000-8000-00805f9b34fb è per HandsfreeAudioGatewayServiceClass e 00001105-0000-1000-8000-00805f9b34fb è per OBEXObjectPushServiceClass. La disponibilità effettiva di questo metodo può dipendere dalla versione del dispositivo e del firmware.

+0

Sto usando l'SDK16 e non funziona per me. Gli 'uuids' sono' null'. Inoltre mi piacerebbe avere solo il mio bluetooth uuid. Sai come ottenere questo? – Ron

+0

Esiste un uuid per ciascun servizio Bluetooth esposto dal dispositivo; è per questo che vedi più uuids per lo smartphone. Ho eseguito i test utilizzando l'SDK su Nexus S con Android 4.1.2 e Galaxy Nexus con Android 4.3. Quale dispositivo hai usato? –

+0

Galaxy S2 ... devo avere il Bluetooth attivo per recuperare il mio uuid? – Ron

Problemi correlati