Android admite la conexión a través de un punto de acceso Wi-Fi (Soft AP). A partir de Android 11, la configuración Soft AP disponible para los fabricantes de dispositivos admite más casos de uso y personalizaciones de operadores, incluida la configuración de lo siguiente:
- SSID y BSSID
- Tipo de seguridad (incluyendo WPA3)
- SSID oculto
- Banda y canal operativos (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 que el usuario controle los dispositivos asociados
Las capacidades del dispositivo determinan la disponibilidad de estos controles. Android 11 presenta API para obtener estas capacidades. Los fabricantes de dispositivos también pueden especificar las capacidades de los dispositivos básicos mediante superposiciones.
Tenga en cuenta que algunas de las API son API del sistema y están restringidas a través de permisos para que solo la aplicación Configuración del sistema pueda acceder a ellas.
Ejemplos y fuente
La aplicación Configuración de AOSP proporciona una implementación predeterminada; sin embargo, no ejerce todas las API para la configuración de Soft AP. Una aplicación de llamadas debe realizar estas tres funciones:
Registre una devolución de llamada para obtener las capacidades del dispositivo usando
WifiManager#registerSoftApCallback
. La devolución de llamadaSoftApCallback
proporciona varios 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 la 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 para el bloqueo: el dispositivo alcanzó la cantidad máxima de clientes que puede admitir o el cliente no está explícitamente autorizado para conectarse.
-
Configure la configuración de Soft AP que se usará para la conexión llamando al método
WifiManager#setSoftApConfiguration
y proporcionando una instancia deSoftApConfiguration
. Puede construirSoftApConfiguration
usando la claseSoftApConfiguration.Builder
.Inicie la vinculación llamando al método de vinculación en
TetheringManager#startTethering
.
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. Hay varios mecanismos para hacer esto:
- Limite la cantidad máxima de dispositivos que pueden asociarse al punto de acceso suave mediante
SoftApConfiguration.Builder#setMaxNumberOfClients
. Asegúrese de especificar un número inferior al número máximo de clientes admitidos por el dispositivo. Puede obtener el número máximo deSoftApCapability#getMaxSupportedClients
. Proporcione control dinámico usando listas de permitidos y bloqueados:
- La configuración predeterminada de un Soft AP permite que todos los dispositivos se asocien al soft AP, excepto los dispositivos cuyas direcciones MAC se agregan a
SoftApConfiguration.Builder#setBlockedClientList
. Si Soft AP está configurado con
SoftApConfiguration.Builder#setClientControlByUserEnabled( true )
, se utiliza la lista de permitidos.- Se bloquea la asociación de todos los dispositivos cuyas direcciones MAC están en
SoftApConfiguration.Builder#setBlockedClientList
. - 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 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 bloqueados según el comportamiento del usuario.
- Se bloquea la asociación de todos los dispositivos cuyas direcciones MAC están en
Tenga en cuenta que los dispositivos solo pueden usar la función de lista de permitidos si es compatible con el dispositivo. Puede verificar la compatibilidad del dispositivo con
SoftApCapability#areFeaturesSupported( SOFTAP_FEATURE_CLIENT_FORCE_DISCONNECT )
.- La configuración predeterminada de un Soft AP permite que todos los dispositivos se asocien al soft AP, excepto los dispositivos cuyas direcciones MAC se agregan a
Implementación
Para admitir la conexión a través de un punto de acceso Wi-Fi (AP suave), los fabricantes de dispositivos deben proporcionar compatibilidad con la aplicación Configuración, el marco y HAL/firmware:
Aplicación de configuración : la aplicación de configuración de AOSP proporciona una línea de base para configurar un punto de acceso compartido con SSID y credenciales de seguridad. Este código se puede usar tal cual o modificarse para proporcionar capacidades adicionales como se describe en Ejemplos y fuente .
Marco: el código del marco AOSP es compatible con todas las funciones descritas en los ejemplos y el código fuente .
HAL/firmware para hotspot: IHostapd.HAL versión 1.2 o superior.
personalización
Para personalizar la implementación, los fabricantes de dispositivos deben configurar las siguientes superposiciones y configuraciones de operador, que se documentan 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 (especificado 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 de configuración) a travésSoftApCapabilities#areFeaturesSupported( SOFTAP_FEATURE_CLIENT_FORCE_DISCONNECT )
. - Compatibilidad con canales:
config_wifiSoftap2gChannelList
,config_wifiSoftap5gChannelList
yconfig_wifiSoftap6gChannelList
. - Restaurar soporte especificando 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 se establecen entrue
de forma predeterminada, lo que significa que los valores se restablecen. Esto es fundamental si el nuevo dispositivo no es compatible con la configuración. Capacidades de hardware:
-
config_wifi_softap_acs_supported
-
config_wifi_softap_sae_supported
-
config_wifi_softap_ieee80211ac_supported
-
config_wifiSoftapIeee80211axSupported
-
config_wifiSoftapHeSuBeamformerSupported
-
config_wifiSoftapHeSuBeamformeeSupported
-
config_wifiSoftapHeMuBeamformerSupported
-
config_wifiSoftapHeTwtSupported
-
config_wifiSoftap6ghzSupported
-
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 con Vendor Test Suite (VTS).
Pruebas unitarias
Verifique el paquete del punto de acceso usando 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 puntos 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 de conjunto de pruebas de compatibilidad (CTS)
Utilice las 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)
Para ejecutar las pruebas VTS, ejecute:
atest VtsHalWifiHostapdV1_2Target