Bluetooth Low Energy

Bluetooth Low Energy (BLE), disponibile in Android 4.3 e versioni successive, crea connessioni brevi tra i dispositivi per trasferire raffiche di dati. BLE rimane in modalità sonno quando non è connesso. In questo modo, BLE offre una larghezza di banda inferiore e un consumo energetico ridotto rispetto al Bluetooth classico. Il Bluetooth Low Energy è ideale per app come un cardiofrequenzimetro o una tastiera wireless. Per utilizzare il Bluetooth Low Energy, i dispositivi devono avere un chipset che lo supporti.

Implementazione

Tutti i profili attuali delle app BLE si basano sul profilo attributo generico (GATT) . Quando un dispositivo basato su Android interagisce con un dispositivo BLE, il dispositivo che invia le informazioni è il server e il dispositivo che riceve le informazioni è il client. Android include API per sviluppatori per BLE, incluse API per le interazioni tra server GATT e client GATT. Per sfruttare al meglio le API BLE, implementa i requisiti HCI Bluetooth di Android.

Modalità dispositivo

Quando si utilizza BLE, un dispositivo basato su Android può fungere da dispositivo periferico, da dispositivo centrale o da entrambi. La modalità periferica consente ai dispositivi di inviare pacchetti pubblicitari. La modalità centrale consente ai dispositivi di cercare annunci. Un dispositivo Android che funge sia da periferica che da dispositivo centrale può comunicare con altre periferiche BLE mentre invia annunci in modalità periferica. I dispositivi che supportano Bluetooth 4.1 e versioni precedenti possono utilizzare BLE solo in modalità centrale. I chipset dei dispositivi meno recenti potrebbero non supportare la modalità periferica BLE.

Scansione BLE

Un dispositivo basato su Android può cercare e scansionare dispositivi Bluetooth specifici in modo più efficiente quando utilizza BLE. Le API BLE consentono agli sviluppatori di app di creare filtri per trovare dispositivi con un coinvolgimento minore del controller host.

Scansione della posizione

I servizi di localizzazione di un dispositivo possono utilizzare il Bluetooth per rilevare i beacon Bluetooth e fornire una posizione più precisa. Ecco come gli utenti attivano la funzionalità:

  1. Vai a Impostazioni > Sicurezza e posizione > Posizione.
  2. Controlla che il pulsante di attivazione/disattivazione della posizione On/Off sia impostato su On.
  3. Vai a Modalità.
  4. Seleziona la modalità Alta precisione o Risparmio batteria.

In Android 11 e versioni precedenti, le singole app richiedono le autorizzazioni di accesso alla posizione per utilizzare la scansione BLE, anche se la scansione viene eseguita solo per trovare dispositivi a cui connettersi. Se l'utente disattiva la scansione della posizione o non concede le autorizzazioni di localizzazione a un'app, quest'ultima non riceverà alcun risultato della scansione BLE.

In Android 12 e versioni successive, le autorizzazioni BLUETOOTH_SCAN, BLUETOOTH_ADVERTISE e BLUETOOTH_CONNECT possono consentire alle app di cercare dispositivi nelle vicinanze senza dover richiedere l'autorizzazione di accesso alla posizione. Per ulteriori informazioni, vedi Autorizzazioni Bluetooth.

Gli utenti possono disattivare la scansione in background del Bluetooth a livello di sistema andando su Impostazioni > Sicurezza e posizione > Posizione > Scansione e facendo clic sul pulsante di attivazione/disattivazione Scansione Bluetooth per disattivare la funzionalità. Questa operazione non influisce sulla scansione BLE per la posizione o i dispositivi locali.

Filtrare i risultati della scansione

Android 6.0 e versioni successive includono la scansione BLE e la corrispondenza dei filtri sul controller Bluetooth. Un dispositivo può filtrare i risultati della scansione e segnalare gli eventi trovato e smarrito relativi ai dispositivi BLE al processore dell'applicazione (AP). Il filtro funziona anche per le scansioni batch, il che consente di risparmiare energia poiché il dispositivo scarica la scansione BLE sul firmware. Le scansioni batch riducono la frequenza con cui il punto di accesso si riattiva a causa della scansione BLE per dispositivi o beacon.

La funzionalità OnFound/OnLost è implementata nel controller Bluetooth e poi testata per verificare che i dispositivi BLE non vengano persi nelle scansioni. Ciò consente di risparmiare energia e può anche offrire i seguenti vantaggi:

  • Per un evento OnFound, il punto di accesso principale si riattiva alla scoperta di un dispositivo specifico.
  • Per un evento OnLost, l'AP si attiva quando non è possibile trovare un dispositivo specifico.
  • Le app framework ricevono meno notifiche indesiderate quando un dispositivo nelle vicinanze è nel raggio d'azione.
  • Le scansioni continue consentono alle app framework di ricevere una notifica quando un dispositivo non è nel raggio d'azione.

Un filtro di scansione può essere basato sul rilevamento delle pubblicità di un dispositivo (l'evento OnFound). Il livello Java può specificare parametri come la prima scoperta (o un numero specifico di annunci dalla prima scoperta). Implementa il filtro BLE utilizzando il comando HCI Advertising Packet Content Filter.