2013-06-03 16 views
13

Sto facendo un'app per Android e dove ho il MAC di un altro dispositivo come una stringa (lunga 17 caratteri) e devo usarlo per collegarmi a quel dispositivo (thread che avvia una connessione Bluetooth). Ci ho giocato tutto il pomeriggio e non riesco a capire come farlo. Il problema è che non mi permette di impostare il dispositivo Bluetooth uguale a una stringa. C'è un modo in cui questo può/deve essere fatto?connettersi al dispositivo con indirizzo Bluetooth su stringa

(non ha deciso di mettere uno dei miei tentativi qui come codice, vedendo come erano pieni di errori)

Ha a comunicare con un altro tablet che esegue la stessa applicazione esatto. Ho controllato prima la pagina this e la maggior parte della mia app è basata su questo. Il mio problema principale è quando si utilizza l'esempio ConnectThread,

Ho una stringa con l'indirizzo MAC, come posso connettermi a quel MAC?

Qualsiasi aiuto sarebbe molto apprezzato,

+0

Quale profilo Bluetooth stai usando? Il nome del dispositivo a 17 caratteri potrebbe essere solo un indirizzo MAC del dispositivo. – Ramp

+0

Sì, mi dispiace. Significato dell'indirizzo MAC ... – Marshall

risposta

23

Se ho capito correttamente, si dispone di un indirizzo MAC come stringa e si desidera connettersi al dispositivo, giusto? Questo dovrebbe funzionare:

BluetoothDevice device = mBluetoothAdapter.getRemoteDevice(address); 
BluetoothSocket tmp = null; 
BluetoothSocket mmSocket = null; 

// Get a BluetoothSocket for a connection with the 
// given BluetoothDevice 
try { 
    tmp = device.createRfcommSocketToServiceRecord(MY_UUID); 
    Method m = device.getClass().getMethod("createRfcommSocket", new Class[] {int.class}); 
    tmp = (BluetoothSocket) m.invoke(device, 1); 
} catch (IOException e) { 
    Log.e(TAG, "create() failed", e); 
} 
mmSocket = tmp; 

Questo è un estratto dal codice sorgente di questo semplice open-source Android App: https://github.com/janosgyerik/bluetoothviewer

L'applicazione è un semplice strumento per il debug di connessioni Bluetooth e dati del protocollo grezzi. (Per ora solo in ascii, ho intenzione di aggiungere funzionalità per eseguire il debug esadecimale.)

3

In primo luogo si dovrà findout ciò profilo supportati dal dispositivo Bluetooth, ad esempio, potrebbe essere un dispositivo medico che potrebbe usare il profilo HDP o potrebbe essere utilizzando un semplice RS232 sopra Bluetooth. È importante capire in che modo viene stabilita la connessione Bluetooth per vari profili prima di iniziare a scrivere il codice.

Ecco un buon collegamento per iniziare. L'SDK di Android viene fornito anche con alcuni esempi di base da cui iniziare.

http://developer.android.com/guide/topics/connectivity/bluetooth.html

EDIT:

Se il dispositivo è accoppiato con successo, si vedrà l'indirizzo MAC nella lista dei dispositivi associati. Ad esempio, puoi fare questo per trovare il dispositivo che corrisponde all'indirizzo MAC del tuo dispositivo:

Set<BluetoothDevice> pairedDevices = mBluetoothAdapter 
        .getBondedDevices(); 
      if (pairedDevices.isEmpty()) { 
       Log.e(TAG, 
         "No devices paired..."); 
       return ; 
      } 

    for (BluetoothDevice device : pairedDevices) { 
       Log.d(TAG, "Device : address : " + device.getAddress() + " name :" 
         + device.getName()); 
      if (MY_MAC_ADDR.equals(device.getAddress())) { 
       mDevice = device; 
       break; 
      } 
    } 

Spero che questo aiuti.

+0

Spiacente, non ho specificato. Deve comunicare con un altro tablet che esegue la stessa identica applicazione. Ho esaminato quella pagina in precedenza e la maggior parte della mia app è basata su questo. Il mio problema principale è quando si utilizza l'esempio ConnectThread, che non so come inserire l'indirizzo MAC (stringa) = mmDevice Grazie per la risposta, – Marshall

+0

Modificata la mia risposta per rispondere alla tua domanda. – Ramp

+0

thx buddy #upVoted –

Problemi correlati