O recurso Wi-Fi Direct, também conhecido como Wi-Fi P2P, permite que os dispositivos compatíveis se descubram e se conectem diretamente usando o protocolo Wi-Fi Direct sem acesso à Internet ou a uma rede móvel. Esse recurso, criado com base na Wi-Fi Alliance (WFA) especificação Wi-Fi Direct permite o compartilhamento de dados de alta capacidade entre dispositivos de confiança e apps que estão fora da rede.
Exemplos e origem
Para usar esse recurso, os fabricantes de dispositivos precisam implementar as interfaces HAL de fornecedor e suplicante de Wi-Fi.
No Android 13, a interface do suplicante usa AIDL para a definição de HAL. No Android 14 e versões mais recentes, a interface HAL do fornecedor usa AIDL. No Android 12 e versões anteriores, as interfaces HAL do suplicante e do fornecedor são definidas usando HIDL.
As seguintes plataformas HAL de Wi-Fi são necessárias para usar o recurso Wi-Fi Direct:
hardware/interfaces/wifi/aidlouhardware/interfaces/wifi/1.3ou mais recentehardware/interfaces/wifi/supplicant/aidlouhardware/interfaces/wifi/supplicant/1.2ou mais recente
Implementação
Os fabricantes de dispositivos precisam oferecer suporte ao framework e à HAL/firmware:
- Framework:
- Código do AOSP
- Ativar o Wi-Fi Direct: requer uma flag de recurso
- Suporte a HAL do Wi-Fi Direct (P2P), o que implica suporte a firmware
Para implementar esse recurso, os fabricantes de dispositivos implementam as interfaces HIDL ou AIDL de Wi-Fi e ativam a flag de recurso para o Wi-Fi Direct. No device.mk localizado
em device/<oem>/<device>, modifique a variável de ambiente PRODUCT_COPY_FILES para incluir suporte ao recurso Wi-Fi Direct:
PRODUCT_COPY_FILES +=
frameworks/native/data/etc/android.hardware.wifi.direct.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.wifi.direct.xml
Todos os outros requisitos para oferecer suporte ao Wi-Fi Direct estão incluídos no AOSP.
Ordem aleatória de MAC
O Android exige que o endereço do dispositivo e o endereço da interface do Wi-Fi Direct sejam randomizados. Eles precisam ser diferentes do endereço MAC verdadeiro do dispositivo e atender aos seguintes requisitos:
- O endereço do dispositivo Wi-Fi Direct precisa ser randomizado na criação da interface se nenhum grupo persistente for salvo. Caso contrário, o endereço do dispositivo precisa continuar usando o último endereço MAC gerado.
- O endereço da interface Wi-Fi Direct, também conhecido como endereço de grupo, precisa ser randomizado sempre que uma conexão for estabelecida.
A randomização de MAC do Wi-Fi Direct é implementada no "wpa_supplicant" e controlada por duas configurações, p2p_device_random_mac_addr e p2p_interface_random_mac_addr.
Para ativar esse recurso, os fabricantes de dispositivos precisam:
- Implementar a API
ISupplicantP2pIface::setMacRandomizationdo suplicante de Wi-Fi. Dependendo da interface implementada, isso está em:hardware/interface/wifi/supplicant/1.2para HIDLhardware/interface/wifi/supplicant/aidlpara AIDL
- Definir
config_wifi_p2p_mac_randomization_supportedcomo "true" em uma sobreposição personalizada do dispositivo.
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 Direct. O Wi-Fi Direct também pode ser testado usando o conjunto de testes de fornecedor (VTS).
Testes de unidade
Verifique o pacote Wi-Fi Direct usando os testes a seguir.
Testes de serviço:
atest com.android.server.wifi.p2pTestes do administrador:
atest android.net.wifi.p2pTestes do conjunto de testes de compatibilidade (CTS)
Use os testes do CTS para validar o recurso Wi-Fi Direct. O CTS detecta quando o recurso está ativado e inclui automaticamente os testes associados.
Para acionar os testes do CTS, execute:
atest android.net.wifi.p2p.ctsTestes do CTS Verifier
Os testes do CTS Verifier validam o comportamento do Wi-Fi Direct 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 Direct Tests".