Consapevole del Wi-Fi

La funzionalità Wi-Fi Aware aggiunta in Android 8.0 consente ai dispositivi che supportano il rilevamento, la connessione e il raggio d'azione (aggiunti in Android 9) direttamente tramite il protocollo Wi-Fi Aware senza accesso a internet o alla rete mobile. Questa funzionalità, basata sulla specifica Wi-Fi Aware di Wi-Fi Alliance (WFA), (versioni 2.0, 3.0, 3.1 e 4.0), consente di condividere facilmente i dati a velocità effettiva elevata tra dispositivi e app attendibili che altrimenti si trovano all'esterno della rete.

Esempi e fonte

Per utilizzare questa funzionalità, i produttori di dispositivi devono implementare l'HAL del fornitore di Wi-Fi. In Android 14 e versioni successive, l'interfaccia dell'HAL del fornitore è definita mediante AIDL. Per Android 13 e versioni precedenti, l'interfaccia dell'HAL del fornitore viene definita tramite HIDL.

Segui l'interfaccia Wi-Fi per utilizzare la funzionalità Wi-Fi Aware. A seconda dell'interfaccia implementata, si può procedere in uno dei seguenti modi:

  • AIDL: hardware/interfaces/wifi/aidl
  • HIDL: hardware/interfaces/wifi/1.2 o versioni successive

Per vedere come è correlato alle interfacce AIDL e HIDL, fai riferimento alla versione precedente dell'HAL Wi-Fi: hardware/libhardware_legacy/+/main/include/hardware_legacy/wifi_nan.h.

Implementazione

I produttori di dispositivi devono fornire supporto sia per il framework che per l'HAL/firmware:

  • Framework:
    • Codice AOSP
    • Abilita Aware: richiede sia un flag di funzionalità che un flag di build
  • Supporto dell'HAL per Wi-Fi Aware (NAN), che implica il supporto del firmware

Per implementare questa funzionalità, i produttori di dispositivi implementano l'interfaccia Wi-Fi e abilitano due flag funzionalità:

  • Nella regione BoardConfig.mk o BoardConfig-common.mk in device/<oem>/<device>, aggiungi il seguente flag:

    WIFI_HIDL_FEATURE_AWARE := true
    
  • In device.mk nel criterio device/<oem>/<device>, modifica la variabile di ambiente PRODUCT_COPY_FILES in modo che includa il supporto della funzionalità Wi-Fi Aware:

    PRODUCT_COPY_FILES +=
    frameworks/native/data/etc/android.hardware.wifi.aware.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.wifi.aware.xml
    

Il Wi-Fi Aware comprende i dispositivi peer che utilizzano il protocollo IEEE 802.11mc, noto anche come Round Trip Time (RTT). Questa funzionalità secondaria di Aware Wi-Fi dipende dal fatto che il dispositivo supporti la funzionalità Wi-Fi RTT, ovvero che il dispositivo supporti sia Wi-Fi Aware che Wi-Fi RTT. Per maggiori dettagli, vedi RTT Wi-Fi.

In caso contrario, tutto ciò che serve per questa funzionalità è incluso in AOSP.

Il flag WIFI_HIDL_FEATURE_AWARE viene ignorato se viene specificato il flag WIFI_HAL_INTERFACE_COMBINATIONS. Per maggiori informazioni, consulta Contemporaneità tra più interfacce Wi-Fi.

Randomizzazione MAC

Android richiede che l'indirizzo MAC delle interfacce Wi-Fi Aware Discovery (NMI) e delle interfacce dati (NDP) sia randomizzato e che non sia identico al vero indirizzo MAC del dispositivo. Gli indirizzi MAC devono essere:

  • Randomizzato ogni volta che la funzionalità Wi-Fi Aware viene attivata o riabilitata.
  • Quando è attiva la funzionalità Wi-Fi Aware, l'indirizzo MAC deve essere randomizzato a un intervallo regolare configurato dal parametro NanConfigRequest.macAddressRandomizationIntervalSec. La durata predefinita del framework è di 30 minuti.

Sospendi e riprendi

In Android 14 e versioni successive, Wi-Fi Aware supporta la possibilità per le app con privilegi di sospendere e riprendere le sessioni di rilevamento attive (inclusi tutti i percorsi dei dati associati a queste sessioni). Grazie a questa possibilità, i dispositivi possono riprendere le sessioni di rilevamento più velocemente e consumare meno energia, perché queste ultime possono essere sospese.

Se un dispositivo supporta questa funzionalità di sospensione e ripristino, il firmware sospende la sessione Wi-Fi Aware quando un'app con privilegi sospende la sessione di rilevamento. Quando una sessione di rilevamento è in stato sospeso, il dispositivo non trasmette né riceve alcun frame per quella sessione, inclusi eventuali NDP attivi in quella sessione. Se tutte le sessioni di rilevamento sono sospese, il dispositivo non trasmette o riceve frame Aware Wi-Fi.

Quando un'app con privilegi riprende una sessione di rilevamento sospesa, il framework ripristina la sessione allo stato precedente, incluse tutte le sessioni NDP associate. Ripristinare una sessione di rilevamento sospesa è più veloce che attivare Aware Wi-Fi e creare una nuova sessione di rilevamento.

Per poter sospendere e riprendere le sessioni di rilevamento, i produttori di dispositivi devono fornire il supporto per HAL e firmware. Per maggiori dettagli, vedi IWifiNanIface.java.

I produttori di dispositivi possono utilizzare le comunicazioni fuori banda (ad esempio, BLE) per sincronizzare la sospensione e la ripresa su più dispositivi.

Convalida

Android offre una serie di test delle unità, test della suite di test di compatibilità (CTS) e test CTS Verifier per convalidare la funzionalità Wi-Fi Aware. Il Wi-Fi Aware può essere testato anche utilizzando la suite di test del fornitore (VTS).

Test delle unità

I test del pacchetto Wi-Fi Aware vengono eseguiti utilizzando:

Test di servizio:

atest com.android.server.wifi.aware

Test del gestore:

atest android.net.wifi.aware

Test della Compatibility Test Suite (CTS)

Utilizzare i test CTS per convalidare la funzionalità Wi-Fi Aware. Il CTS rileva quando la funzionalità è abilitata e include automaticamente i test associati.

I test CTS possono essere attivati utilizzando:

atest SingleDeviceTest

Test di verifica CTS

I test di CTS Verifier convalidano il comportamento di Wi-Fi Aware utilizzando due dispositivi: un dispositivo di prova e uno di prodotti noti. Per eseguire i test, apri CTS Verifier e vai alla sezione Test Wi-Fi Aware.