Applicazione Android
L’applicazione Android (di cui trovate i sorgenti su Github) di oggi invia/riceve dati via Bluetooth, in particolare:
- consente di collegarsi / scollegarsi dal dispositivo tramite un pulsante
- alla pressione di due tasti invia i comandi “BUTTON1” e “BUTTON2”
- visualizza quanto riceve in una TextView
Tutta la comunicazione Bluetooth è effettuata da un AsyncTask, BTAsyncTask; vediamo come avvengono le attività principali…
Connessione
Dopo che l’utente ha scelto il dispositivo a cui collegarsi, l’applicazione apre un socket con tale dispositivo e crea una nuova istanza dell’oggetto BTAsyncTask, passando a tale oggetto il socket creato.
Quindi chiama il metodo execute() che avvia il metodo doInBackground() di BTAsyncTask, dove è presente un loop che rimane in ascolto di nuovi dati in arrivo dal dispositivo associato:
Ricezione
Quando BTAsyncTask riceve un nuovo dato, chiama il metodo publishProgress() passando tale dato. Come abbiamo visto sopra, il metodo publishProgress() scatena onProgressUpdate() che, girando nel GUI thread, può aggiornare la GUI con il dato ricevuto:
Trasmissione
Alla pressione di un testo, il thread principale chiama il metodo sendCommand() di BTAsyncTask per effettuare l’invio del comando associato:
Demo
Ho preparato una semplice applicazione .Net per rispondere ai comandi inviati dall’app ed ecco un breve filmato che ne illustra il funzionamento:
very good luca, thanks!
waiting the next.
Hi Luca,
Android coding is not simple.
I have developed pfodApp that does all the Android stuff for you. Lets you display menus and screens from your Arduino by means of simple text strings.
Take a look at http://www.pfod.com.au for all the details.
Hi Luca
Great example, thank you !
Would you recommend using this method to send/receive bluetoothdata from different activities within an app ??
If so how would you modify your code to work ?
Hi! My suggestion is to have only ONE “manager” that performs all the communication tasks and dispatches the messages to the different activities
GRANDE GIOVE !!!
MITICO LUCA !
Funziona e non ho più gli errori in Eclipse.
Questo era lo scoglio da superare per avere il punto di partenza
interattivo con la macchina che monta l’ HC-06.
Ora è una passeggiata nel parco !
Grazie.
Riciao.
Non ho capito come mai l’ XML per l’UI è
nel Fragment_main anziché nel activity_main
e funziona ugualmente….
Cos’è che non so ?
Grazie
Mauro
Ciao Luca !
Non riesco a cancellare il contenuto di tvResponse. Ho implementato un pulsante per pulire il contenuto dalle risposte della macchina via BT ma vorrei che a piacimento si potesse cancellare.
Ti ringrazio per la collaborazione.
Mauro