La funzionalità Wi-Fi Aware aggiunta in Android 8.0 consente ai dispositivi supportati di rilevarsi, connettersi e comunicare tra loro direttamente utilizzando il protocollo Wi-Fi Aware senza accesso a internet o alla rete mobile. Questa funzionalità, basata sulla specifica Wi-Fi Aware (versioni 2.0, 3.0, 3.1 e 4.0) della Wi-Fi Alliance (WFA), consente di condividere facilmente dati ad alta velocità tra dispositivi e app attendibili che altrimenti non sono in rete.
Esempi e fonte
Per utilizzare questa funzionalità, i produttori di dispositivi devono implementare l'HAL del fornitore Wi-Fi. In Android 14 e versioni successive, l'interfaccia HAL del fornitore è definita utilizzando AIDL. Per Android 13 e versioni precedenti, l'interfaccia HAL del fornitore è definita utilizzando 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
Puoi fare riferimento alla versione precedente dell'HAL Wi-Fi per vedere come è correlata al Interfacce AIDL e HIDL: hardware/libhardware_legacy/+/main/include/hardware_legacy/wifi_nan.h.
Implementazione
I produttori di dispositivi devono fornire il supporto sia del framework sia di 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 attivare due flag di funzionalità:
In
BoardConfig.mk
oBoardConfig-common.mk
indevice/<oem>/<device>
, aggiungi il seguente flag:WIFI_HIDL_FEATURE_AWARE := true
Modifica il valore nella colonna
device.mk
situata indevice/<oem>/<device>
PRODUCT_COPY_FILES
per includere il supporto del Wi-Fi Funzionalità Aware:PRODUCT_COPY_FILES += frameworks/native/data/etc/android.hardware.wifi.aware.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.wifi.aware.xml
Wi-Fi Aware include la misurazione della distanza dai dispositivi peer utilizzando il protocollo IEEE 802.11mc, conosciuto anche come tempo di transito (RTT). Questa funzionalità secondaria di Wi-Fi Aware è condizionata al supporto della funzionalità Wi-Fi RTT da parte del dispositivo, ovvero richiede che il dispositivo supporti sia Wi-Fi Aware sia Wi-Fi RTT. Per maggiori dettagli, consulta 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 ulteriori informazioni, consulta
Contemporaneità multi-interfaccia Wi-Fi.
Randomizzazione MAC
Android richiede l'indirizzo MAC del rilevamento e dei dati Wi-Fi Aware (NDP) randomizzati e che non siano identiche 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 Wi-Fi Aware è attivato, l'indirizzo MAC deve essere randomizzato a un intervallo regolare configurato dal parametro
NanConfigRequest.macAddressRandomizationIntervalSec
. Questo configurato dal framework è di 30 minuti per impostazione predefinita.
Sospendi e riprendi
In Android 14 e versioni successive, la tecnologia Wi-Fi Aware supporta la possibilità per le app con privilegi di sospendere e riprendere le sessioni di rilevamento attive (inclusi tutti i percorsi dati associati a queste sessioni). Supporto di consente ai dispositivi di riprendere le sessioni di rilevamento più velocemente e consumare meno energia, le sessioni di rilevamento possono essere sospese.
Se un dispositivo supporta questa funzionalità di sospensione e ripresa, il firmware sospende la sessione Wi-Fi Aware quando un'app privilegiata sospende la sessione di rilevamento. Quando una sessione di rilevamento è in stato sospeso, il dispositivo non trasmette o ricevere frame per quella sessione, inclusi eventuali NDP attivi durante la sessione. Se tutte le sessioni di rilevamento sono sospese, il dispositivo non trasmette o riceve frame Wi-Fi Aware.
Quando un'app privilegiata 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 richiamare Wi-Fi Aware e creazione di una nuova sessione di rilevamento.
Per consentire la sospensione e la ripresa delle sessioni di rilevamento, il dispositivo
i produttori devono fornire il supporto per HAL e firmware. Per maggiori dettagli, consulta
IWifiNanIface.java
.
I produttori di dispositivi possono utilizzare le comunicazioni out-of-band (ad esempio BLE) per sincronizzare la sospensione e la ripresa su più dispositivi.
Convalida
Android fornisce un insieme di test di unità, test della suite di test di compatibilità (CTS) e test di CTS Verifier per convalidare la funzionalità Wi-Fi aware. Wi-Fi Aware può essere testato anche utilizzando la Vendor Test Suite (VTS).
Test delle unità
I test del pacchetto Wi-Fi Aware vengono eseguiti utilizzando:
Test di servizio:
atest com.android.server.wifi.aware
Test di gestione:
atest android.net.wifi.aware
Test della suite di test di compatibilità (CTS)
Utilizza i test CTS per convalidare la funzionalità Wi-Fi Aware. Il CTS rileva quando la funzionalità è attivata 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 test e un dispositivo riconoscibile. Per eseguire i test, apri CTS Verifier e vai alla sezione Wi-Fi Aware Tests (Test Wi-Fi Aware).