Bluetooth Low Energy

Bluetooth Low Energy (BLE), disponibile in Android 4.3 e versioni successive, crea brevi connessioni tra dispositivi per trasferire raffiche di dati. BLE rimane in modalità sospensione quando non è connesso. Ciò consente a BLE di fornire una larghezza di banda inferiore e un consumo energetico ridotto rispetto al Bluetooth classico. È ideale per applicazioni come un cardiofrequenzimetro o una tastiera wireless. Per utilizzare BLE, i dispositivi devono disporre di un chipset che supporti BLE.

Implementazione

Tutti gli attuali profili delle applicazioni BLE si basano sul Generic Attribute Profile (GATT). Quando un dispositivo 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 API per le interazioni tra server GATT e client GATT. Per sfruttare appieno le API BLE, implementa i requisiti HCI Bluetooth Android .

Modalità del dispositivo

Quando si utilizza BLE, un dispositivo Android può fungere da dispositivo periferico, dispositivo centrale o entrambi. La modalità periferica consente ai dispositivi di inviare pacchetti pubblicitari. La modalità centrale consente ai dispositivi di cercare annunci pubblicitari. Un dispositivo Android che funge sia da dispositivo periferico che da dispositivo centrale può comunicare con altri dispositivi periferici BLE inviando annunci pubblicitari in modalità periferica. I dispositivi che supportano Bluetooth 4.1 e versioni precedenti possono utilizzare BLE solo in modalità centrale. I chipset dei dispositivi più vecchi potrebbero non supportare la modalità periferica BLE.

Scansione BLE

Un dispositivo Android può individuare ed eseguire la scansione di 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 minore coinvolgimento da parte 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 abilitano la funzione:

  1. Vai su Impostazioni > Sicurezza e posizione > Posizione .
  2. Verifica che l'interruttore Posizione On / Off sia in posizione On .
  3. Vai a Modalità .
  4. Selezionare la modalità Alta precisione o Risparmio batteria .

In Android 11 o versioni precedenti, le singole app richiedono autorizzazioni di localizzazione per utilizzare la scansione BLE, anche se eseguono la scansione solo per trovare dispositivi a cui connettersi. Se l'utente disabilita la scansione della posizione o non concede a un'app le autorizzazioni di localizzazione, l'app non riceverà alcun risultato della scansione 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 alla posizione. Per ulteriori informazioni, consulta Nuove autorizzazioni Bluetooth in Android 12 .

Gli utenti possono disattivare la scansione in background Bluetooth a livello di sistema accedendo a Impostazioni > Sicurezza e posizione > Posizione > Scansione e disattivando l'interruttore per la scansione Bluetooth . Ciò non influisce sulla scansione BLE della posizione o dei dispositivi locali.

Filtraggio dei 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 al processore dell'applicazione (AP) gli eventi trovati e persi relativi ai dispositivi BLE. Il filtraggio funziona anche per le scansioni batch, il che aiuta a risparmiare energia poiché la scansione BLE viene scaricata sul firmware. Le scansioni batch riducono la frequenza con cui l'AP si riattiva a causa della scansione BLE di dispositivi o beacon.

La funzionalità OnFound / OnLost viene implementata nel controller Bluetooth e quindi testata per confermare che i dispositivi BLE non vengano persi nelle scansioni. Ciò garantisce un risparmio energetico e può anche fornire i seguenti vantaggi:

  • Per un evento OnFound , l'AP principale si sveglia al rilevamento di un dispositivo specifico.
  • Per un evento OnLost , l'AP si riattiva quando non è possibile trovare un dispositivo specifico.
  • Le app Framework ricevono meno notifiche indesiderate quando un dispositivo nelle vicinanze si trova nel raggio d'azione.
  • Le scansioni continue consentono alle app framework di ricevere una notifica quando un dispositivo è fuori portata.

Un filtro di scansione può basarsi sul rilevamento degli annunci pubblicitari 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). Implementare il filtraggio BLE utilizzando il comando HCI Advertising Packet Content Filter .