La función de Wi-Fi Aware que se agregó en Android 8.0 permite que los dispositivos compatibles se descubran, se conecten y se midan (se agregó en Android 9) entre sí directamente con el protocolo de Wi-Fi Aware sin acceso a Internet ni a una red móvil. Esta función, basada en la especificación de Wi-Fi Aware de la Wi-Fi Alliance (WFA) (versiones 2.0, 3.0, 3.1 y 4.0), facilita el uso compartido de datos de alta capacidad de procesamiento entre dispositivos de confianza y apps que de otro modo estarían fuera de la red.
Para obtener una descripción detallada de la arquitectura de Wi-Fi Aware en Android 17 y versiones posteriores, consulta Arquitectura de Wi-Fi Aware.
Ejemplos y fuente
Para usar esta función, los fabricantes de dispositivos deben implementar la HAL de Wi-Fi del proveedor. En Android 14 y versiones posteriores, la interfaz de la HAL del proveedor se define con AIDL. En Android 13 y versiones anteriores, la interfaz de la HAL del proveedor se define con HIDL.
Sigue la interfaz de Wi-Fi para usar la función de reconocimiento de Wi-Fi. Según la interfaz que se implemente, puede ser una de las siguientes opciones:
- AIDL:
hardware/interfaces/wifi/aidl - HIDL:
hardware/interfaces/wifi/1.2o posterior
Puedes consultar la HAL de Wi-Fi heredada para ver cómo se correlaciona con las interfaces de AIDL y HIDL:
hardware/libhardware_legacy/+/android17-release/include/hardware_legacy/wifi_nan.h.
Implementación
Los fabricantes de dispositivos deben proporcionar compatibilidad con el framework y con la HAL o el firmware:
- Framework:
- Código del Proyecto de código abierto de Android (AOSP)
- Habilitar Aware: Requiere una marca de función y una marca de compilación
- Compatibilidad con la HAL de Wi-Fi Aware (NAN) (lo que implica compatibilidad con el firmware)
Para implementar esta función, los fabricantes de dispositivos implementan la interfaz de Wi-Fi y habilitan dos marcas de funciones:
En
BoardConfig.mkoBoardConfig-common.mk, ubicados endevice/<oem>/<device>, agrega la siguiente marca:WIFI_HIDL_FEATURE_AWARE := trueEn
device.mk, ubicado endevice/<oem>/<device>, modifica la variable de entornoPRODUCT_COPY_FILESpara incluir compatibilidad con la función 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
Wi-Fi Aware incluye el rango a dispositivos pares con el protocolo IEEE 802.11mc, también conocido como tiempo de ida y vuelta (RTT). Esta subfunción de Wi-Fi Aware depende de que el dispositivo admita la función de RTT de Wi-Fi, es decir, requiere que el dispositivo admita tanto Wi-Fi Aware como RTT de Wi-Fi. Para obtener más detalles, consulta RTT de Wi-Fi.
De lo contrario, AOSP incluye todo lo necesario para esta función.
La marca WIFI_HIDL_FEATURE_AWARE se ignora si se especifica la marca WIFI_HAL_INTERFACE_COMBINATIONS. Para obtener más información, consulta Simultaneidad de varias interfaces de Wi-Fi.
Aleatorización de MAC
Android requiere que la dirección MAC de las interfaces de descubrimiento (NMI) y datos (NDP) de Wi-Fi Aware se aleatorice y no sea idéntica a la dirección MAC real del dispositivo. Las direcciones MAC deben cumplir con los siguientes requisitos:
- Se aleatoriza cada vez que se habilita o se vuelve a habilitar el reconocimiento de Wi-Fi.
Cuando Wi-Fi Aware está habilitado, la dirección MAC debe aleatorizarse en un intervalo regular configurado por el parámetro
NanConfigRequest.macAddressRandomizationIntervalSec. De forma predeterminada, el framework lo configura en 30 minutos.
Suspender y reanudar
En Android 14 y versiones posteriores, Wi-Fi Aware permite que las apps con privilegios suspendan y reanuden las sesiones de descubrimiento activas (incluidas todas las rutas de datos asociadas con esas sesiones). Admitir esta capacidad permite que los dispositivos reanuden las sesiones de descubrimiento más rápido y usen menos energía, ya que las sesiones de descubrimiento se pueden suspender.
Si un dispositivo admite esta capacidad de suspensión y reanudación, el firmware suspende la sesión de Wi-Fi Aware cuando una app con privilegios suspende la sesión de descubrimiento. Cuando una sesión de detección está en estado suspendido, el dispositivo no transmite ni recibe ningún fotograma para esa sesión, incluidos los NDP activos en ella. Si se suspenden todas las sesiones de detección, el dispositivo no transmite ni recibe ningún fotograma de Wi-Fi Aware.
Cuando una app privilegiada reanuda una sesión de descubrimiento suspendida, el framework devuelve la sesión a su estado anterior, incluidas todas las sesiones de NDP asociadas. Reanudar una sesión de descubrimiento suspendida es más rápido que iniciar Wi-Fi Aware y crear una nueva sesión de descubrimiento.
Para admitir la capacidad de suspender y reanudar las sesiones de detección, los fabricantes de dispositivos deben proporcionar compatibilidad con HAL y firmware. Para obtener más información, consulta IWifiNanIface.java.
Los fabricantes de dispositivos pueden usar comunicaciones fuera de banda (por ejemplo, BLE) para sincronizar la suspensión y la reanudación en varios dispositivos.
Validación
Android proporciona un conjunto de pruebas de unidades, pruebas del Conjunto de pruebas de compatibilidad (CTS) y pruebas del verificador del CTS para validar la función de Wi-Fi Aware. Wi-Fi Aware también se puede probar con el Conjunto de pruebas de proveedores (VTS).
Pruebas de unidades
Las pruebas del paquete Wi-Fi Aware se ejecutan con lo siguiente:
Pruebas de servicio:
atest com.android.server.wifi.awarePruebas de administrador:
atest android.net.wifi.awarePruebas del Conjunto de pruebas de compatibilidad (CTS)
Usa las pruebas de CTS para validar la función de Wi-Fi Aware. El CTS detecta cuando la función está habilitada y, automáticamente, incluye las pruebas asociadas.
Las pruebas de CTS se pueden activar con lo siguiente:
atest SingleDeviceTestPruebas del verificador del CTS
Las pruebas del verificador del CTS validan el comportamiento de Wi-Fi Aware con dos dispositivos: un dispositivo de prueba y un dispositivo correcto conocido. Para ejecutar las pruebas, abre CTS Verifier y navega a la sección titulada Wi-Fi Aware Tests.