Come posso ottenere l’UUID di un dispositivo bluetooth?

Ho bisogno di sapere UUID API 8 (2.2), o forse 2.3.3.

A quanto ho capito la documentazione, questo deve essere consentito:

    phoneDevice = blueAdapter.getRemoteDevice(phoneAddress);
    ParcelUuid[] phoneUuids = phoneDevice.getUuids();  //Won't compile

Eclipse mi dà:
“Il metodo getUuids() è definito per il tipo di BluetoothDevice.”
Ma vedi:
http://developer.android.com/reference/android/bluetooth/BluetoothDevice.html#getUuids()

Inoltre, vorrei sapere come gli Uuid sono “parcellizzata” all’interno del ParcelUuid[]. Nel caso In cui io abbia mai riescono ad arrivare, come faccio a recuperare una UUID da un parcelUuid[]? Documentazione per Android bluetooth sembra essere molto poveri, a mio parere.

Che scherzo!
Ora cerco di ottenere da questo l’intento, ma anche questo dà: *”EXTRA_UUID non può essere risolto o non è un campo”*:

intent.getParcelableExtra(BluetoothDevice.EXTRA_UUID); 
questo supporto API di livello 15. che cosa è il tuo livello delle API?
Ciao a fronte stesso problema , nel mio progetto di fornire supporto da android 2.3.1 , min api level 8. Si prega di aiutare.
Ciao. Molto tempo è passato fro questo post, ma mi trovo di fronte questo stesso esatto problema. Avete qualche soluzione per che (le mie API minimo è di 10) ?Grazie per qualsiasi indicazione

OriginaleL’autore Tombola | 2012-03-05

5 Replies
  1. 5

    Devi utilizzare la reflection per utilizzare il getUuids() e fetchUuidsWithSdp() sulla versione di android < 3. Quindi, cercare il codice:

    Method method = phoneDevice.getClass().getMethod("getUuids", null);
    ParcelUuid[] phoneUuids = (ParcelUuid[]) method.invoke(phoneDevice, null);

    OriginaleL’autore

  2. 2

    //supporto API di livello 15 e sopra.

    Broadcast Action: This intent is used to broadcast the UUID wrapped as a ParcelUuid of the remote device after it has been fetched. This intent is sent only when the UUIDs of the remote device are requested to be fetched using Service Discovery Protocol
        Always contains the extra field EXTRA_DEVICE
        Always contains the extra field EXTRA_UUID
        Requires BLUETOOTH to receive.
        Constant Value: "android.bluetooth.device.action.UUID"

    //non c’è modo di degradare il suo hardware. non vi è alcun supporto vaso. http://developer.android.com/sdk/compatibility-library.html

    Va bene, ma l’API 15 è 4.0.3 uscito solo un mese fa. Ho bisogno di usare il bluetooth 2.2 API 8!
    Così, il modo per farlo è quello di creare Uuid? Non è una proprietà dell’hardware, è solo un numero che mi compongono, giusto?
    è in grado di ottenere l’uuid per android 2.2 per collegare un altro dispositivo? posta la tua soluzione qui

    OriginaleL’autore

  3. 1

    Purtroppo, io non credo che ci sia un buon modo per ottenere l’UUID supportato da un BluetoothDevice con il livello API < 15. Credo che per questo hanno aggiunto nuove funzioni API 15.

    Nota, dal documenti per BluetoothClass

    BluetoothClass è utile come suggerimento per circa descrivono un dispositivo (per
    esempio mostra un’icona nell’interfaccia utente), ma non affidabile descrivere
    quali profili Bluetooth o servizi effettivamente supportate da una
    dispositivo. Servizio accurato rilevamento viene fatto attraverso SDP richieste, che
    viene eseguito automaticamente quando si crea un RFCOMM presa con
    createRfcommSocketToServiceRecord(UUID) e
    listenUsingRfcommWithServiceRecord(String, UUID).

    Così, forse la classe del dispositivo potrebbe essere utilizzato come un suggerimento per quali servizi saranno disponibili fino a quando si esegue una delle funzioni elencate. Certamente non fa male a controllare la classe, dal momento che questo non richiede ulteriori bluetooth operazioni.

    Nota che la classe di servizio è anche disponibile (che è parte integrante del dispositivo di classe), ma questa è solo una classe generale, non un elenco di servizi specifici (come da SDP).

    OriginaleL’autore

  4. 0

    Nel caso In cui non si può arrivare da UUID getUuids() metodo. Si prega di provare il contrario.

    Dopo aver scansionato con successo, si dovrebbe ricevere byte[] (scanRecord), in modo da questo risultato, se si può riconoscere UUID format è possibile dividere passo passo per ottenere la corretta UUID questi codici.

    P/s : la cosa Importante, si dovrebbe sapere UUID format per ottenere dall’indice correttamente.

    //Put item into hash map
        //UUID from index 10 to 24 : 12233445566778899aabbccddeeff0
        StringBuilder mSbUUID = new StringBuilder();
        for (int i = 0; i < scanRecord.length; i++) {
            //UUID
            if (i >= 10 & i <= 24) {
                if (Integer.toHexString(
                        scanRecord[i]).contains("ffffff")) {
                    mSbUUID.append(Integer.toHexString(scanRecord[i]).replace("ffffff", "") + "-");
                } else {
                    mSbUUID.append(Integer.toHexString(scanRecord[i]) + "-");
                }
            }
        }
    Questa domanda è da ’12, e ScanRecord è parte della più recente Bluetooth LE API. Questa domanda è rivolta per Bluetooth Classico.

    OriginaleL’autore

Lascia un commento