Riprendiamo il corso relativo alla programmazione di app Android con funzionalità Bluetooth per un piccolo tutorial che spiega come rilevare il cambio di stato del modulo Bluetooth.
Android è un sistema operativo multitasking: mentre la nostra applicazione è in esecuzione, è possibile che l’utente o un’altra applicazione cambino lo stato del modulo Bluetooth, ad esempio disattivandolo.
Nel primo tutorial abbiamo già visto come chiedere ad Android di attivare le funzionalità Bluetooth; in maniera simile possiamo chiedere sempre ad Android di notificare alla nostra app ogni cambio di stato.
Per prima cosa creiamo un BroadcastReceiver che riceverà i messaggi dal S.O.
mReceiver = new BroadcastReceiver() { |
all’interno del metodo onReceive() del nostro Receiver verifichiamo se il messaggio ricevuto è relativo al cambio di stato del modulo Bluetooth:
public void onReceive(Context context, Intent intent) { String action = intent.getAction(); if (BluetoothAdapter.ACTION_STATE_CHANGED.equals(action)) { |
otteniamo quindi lo stato attuale dagli extra parameters dell’Intent. Lo stato è un valore di tipo int, utilizziamo quindi il metodo getIntExtra, indicando il nome del parametro da ottenere e specificando un valore di default, che ci verrà restituito se non viene trovato un parametro con il nome specificato:
int actualState = intent.getIntExtra(BluetoothAdapter.EXTRA_STATE, BluetoothAdapter.STATE_OFF); |
infine registriamo il nostro Receiver come abbiamo già imparato:
IntentFilter stateChangedfilter = new IntentFilter(BluetoothAdapter.ACTION_STATE_CHANGED); registerReceiver(mReceiver, stateChangedfilter); |
Il modulo Bluetooth può avere quattro diversi stati:
- BluetoothAdapter.STATE_ON
- BluetoothAdapter.STATE_OFF
- BluetoothAdapter.STATE_TURNING_ON
- BluetoothAdapter.STATE_TURNING_OFF
Ho preparato una app di esempio che visualizza in maniera grafica lo stato attuale, aggiornandosi automaticamente se questo cambia:
I sorgenti della app sono come sempre disponibili su Github!