2013-06-03 14 views
13

Robię aplikację na Androida i mam MAC innego urządzenia jako ciąg (długość 17 znaków) i muszę go użyć, aby połączyć się z tym urządzeniem (wątek inicjuje połączenie Bluetooth). Gram z nim całe popołudnie i nie mogę wymyślić, jak to zrobić. Problem polega na tym, że nie pozwala mi ustawić urządzenia Bluetooth na równe ciągowi. Czy istnieje sposób, który można/należy zrobić?połączyć się z urządzeniem z adresem Bluetooth na łańcuchu

(nie zdecydował się umieścić któryś z moich prób tutaj jako kod, widząc w jaki sposób były one pełne błędów)

To musi komunikować się z innym tabletem z systemem dokładnie taką samą aplikację. Przeglądałem wcześniej stronę this, a większość mojej aplikacji opiera się na tym. Mój główny problem polega na użyciu przykładu ConnectThread,

Mam ciąg znaków z adresem MAC, jak połączyć się z tym MAC?

Każda pomoc będzie bardzo mile widziane,

+0

Jakiego profilu bluetooth używasz? Nazwa urządzenia 17-znakowego może być po prostu adresem MAC urządzenia. – Ramp

+0

Tak, przepraszam. Oznacz adres MAC ... – Marshall

Odpowiedz

23

Jeśli dobrze rozumiem, masz adres MAC jako ciąg i chcesz połączyć się z urządzeniem, prawda? To powinno działać:

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; 

ten jest fragmentem kodu źródłowego tego prostego open-source Android App: https://github.com/janosgyerik/bluetoothviewer

Aplikacja jest prostym narzędziem do debugowania połączenia Bluetooth i surowych danych protokołu. (Na razie tylko w ASCII, planuję dodać funkcje do debugowania w systemie szesnastkowym).

3

Najpierw trzeba będzie findout co profil podpór urządzenie Bluetooth, na przykład może to być urządzenie medyczne, które może wykorzystać profil HDP lub może to być za pomocą prostego RS232 ponad bluetooth. Ważne jest, aby zrozumieć, jak połączenie Bluetooth jest ustanowione dla różnych profili przed rozpoczęciem pisania kodu.

Oto dobry link do rozpoczęcia. Zestaw SDK dla systemu Android zawiera także kilka podstawowych przykładów, od których możesz zacząć.

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

EDIT:

Jeśli urządzenie jest sparowane z powodzeniem, pojawi się adres MAC z listy sparowanych urządzeń. Na przykład możesz to zrobić, aby znaleźć urządzenie odpowiadające adresowi MAC urządzenia:

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; 
      } 
    } 

Nadzieję, że pomaga.

+0

Przepraszam, że nie określiłem. Musi się komunikować z innym tabletem, na którym działa ta sama aplikacja. Przeglądałem tę stronę wcześniej i większość mojej aplikacji jest na tym oparta. Moim głównym problemem jest użycie przykładu ConnectThread, że nie wiem jak umieścić adres MAC (string) = mmDevice Dziękuję za odpowiedź, – Marshall

+0

Zmieniono moją odpowiedź, aby odpowiedzieć na twoje pytanie. – Ramp

+0

thx znajomego #upVoted –

Powiązane problemy