Android e Bluetooth (5)

luca 04/05/2014 7

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:

Pagine: 1 2

7 Comments »

  1. jmv 05/05/2014 at 16:48 - Reply

    very good luca, thanks!
    waiting the next.

  2. Matthew 07/09/2014 at 07:38 - Reply

    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.

  3. norm 07/03/2015 at 11:53 - Reply

    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 ?

    • luca 08/03/2015 at 13:32 - Reply

      Hi! My suggestion is to have only ONE “manager” that performs all the communication tasks and dispatches the messages to the different activities

  4. Mauro 20/06/2016 at 13:22 - Reply

    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.

  5. Mauro 20/06/2016 at 13:54 - Reply

    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

  6. Mauro 29/06/2016 at 10:17 - Reply

    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

Leave A Response »

Questo sito usa i cookie per poterti offrire una migliore esperienza di navigazione maggiori informazioni

Questo sito utilizza i cookie per fonire la migliore esperienza di navigazione possibile. Continuando a utilizzare questo sito senza modificare le impostazioni dei cookie o clicchi su "Accetta" permetti al loro utilizzo.

Chiudi