Prima che la tua app possa comunicare tramite Bluetooth o Bluetooth Low Energy, devi verificare che il Bluetooth sia supportato dal dispositivo e, in caso affermativo, che sia attivato. Tieni presente che questo controllo è necessario solo se l'attributo android:required
nella voce del file manifest <uses-feature.../>
è impostato su false
.
Se il Bluetooth non è supportato, devi disattivare correttamente tutte le funzionalità Bluetooth. Se il Bluetooth è supportato, ma è disattivato, puoi richiedere all'utente di attivare il Bluetooth senza uscire dall'app.
Il primo passaggio consiste nell'aggiungere le autorizzazioni Bluetooth al file manifest per poter utilizzare le API seguenti.
Una volta applicate le autorizzazioni, la configurazione del Bluetooth viene compiuta in due passaggi utilizzando BluetoothAdapter
:
Scarica
BluetoothAdapter
.Il
BluetoothAdapter
è necessario per tutte le attività Bluetooth.BluetoothAdapter
rappresenta l'adattatore Bluetooth del dispositivo (la radio Bluetooth). Per ricevere unBluetoothAdapter
, devi prima avere unContext
. Utilizza questo contesto per ottenere un'istanza del servizio di sistemaBluetoothManager
. La chiamata aBluetoothManager#getAdapter
ti fornirà un oggettoBluetoothAdapter
. SegetAdapter()
restituisce null, il dispositivo non supporta il Bluetooth.Ecco alcuni esempi:
Kotlin
val bluetoothManager: BluetoothManager = getSystemService(BluetoothManager::class.java) val bluetoothAdapter: BluetoothAdapter? = bluetoothManager.getAdapter() if (bluetoothAdapter == null) { // Device doesn't support Bluetooth }
Java
BluetoothManager bluetoothManager = getSystemService(BluetoothManager.class); BluetoothAdapter bluetoothAdapter = bluetoothManager.getAdapter(); if (bluetoothAdapter == null) { // Device doesn't support Bluetooth }
Attiva Bluetooth.
Dopodiché devi assicurarti che il Bluetooth sia attivo. Chiama il numero
isEnabled()
per verificare se il Bluetooth è attualmente attivo. Se questo metodo restituisce false, il Bluetooth è disattivato. Per richiedere l'attivazione del Bluetooth, chiamastartActivityForResult()
e trasmetti un'azione dell'intentACTION_REQUEST_ENABLE
. Con questa chiamata viene inviata una richiesta di attivazione del Bluetooth tramite le impostazioni di sistema (senza interrompere l'app).Ecco alcuni esempi:
Kotlin
if (bluetoothAdapter?.isEnabled == false) { val enableBtIntent = Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE) startActivityForResult(enableBtIntent, REQUEST_ENABLE_BT) }
Java
if (!bluetoothAdapter.isEnabled()) { Intent enableBtIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE); startActivityForResult(enableBtIntent, REQUEST_ENABLE_BT); }
Viene visualizzata una finestra di dialogo che richiede l'autorizzazione dell'utente per attivare il Bluetooth, come mostrato nella Figura 1. Se l'utente concede l'autorizzazione, il sistema inizia ad attivare il Bluetooth e lo stato attivo torna sulla tua app al termine (o non riuscito) del processo.
Figura 1. La finestra di dialogo per l'attivazione del Bluetooth.
La costante REQUEST_ENABLE_BT
passata a
startActivityForResult()
è un numero intero definito a livello locale che deve essere maggiore o uguale a 0. Il sistema
ti restituisce questa costante nella tua
implementazione di
onActivityResult()
sotto forma di parametro requestCode
.
Se l'attivazione del Bluetooth ha esito positivo, la tua attività riceve il codice risultato RESULT_OK
nel callback onActivityResult()
. Se il Bluetooth non è stato attivato a causa di un errore (o l'utente ha risposto "Rifiuta"), il codice risultato è RESULT_CANCELED
.
Facoltativamente, l'app può anche ascoltare l'intent di trasmissione ACTION_STATE_CHANGED
, che il sistema trasmette ogni volta che lo stato Bluetooth cambia. Questa trasmissione contiene i campi aggiuntivi EXTRA_STATE
e EXTRA_PREVIOUS_STATE
, contenenti rispettivamente il nuovo e il vecchio stato Bluetooth. I valori possibili per questi campi aggiuntivi sono STATE_TURNING_ON
, STATE_ON
, STATE_TURNING_OFF
e STATE_OFF
.
L'ascolto di questa trasmissione può essere utile se l'app deve rilevare le modifiche di runtime apportate allo stato Bluetooth.
Una volta attivato il Bluetooth sul dispositivo, puoi utilizzare sia il Bluetooth classico sia il Bluetooth Low Energy.
Per Bluetooth classico, puoi trovare dispositivi Bluetooth e connetterti a dispositivi Bluetooth.
Per Bluetooth Low Energy, puoi trovare i dispositivi BLE, connetterti a un server GATT e trasferire dati BLE.