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. Il Bluetooth Low Energy rimane in modalità sospensione 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 BLE, i dispositivi devono avere un chipset che supporti BLE.

Implementazione

Tutti i profili delle app BLE attuali si basano sul profilo Generic Attribute (GATT). Quando un dispositivo basato su Android interagisce con un dispositivo BLE, il dispositivo che invia informazioni è il server e il dispositivo che riceve informazioni è il client. Android include API per sviluppatori per BLE, incluse le 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 il Bluetooth Low Energy, 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 di pubblicità. La modalità centrale consente ai dispositivi di cercare annunci. Un dispositivo Android che funge sia da periferica che da dispositivo centrale può comunicare con altri dispositivi periferici BLE durante l'invio di 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. Verifica che il pulsante di attivazione/disattivazione della posizione 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 di 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, consulta 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 eventi trovati e smarriti relativi ai dispositivi BLE al processore dell'applicazione (AP). Il filtraggio funziona anche per le scansioni batch, il che consente di risparmiare energia, in quanto il dispositivo esegue 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 offre anche i seguenti vantaggi:

  • Per un evento OnFound, il punto di accesso principale si riattiva al rilevamento di un dispositivo specifico.
  • Per un evento OnLost, il punto di accesso si riattiva 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 del 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 specificato di annunci dalla prima scoperta). Implementa il filtro BLE utilizzando il comando HCI Advertising Packet Content Filter.