O recurso Wi-Fi Aware adicionado no Android 8.0 permite que dispositivos compatíveis se descubram, se conectem, e se alcancem (adicionado no Android 9) diretamente usando o protocolo Wi-Fi Aware sem acesso à Internet ou à rede celular. Esse recurso, criado com base na especificação Wi-Fi Aware da Wi-Fi Alliance (WFA) (versões 2.0, 3.0, 3.1 e 4.0), facilita o compartilhamento de dados de alta capacidade entre dispositivos de confiança e apps que estão fora da rede.
Para uma descrição detalhada da arquitetura Wi-Fi Aware no Android 17 e versões mais recentes, consulte Arquitetura Wi-Fi Aware.
Exemplos e origem
Para usar esse recurso, os fabricantes de dispositivos precisam implementar a HAL de fornecedor de Wi-Fi. No Android 14 e versões mais recentes, a interface da HAL de fornecedor é definida usando a AIDL. No Android 13 e versões anteriores, a interface da HAL de fornecedor é definida usando a HIDL.
Siga a interface Wi-Fi para usar o recurso Wi-Fi Aware. Dependendo de qual interface é implementada, ela será:
- AIDL:
hardware/interfaces/wifi/aidl - HIDL:
hardware/interfaces/wifi/1.2ou mais recente
Consulte a HAL Wi-Fi legada para saber como ela se correlaciona com as
interfaces AIDL e HIDL:
hardware/libhardware_legacy/+/android17-release/include/hardware_legacy/wifi_nan.h.
Implementação
Os fabricantes de dispositivos precisam oferecer suporte à estrutura e à HAL/firmware:
- Estrutura:
- Código do Android Open Source Project (AOSP)
- Ativar o Aware: requer uma flag de recurso e uma flag de build
- Suporte à HAL Wi-Fi Aware (NAN), o que implica suporte ao firmware
Para implementar esse recurso, os fabricantes de dispositivos implementam a interface Wi-Fi e ativam duas flags de recurso:
Em
BoardConfig.mkouBoardConfig-common.mklocalizado emdevice/<oem>/<device>, adicione a seguinte flag:WIFI_HIDL_FEATURE_AWARE := trueEm
device.mklocalizado emdevice/<oem>/<device>, modifique aPRODUCT_COPY_FILESvariável de ambiente para incluir suporte ao recurso 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
O Wi-Fi Aware inclui o alcance de dispositivos pareados usando o protocolo IEEE 802.11mc, também conhecido como tempo de retorno (RTT, na sigla em inglês). Esse sub-recurso do Wi-Fi Aware depende do dispositivo que oferece suporte ao recurso Wi-Fi RTT. Ou seja, ele exige que o dispositivo ofereça suporte ao Wi-Fi Aware e ao Wi-Fi RTT. Para mais detalhes, consulte Wi-Fi RTT.
Caso contrário, tudo o que é necessário para esse recurso está incluído no AOSP.
A flag WIFI_HIDL_FEATURE_AWARE será ignorada se a flag WIFI_HAL_INTERFACE_COMBINATIONS for especificada. Para mais informações, consulte
Simultaneidade de várias interfaces de Wi-Fi.
Ordem aleatória de MAC
O Android exige que o endereço MAC das interfaces de descoberta (NMI) e de dados (NDPs) do Wi-Fi Aware seja aleatório e não idêntico ao endereço MAC verdadeiro do dispositivo. Os endereços MAC precisam ser:
- Aleatórios sempre que o Wi-Fi Aware for ativado ou reativado.
Quando o Wi-Fi Aware estiver ativado, o endereço MAC precisará ser aleatório em um intervalo regular configurado pelo parâmetro
NanConfigRequest.macAddressRandomizationIntervalSec. Isso é configurado pela estrutura por padrão para ser de 30 minutos.
Suspender e retomar
No Android 14 e versões mais recentes, o Wi-Fi Aware oferece suporte à capacidade de apps privilegiados de suspender e retomar sessões de descoberta ativas (incluindo todos os caminhos de dados associados a essas sessões). O suporte a essa capacidade permite que os dispositivos retomem sessões de descoberta mais rapidamente e usem menos energia, porque as sessões de descoberta podem ser suspensas.
Se um dispositivo oferece suporte a essa capacidade de suspensão e retomada, o firmware suspende a sessão Wi-Fi Aware quando um app privilegiado suspende a sessão de descoberta. Quando uma sessão de descoberta está em um estado suspenso, o dispositivo não transmite nem recebe frames para essa sessão, incluindo NDPs ativos nela. Se todas as sessões de descoberta forem suspensas, o dispositivo não transmitirá nem receberá frames Wi-Fi Aware.
Quando um app privilegiado retoma uma sessão de descoberta suspensa, a estrutura retorna a sessão ao estado anterior, incluindo todas as sessões de NDP associadas. Retomar uma sessão de descoberta suspensa é mais rápido do que ativar o Wi-Fi Aware e criar uma nova sessão de descoberta.
Para oferecer suporte à capacidade de suspender e retomar sessões de descoberta, os fabricantes de dispositivos precisam oferecer suporte à HAL e ao firmware. Para mais detalhes, consulte
IWifiNanIface.java.
Os fabricantes de dispositivos podem usar comunicações fora da banda (por exemplo, BLE) para sincronizar a suspensão e a retomada em vários dispositivos.
Validação
O Android oferece um conjunto de testes de unidade, testes do conjunto de testes de compatibilidade (CTS) e testes do CTS Verifier para validar o recurso Wi-Fi Aware. O Wi-Fi Aware também pode ser testado usando o conjunto de testes de fornecedor (VTS).
Testes de unidade
Os testes de pacote Wi-Fi Aware são executados usando:
Testes de serviço:
atest com.android.server.wifi.awareTestes do gerenciador:
atest android.net.wifi.awareTestes do conjunto de testes de compatibilidade (CTS)
Use os testes do CTS para validar o recurso Wi-Fi Aware. O CTS detecta quando o recurso está ativado e inclui automaticamente os testes associados.
Os testes do CTS podem ser acionados usando:
atest SingleDeviceTestTestes do CTS Verifier
Os testes do CTS Verifier validam o comportamento do Wi-Fi Aware usando dois dispositivos: um dispositivo de teste e um dispositivo bom conhecido. Para executar os testes, abra o CTS Verifier e navegue até a seção intitulada "Wi-Fi Aware Tests".