Bluetooth Low Energy

Android fornisce il supporto integrato della piattaforma per Bluetooth Low Energy (BLE) nel ruolo centrale e fornisce API che le app possono utilizzare per rilevare dispositivi, eseguire query su servizi e trasmettere informazioni.

Ecco alcuni casi d'uso comuni:

  • Trasferimento di piccole quantità di dati tra dispositivi vicini.
  • Interazione con i sensori di prossimità per offrire agli utenti un'esperienza personalizzata in base alla loro posizione attuale.

A differenza del Bluetooth classico, BLE è progettato per un consumo energetico notevolmente inferiore. Ciò consente alle app di comunicare con dispositivi BLE con requisiti di alimentazione più rigidi, come sensori di prossimità, cardiofrequenzimetri e dispositivi per il fitness.

Attenzione:quando un utente accoppia il proprio dispositivo a un altro utilizzando BLE, i dati comunicati tra i due dispositivi sono accessibili a tutte le app sul dispositivo dell'utente.

Per questo motivo, se la tua app acquisisce dati sensibili, devi implementare la sicurezza a livello di app per proteggere la privacy di questi dati.

Nozioni di base

Affinché i dispositivi abilitati BLE possano trasmettere dati tra loro, devono prima formare un canale di comunicazione. Per utilizzare le API Bluetooth LE è necessario dichiarare diverse autorizzazioni nel file manifest. Una volta che l'app ha l'autorizzazione per utilizzare il Bluetooth, l'app deve accedere a BluetoothAdapter e determinare se il Bluetooth è disponibile sul dispositivo. Se il Bluetooth è disponibile, il dispositivo eseguirà la ricerca di dispositivi BLE nelle vicinanze. Una volta individuato un dispositivo, le relative funzionalità BLE vengono rilevate collegandoci al server GATT sul dispositivo BLE. Una volta stabilita una connessione, i dati possono essere trasferiti con il dispositivo connesso in base ai servizi e alle caratteristiche disponibili.

Termini e concetti chiave

Di seguito è riportato un riepilogo dei termini e concetti chiave di BLE:

  • Profilo attributo generico (GATT)
    Il profilo GATT è una specifica generale per l'invio e la ricezione di brevi dati noti come "attributi" tramite un link BLE. Tutti i profili di applicazione BLE attuali sono basati su GATT. Esamina l'esempio di Android BluetoothLeGatt su GitHub per saperne di più.
  • Profili
    Il Bluetooth SIG definisce molti profili per i dispositivi BLE. Un profilo è una specifica del funzionamento di un dispositivo in una determinata applicazione. Tieni presente che un dispositivo può implementare più di un profilo. Ad esempio, un dispositivo potrebbe contenere un cardiofrequenzimetro e un rilevatore del livello della batteria.
  • Protocollo degli attributi (ATT)
    GATT si basa sull'ATT (Attribute Protocol). Questo sistema è noto anche come GATT/ATT. L'ATT è ottimizzato per l'esecuzione sui dispositivi BLE. A questo scopo, utilizza il minor numero possibile di byte. Ogni attributo è identificato in modo univoco da un UUID (Universally Unique Identifier), un formato standardizzato a 128 bit per un ID stringa utilizzato per identificare in modo univoco le informazioni. Gli attributi trasportati dall'ATT sono formattati come caratteristiche e servizi.
  • Caratteristica
    Una caratteristica contiene un singolo valore e descrittori 0-n che descrivono il valore della caratteristica. Una caratteristica può essere considerata come un tipo, analogo a una classe.
  • Descrittore
    I descrittori sono attributi definiti che descrivono un valore caratteristico. Ad esempio, un descrittore potrebbe specificare una descrizione leggibile, un intervallo accettabile per il valore di una caratteristica o un'unità di misura specifica per il valore di una caratteristica.
  • Servizio
    Un servizio è un insieme di caratteristiche. Ad esempio, è possibile avere un servizio chiamato "Monitoraggio della frequenza cardiaca" che include caratteristiche come "misurazione della frequenza cardiaca". Puoi trovare un elenco di profili e servizi basati su GATT esistenti su bluetooth.org.

Ruoli e responsabilità

Quando un dispositivo interagisce con un dispositivo BLE, si applicano i seguenti ruoli e responsabilità:

  • Centrale o periferica. Questo vale per la connessione BLE stessa. Il dispositivo nel ruolo centrale esegue la scansione per cercare la pubblicità e il dispositivo nel ruolo della periferica rende la pubblicità.

  • Confronto tra server GATT e client GATT. Questo determina il modo in cui due dispositivi comunicano tra loro una volta stabilita la connessione. Per capire la distinzione, immagina di avere uno smartphone Android e un tracker di attività che è un dispositivo BLE. Il ruolo centrale è supportato dal telefono, mentre il tracker di attività supporta il ruolo delle periferiche. Per stabilire una connessione BLE, ne hai bisogno uno. Due dispositivi che supportano solo le periferiche non potrebbero comunicare tra loro, né potrebbero farlo due dispositivi che supportano solo le periferiche.

Una volta stabilita una connessione, lo smartphone e l'activity tracker iniziano a trasferire i metadati GATT l'uno con l'altro. A seconda del tipo di dati trasferiti, uno o l'altro può fungere da server. Ad esempio, se il tracker attività desidera segnalare i dati dei sensori al telefono, potrebbe essere utile che il tracker di attività agisca da server. Se il tracker di attività desidera ricevere aggiornamenti dal telefono, allora potrebbe essere opportuno che il telefono agisca da server.

Nell'esempio utilizzato in questo argomento, l'app (in esecuzione su un dispositivo Android) è il client GATT. L'app riceve i dati dal server GATT, un cardiofrequenzimetro BLE che supporta il profilo della frequenza cardiaca. In alternativa, puoi progettare la tua app in modo che ricopri il ruolo del server GATT. Per ulteriori informazioni, visita la pagina BluetoothGattServer.