Bluetooth Low Energy (BLE), disponibile in Android 4.3 e versioni successive, crea connessioni brevi tra i dispositivi per trasferire picchi di dati. BLE rimane in modalità di sospensione quando non è connesso. In questo modo, BLE offre una larghezza di banda inferiore e un consumo energetico ridotto rispetto al Bluetooth classico. È ideale per app come un cardiofrequenzimetro o una tastiera wireless. Per utilizzare il BLE, i dispositivi devono avere un chipset che supporti questa tecnologia.
Implementazione
Tutti i profili delle app BLE attuali si basano sul profilo di attributi generici (GATT). Quando un dispositivo Android interagisce con un dispositivo BLE, il dispositivo che invia le informazioni è il server e il dispositivo che le riceve è il client. Android include API per sviluppatori per BLE, incluse le API per le interazioni tra i server GATT e i client GATT. Per sfruttare appieno le API BLE, implementa i requisiti HCI Bluetooth di Android.
Modalità del dispositivo
Quando si utilizza BLE, un dispositivo Android può fungere da dispositivo periferico, da dispositivo centrale o da entrambi. La modalità periferica consente ai dispositivi di inviare pacchetti di annunci. La modalità centrale consente ai dispositivi di eseguire la scansione per trovare annunci. Un dispositivo Android che funge sia da periferica sia da dispositivo centrale può comunicare con altri dispositivi periferici 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 Android può scegliere come target e cercare 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 geolocalizzazione 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à:
- Vai a Impostazioni > Sicurezza e posizione > Posizione.
- Verifica che l'opzione di attivazione/disattivazione della posizione On/Off sia impostata su On.
- Vai a Modalità.
- Seleziona la modalità Alta precisione o Basso consumo.
In Android 11 o versioni precedenti, le singole app richiedono le autorizzazioni di accesso alla posizione per utilizzare la scansione BLE, anche se eseguono la scansione solo per trovare dispositivi a cui connettersi. Se l'utente disattiva la ricerca della posizione o non concede all'app le autorizzazioni di accesso alla posizione, l'app non riceverà risultati di ricerca BLE.
A partire da Android 12, 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, consulta
Nuove autorizzazioni Bluetooth in Android 12.
Gli utenti possono disattivare la ricerca in background del Bluetooth a livello di sistema andando a Impostazioni > Sicurezza e posizione > Posizione > Ricerca e disattivando l'opzione Ricerca Bluetooth. Ciò 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 ricerca e segnalare gli eventi trovati e persi relativi ai dispositivi BLE all'AP (Application Processor). Il filtraggio funziona anche per le scansioni collettive, il che consente di risparmiare energia poiché la scansione BLE viene caricata sul firmware. Le scansioni collettive riducono la frequenza di risveglio del AP a causa della scansione BLE per dispositivi o beacon.
La funzionalità OnFound
/OnLost
viene implementata
nel controller Bluetooth e poi testata per verificare che i dispositivi BLE
non vengano persi nelle ricerche. Ciò consente di risparmiare energia e offre anche i seguenti vantaggi:
- Per un evento
OnFound
, l'AP principale si attiva al rilevamento di un dispositivo specifico. - Per un evento
OnLost
, l'AP si riattiva quando non è possibile trovare un dispositivo specifico. - Le app del framework ricevono meno notifiche indesiderate quando un dispositivo nelle vicinanze è nel raggio d'azione.
- Le scansioni continue consentono alle app del framework di ricevere una notifica quando un dispositivo è fuori portata.
Un filtro di scansione può essere basato sul rilevamento degli annunci di un dispositivo (evento OnFound
). Il livello Java può
specificare parametri come la prima rilevazione (o un numero specificato di annunci
dalla prima rilevazione). Implementa il filtro BLE utilizzando
il
comando HCI Advertising Packet Content Filter.