Android brinda soporte para puntos de acceso Wi-Fi (Soft AP), incluida la conexión a través de un punto de acceso Wi-FI y puntos de acceso Wi-Fi solo locales.
La función AP suave permite la configuración de lo siguiente:
- SSID y BSSID
- Tipo de seguridad (incluido WPA3)
- SSID oculto
- Banda operativa y canal (incluido ACS)
- Número máximo de clientes permitidos
- Valor de tiempo de espera de apagado automático
- Lista de permitidos y lista de bloqueo para permitir al usuario el control de los dispositivos asociados
- Nivel de aleatorización de MAC para AP BSSID
- 802.11ax y 802.11be
Las capacidades del dispositivo determinan la disponibilidad de estos controles. Android 11 introduce API para obtener estas capacidades. Los fabricantes de dispositivos también pueden especificar las capacidades del dispositivo base mediante superposiciones.
Tenga en cuenta que algunas de las API son API del sistema y están restringidas mediante permisos para que solo la aplicación de Configuración del sistema pueda acceder a ellas.
Desarrollo de aplicaciones con API de hotspot
La aplicación de configuración AOSP proporciona una implementación predeterminada de un punto de acceso Wi-Fi conectado, sin embargo, no utiliza todas las API para la configuración de Soft AP.
Para admitir la conexión a red a través de un punto de acceso o un punto de acceso solo local, la aplicación debe realizar las siguientes funciones:
Registre una devolución de llamada para obtener las capacidades del dispositivo usando
WifiManager#registerSoftApCallback
para un punto de acceso conectado oWifiManager#registerLocalOnlyHotspotSoftApCallback
para un punto de acceso solo local.La devolución de llamada
SoftApCallback
proporciona los siguientes métodos:-
SoftApCallback#onCapabilityChanged
: proporciona información sobre las capacidades del dispositivo, incluida la cantidad máxima de clientes admitidos y si se admite SAE o ACS. -
SoftApCallback#onInfoChanged
: proporciona información sobre el Soft AP en ejecución (solo es válido una vez iniciado), incluida información de banda y frecuencia. -
SoftApCallback#onConnectedClientsChanged
: proporciona una lista de clientes conectados. Para cada cliente, puede obtener la dirección MAC. Para obtener la información de IP, utilice la devolución de llamadaTetheringEventCallback#onClientsChanged
. -
SoftApCallback#onStateChanged
: proporciona actualizaciones sobre el estado del Soft AP a medida que se habilita y deshabilita. -
SoftApCallback#onBlockedClientConnecting
: proporciona la información del cliente bloqueado con uno de los siguientes motivos del bloqueo: el dispositivo alcanzó la cantidad máxima de clientes que puede admitir o el cliente no está autorizado explícitamente para conectarse.
-
Para un punto de acceso conectado:
- Configure la configuración del AP suave para la conexión llamando al método
WifiManager#setSoftApConfiguration
y proporcionando una instanciaSoftApConfiguration
. ConstruyaSoftApConfiguration
utilizando la claseSoftApConfiguration.Builder
. - Inicie la conexión llamando al método de conexión en
TetheringManager#startTethering
.
Para hotspot solo local:
- Inicie el punto de acceso solo local con una configuración de AP suave específica llamando al método
WifiManager#startLocalOnlyHotspot
.
Implementación de listas de permitidos y bloqueados
Un requisito típico del operador es proporcionar al usuario controles de los dispositivos que pueden asociarse al Soft AP. Existen varios mecanismos para hacer esto:
- Limite la cantidad máxima de dispositivos que pueden asociarse al AP suave usando
SoftApConfiguration.Builder#setMaxNumberOfClients
. Asegúrese de especificar un número que sea inferior al número máximo de clientes admitidos por el dispositivo. Puede obtener el número máximo enSoftApCapability#getMaxSupportedClients
. Proporcione control dinámico mediante listas de permitidos y bloqueados:
- La configuración predeterminada de un AP suave permite que todos los dispositivos se asocien al AP suave, excepto los dispositivos cuyas direcciones MAC se agregan a
SoftApConfiguration.Builder#setBlockedClientList
. Si el AP suave está configurado con
SoftApConfiguration.Builder#setClientControlByUserEnabled( true )
, se utiliza la lista de permitidos.- Todos los dispositivos cuyas direcciones MAC están en
SoftApConfiguration.Builder#setBlockedClientList
no pueden asociarse. - Todos los dispositivos cuyas direcciones MAC estén en
SoftApConfiguration.Builder#setAllowedClientList
pueden asociarse. - Se bloquea la asociación de todos los demás dispositivos (es decir, dispositivos cuyas direcciones MAC no están en la lista de permitidos o bloqueados), pero se llama a
SoftApCallback#onBlockedClientConnecting
, lo que permite que la aplicación de control (es decir, la aplicación de Configuración) realice una acción, por ejemplo. Por ejemplo, pedir confirmación al usuario y luego agregar el dispositivo a la lista de permitidos o a la lista de bloqueo dependiendo del comportamiento del usuario.
- Todos los dispositivos cuyas direcciones MAC están en
Tenga en cuenta que los dispositivos solo pueden usar la funcionalidad de la lista de permitidos si es compatible con el dispositivo. Puede verificar la compatibilidad del dispositivo utilizando
SoftApCapability#areFeaturesSupported( SOFTAP_FEATURE_CLIENT_FORCE_DISCONNECT )
.- La configuración predeterminada de un AP suave permite que todos los dispositivos se asocien al AP suave, excepto los dispositivos cuyas direcciones MAC se agregan a
Implementación
Para admitir la conexión a red a través de un punto de acceso o para admitir un punto de acceso solo local, los fabricantes de dispositivos deben proporcionar compatibilidad con la aplicación de configuración, el marco y el firmware/HAL:
Aplicación de configuración: la aplicación de configuración de AOSP proporciona una base para configurar un punto de conexión con SSID y credenciales de seguridad. Este código se puede usar tal cual o modificarse para proporcionar capacidades adicionales como se describe en Desarrollo de aplicaciones con API de hotspot .
Marco: el código del marco AOSP admite todas las funciones descritas en Desarrollo de aplicaciones con API de punto de acceso .
HAL/firmware para hotspot: HIDL IHostapd.hal versión 1.2 o superior, o AIDL IHostapd.aidl .
Personalización
Para personalizar la implementación, los fabricantes de dispositivos deben configurar las siguientes superposiciones y configuraciones de operador, que están documentadas en packages/modules/Wifi/service/ServiceWifiResources/res/values/config.xml
:
-
config_wifiFrameworkSoftApShutDownTimeoutMilliseconds
: el intervalo de tiempo de espera de apagado predeterminado. Solo es válido siSoftApConfiguration#setAutoShutdownEnabled
está habilitado. Se puede anular medianteSoftApConfiguration#setShutdownTimeoutMillis
. -
config_wifiHardwareSoftapMaxClientCount
: la limitación de hardware para la cantidad máxima de clientes admitidos. La cantidad máxima de clientes que admite el dispositivo es el mínimo de las restricciones de hardware y operador (especificadas porCarrierConfigManager.Wifi#KEY_HOTSPOT_MAX_CLIENT_COUNT
). El resultado final se proporciona a la aplicación conSoftApCapabilities#getMaxSupportedClients
. -
config_wifiSofapClientForceDisconnectSupported
: si el dispositivo tiene la capacidad de forzar la desconexión de un cliente. Necesario para habilitar las listas de permitidos y bloqueados. Comunicado a la aplicación de control (aplicación Configuración) a través deSoftApCapabilities#areFeaturesSupported( SOFTAP_FEATURE_CLIENT_FORCE_DISCONNECT )
. - (Disponible a partir de 13)
config_wifiSoftapPassphraseAsciiEncodableCheck
: si se requiere o no que la frase de contraseña AP suave sea codificable en ASCII. -
config_wifiSoftapAutoUpgradeToBridgedConfigWhenSupported
: si se actualiza o no automáticamente la configuración de configuración de banda a bandas duales durante la restauración de la configuración en la nube cuando se admite un nuevo dispositivo. - (Disponible a partir de 13)
config_wifiSoftapAutoAppendLowerBandsToBandConfigurationEnabled
: si el marco agrega automáticamente bandas inferiores a la configuración de bandas para evitar el manejo de la coexistencia. -
config_wifiSoftApDynamicCountryCodeUpdateSupported
: si el dispositivo admite o no la actualización dinámica del código de país en modo AP - Soporte de canales:
config_wifiSoftap2gChannelList
,config_wifiSoftap5gChannelList
,config_wifiSoftap6gChannelList
yconfig_wifiSoftap60gChannelList
. - Soporte de restauración que especifica si las entradas correspondientes se restablecen a los valores predeterminados al restaurar la configuración del punto de acceso a un nuevo dispositivo:
config_wifiSoftapResetChannelConfig
,config_wifiSoftapResetHiddenConfig
,config_wifiSoftapResetUserControlConfig
,config_wifiSoftapResetAutoShutdownTimerConfig
,config_wifiSoftapResetMaxClientSettingConfig
. Tenga en cuenta que estos están configurados entrue
de forma predeterminada, lo que significa que los valores se restablecen. Esto es fundamental si el nuevo dispositivo no admite la configuración. - Capacidades de hardware:
-
config_wifi_softap_acs_supported
-
config_wifi_softap_sae_supported
- (Disponible a partir de 13)
config_wifiSoftapOweTransitionSupported
- (Disponible a partir de 13)
config_wifiSoftapOweSupported
-
config_wifi_softap_ieee80211ac_supported
-
config_wifiSoftapIeee80211axSupported
- (Disponible a partir de 13)
config_wifiSoftapIeee80211beSupported
-
config_wifiSoftapMacAddressCustomizationSupported
-
config_wifiSoftapHeSuBeamformerSupported
-
config_wifiSoftapHeSuBeamformeeSupported
-
config_wifiSoftapHeMuBeamformerSupported
-
config_wifiSoftapHeTwtSupported
-
config_wifiSoftap24ghzSupported
-
config_wifiSoftap5ghzSupported
-
config_wifiSoftap6ghzSupported
-
config_wifiSoftap60ghzSupported
-
config_wifiSoftapAcsIncludeDfs
-
Validación
Android proporciona un conjunto de pruebas unitarias, pruebas de integración (Android Connectivity Test Suite o ACTS) y pruebas de Compatibility Test Suite (CTS) para validar la función de punto de acceso. La función de punto de acceso también se puede probar utilizando Vendor Test Suite (VTS).
Pruebas unitarias
Verifique el paquete del punto de acceso mediante las siguientes pruebas.
Pruebas de servicio:
atest packages/modules/Wifi/service/tests/wifitests/
Pruebas de gerente:
atest packages/modules/Wifi/framework/tests/
Pruebas de integración (ACTS)
El conjunto de pruebas de punto de acceso ACTS , ubicado en tools/test/connectivity/acts_tests/tests/google/wifi/WifiSoftApTest.py
, implementa pruebas funcionales de la función de punto de acceso.
Pruebas del conjunto de pruebas de compatibilidad (CTS)
Utilice pruebas CTS para validar la función de punto de acceso. CTS detecta cuando la función está habilitada e incluye automáticamente las pruebas asociadas.
Para activar las pruebas CTS, ejecute:
atest android.net.wifi.cts.WifiManagerTest
Conjunto de pruebas de proveedores (VTS)
Si la interfaz HIDL está implementada, ejecute:
atest VtsHalWifiHostapdV1_2Target
Si la interfaz AIDL está implementada, ejecute:
atest VtsHalHostapdTargetTest