Wpis z mikrobloga

#android #androiddev #java

Piszę program do sterowania robotem poprzez telefon z Androidem. Moduł z którym się łącze to HC-05, tylko nie umiem się z nim połączyć, zapewne winą jest tylko zły numer UUID, ale może coś innego źle robię.

Metoda wywołania połączenia posiada następujący kod:

BluetoothAdapter ba = BluetoothAdapter.getDefaultAdapter();
BluetoothDevice serwer = ba.getRemoteDevice("30:14:08:25:21:59");
new ClientBluetooth(serwer).start();

Natomiast klasa, która łączy się z urządzeniem ma następujący kod:
http://pastebin.com/WBQZBVQa

błąd wywala w linii 22, podczas wykonywania: "mmSocket.connect();"

Pisał ktoś własną aplikację do połączenia z tym modułem? Da się jakoś ustawić numer UUID na urządzeniu bluetooth, albo ściągnąć go jakoś z niego? Za wszelkie rady będę wdzięczny.
  • 8
@siemanko: Ten program pisałem na podstawie tego:
http://andrzejklusiewicz-android.blogspot.com/2014/02/bluetooth-czyli-niebieskie-pogaduszki.html

ale podobnie też jest w dokumentacji androida (połączenie jako klient):
http://developer.android.com/guide/topics/connectivity/bluetooth.html

I ten program mi działał, jeśli jeden telefon dawałem jako klient a drugi jako serwer (program był taki jak w pierwszym linku), natomiast HC-05 jest Serwerem a telefon Clientem to nie działa

edit: tzn. jak przepisałem ten program z pierwszego linku, to działał tak jak był zaprogramowany, natomiast dla tej sytuacji którą
@nuker92: Nie chce mi się tego wszystkiego dokładnie analizować, ale ewidentnie skopana jest kwestia inicjalizacji mmSocket. Proponuję prześledzić kolejne kroki działania programu linia po linii, a nie tylko przekopiowywać z tutoriala. Logcat przyjacielem Twoim jest i tam szukaj ewentualnego rozwiązania. Błąd jasno mówi o nullu w tej linii.
@siemanko: Ok, faktycznie coś było z tym źle, udało mi się naprawić i łączy się już z tym urządzeniem. Tylko teraz chciałbym coś wysyłać po kliknięciu na przycisk, tzn. po włączeniu aktywności, telefon łączy z urządzeniem jako klient (to mam) i teraz jeśli kliknę przycisk na ekranie to wysyła mi się np: "10". Da się to zrobić jakoś inaczej niż poprzez ciągle wykonującą się pętlę w metodzie run?