O Wi-Fi Aware adicionado no Android 8.0, permite que os dispositivos com suporte descubram, se conectem e intervalo (adicionados no Android 9) entre si diretamente usando o protocolo Wi-Fi Aware sem acesso à Internet ou à rede celular. Esse recurso, criado com base na Wi-Fi Alliance (WFA, na sigla em inglês) especificação Wi-Fi Aware (versões 2.0, 3.0, 3.1 e 4.0), permite o compartilhamento fácil de dados de alta capacidade entre dispositivos e apps confiáveis que estão fora da rede.
Exemplos e origem
Para usar esse recurso, os fabricantes de dispositivos precisam implementar o HAL do fornecedor de Wi-Fi. No Android 14 e versões mais recentes, a interface da HAL do fornecedor é definida usando a AIDL. No Android 13 e versões anteriores, a interface da HAL do fornecedor é definida usando a HIDL.
Siga a interface do Wi-Fi para utilizar o recurso Wi-Fi Aware. Dependendo da interface implementada, isso pode ser:
- AIDL:
hardware/interfaces/wifi/aidl
- HIDL:
hardware/interfaces/wifi/1.2
ou mais recente
Você pode consultar a HAL de Wi-Fi legada para ver como ela se relaciona com o Interfaces AIDL e HIDL: hardware/libhardware_legacy/+/main/include/hardware_legacy/wifi_nan.h.
Implementação
Os fabricantes de dispositivos precisam oferecer suporte a framework e HAL/firmware:
- Estrutura:
- Código do AOSP
- Ativar o Aware: requer uma flag de recurso e uma flag de build.
- Suporte a HAL do Wi-Fi Aware (NAN), o que implica suporte a firmware
Para implementar esse recurso, os fabricantes de dispositivos implementam a interface Wi-Fi e ativam duas flags de recurso:
Em
BoardConfig.mk
ouBoardConfig-common.mk
localizado emdevice/<oem>/<device>
, adicione a seguinte flag:WIFI_HIDL_FEATURE_AWARE := true
Em
device.mk
, localizado emdevice/<oem>/<device>
, modifique a variável de ambientePRODUCT_COPY_FILES
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 peer usando o protocolo IEEE 802.11mc, também conhecido como tempo de ida e volta (RTT). Esse sub-recurso do Wi-Fi Aware é condicional ao dispositivo compatível com o recurso Wi-Fi RTT, ou seja, exige que o dispositivo seja compatível com Wi-Fi Aware e Wi-Fi RTT. Para mais detalhes, consulte RTT do Wi-Fi.
Caso contrário, tudo o que for necessário para esse recurso será incluído no AOSP.
A sinalização WIFI_HIDL_FEATURE_AWARE
será ignorada se o
WIFI_HAL_INTERFACE_COMBINATIONS
é especificada. Para mais informações, consulte
Simultaneidade de várias interfaces de Wi-Fi.
Ordem aleatória de MAC
O Android exige o endereço MAC da descoberta do Wi-Fi Aware (NMI) e dos dados interfaces de rede (NDPs) para serem aleatórias e não idênticas ao endereço MAC verdadeiro do dispositivo. Os endereços MAC precisam ser:
- Aleatório sempre que o Wi-Fi Aware é ativado ou reativado.
Quando o Wi-Fi Aware está ativado, o endereço MAC precisa ser randomizado em um intervalo regular configurado pelo parâmetro
NanConfigRequest.macAddressRandomizationIntervalSec
. Por padrão, o framework configura esse valor como 30 minutos.
Suspender e retomar
No Android 14 e versões mais recentes, o Wi-Fi Aware oferece suporte à capacidade de apps restritos suspenderem e retomarem sessões ativas de descoberta, incluindo todos os caminhos de dados associados a essas sessões. Apoio a este permite que os dispositivos retomem sessões de descoberta mais rapidamente e usem menos energia porque sessões de descoberta podem ser suspensas.
Se um dispositivo oferecer suporte a essa capacidade de suspender e retomar, o firmware será suspenso sessão do Wi-Fi Aware quando um app privilegiado suspende a sessão de descoberta. Quando uma sessão de descoberta está em estado suspenso, o dispositivo não transmite nem receber frames para a sessão, incluindo NDPs ativos nessa sessão. sessão. 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, o framework 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 a capacidade de suspender e retomar sessões de descoberta, o dispositivo
os fabricantes devem oferecer suporte para HAL e 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 teste de compatibilidade (CTS) Testes do CTS Verifier para validar o Wi-Fi Recurso Aware. O Wi-Fi Aware também pode ser testado usando o pacote de teste de fornecedor (VTS, na sigla em inglês).
Testes de unidade
Os testes de pacote Wi-Fi Aware são executados usando:
Testes de serviço:
atest com.android.server.wifi.aware
Testes do gerenciador:
atest android.net.wifi.aware
Testes do conjunto de teste de compatibilidade (CTS)
Use 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 de CTS podem ser acionados usando:
atest SingleDeviceTest
Testes do CTS Verifier
Os testes do verificador do CTS validam o comportamento do Wi-Fi Aware usando dois dispositivos: um dispositivo de teste e um dispositivo conhecido como bom. Para executar os testes, abra o CTS Verifier e navegue até a seção intitulada Testes de Wi-Fi Aware.