Android admite hotspots de Wi-Fi (AP en segundo plano), incluidas las conexiones a través de hotspots de Wi-Fi y hotspots de Wi-Fi solo locales.
La función de AP temporal permite configurar lo siguiente:
- SSID y BSSID
- Tipo de seguridad (incluido WPA3)
- SSID oculto
- Banda y canal de operación (incluido ACS)
- Cantidad máxima de clientes permitidos
- Valor de tiempo de espera para el cierre automático
- Lista de dispositivos permitidos y bloqueados para que los usuarios controlen los dispositivos asociados
- Nivel de aleatorización de MAC para el BSSID del AP
- 802.11ax y 802.11be
Las capacidades del dispositivo determinan la disponibilidad de estos controles. Android 11 introduce APIs para obtener estas capacidades. Los fabricantes de dispositivos también pueden especificar las capacidades básicas del dispositivo con superposiciones.
Ten en cuenta que algunas de las APIs son APIs del sistema y están restringidas a través de permisos para que solo la app de Configuración del sistema pueda acceder a ellas.
Desarrolla apps con las APIs de hotspot
La app de configuración del AOSP proporciona una implementación predeterminada de un hotspot de Wi-Fi vinculado, pero no utiliza todas las APIs para la configuración de AP en segundo plano.
Para admitir la conexión a Internet a través de un hotspot o un hotspot solo local, la app debe realizar las siguientes funciones:
Registra una devolución de llamada para obtener las capacidades del dispositivo con
WifiManager#registerSoftApCallback
para un hotspot conectado oWifiManager#registerLocalOnlyHotspotSoftApCallback
para un hotspot 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 admiten SAE o ACS.SoftApCallback#onInfoChanged
: Proporciona información sobre el AP suave en ejecución (solo es válido una vez que se inicia), incluida la información de banda y frecuencia.SoftApCallback#onConnectedClientsChanged
: Proporciona una lista de clientes conectados. Para cada cliente, puedes obtener la dirección MAC. Para obtener la información de IP, usa la devolución de llamadaTetheringEventCallback#onClientsChanged
.SoftApCallback#onStateChanged
: Proporciona actualizaciones sobre el estado del AP suave a medida que se habilita y se inhabilita.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 de forma explícita para conectarse.SoftApCallback#onClientsDisconnected
: Proporciona una lista de los clientes desconectados. Para cada cliente, puedes obtener el motivo de la desconexión.
Para un hotspot conectado:
- Llama al método
WifiManager#setSoftApConfiguration
y proporciona una instancia deSoftApConfiguration
para configurar el AP temporal para la conexión. ConstruyeSoftApConfiguration
con la claseSoftApConfiguration.Builder
. - Para iniciar la conexión, llama al método de conexión en
TetheringManager#startTethering
.
Para el hotspot solo local, haz lo siguiente:
- Llama al método
WifiManager#startLocalOnlyHotspot
para iniciar el hotspot solo local con una configuración de AP flexible específica.
Implementa listas de bloqueo y de permiso
Un requisito típico de los operadores es proporcionar al usuario controles de los dispositivos que pueden asociarse al AP suave. Existen varios mecanismos para hacerlo:
- Limita la cantidad máxima de dispositivos que se pueden asociar al AP flexible con
SoftApConfiguration.Builder#setMaxNumberOfClients
. Asegúrate de especificar un número inferior a la cantidad máxima de clientes que admite el dispositivo. Puedes obtener la cantidad máxima enSoftApCapability#getMaxSupportedClients
. Proporciona control dinámico con listas de bloqueo y de entidades permitidas:
- La configuración predeterminada de un AP suave permite que todos los dispositivos se asocien al AP suave, excepto aquellos cuyas direcciones MAC se agreguen a
SoftApConfiguration.Builder#setBlockedClientList
. Si el AP suave se configura con
SoftApConfiguration.Builder#setClientControlByUserEnabled(true)
, se usa la lista de entidades permitidas.- Se bloquea la asociación de todos los dispositivos cuyas direcciones MAC se encuentran en
SoftApConfiguration.Builder#setBlockedClientList
. - Se permite la asociación de todos los dispositivos cuyas direcciones MAC se encuentran en
SoftApConfiguration.Builder#setAllowedClientList
. - Todos los demás dispositivos (es decir, aquellos cuyas direcciones MAC no se encuentran en la lista de entidades permitidas o bloqueadas) no pueden asociarse, pero se llama a
SoftApCallback#onBlockedClientConnecting
, lo que permite que la app de control (es decir, la app de Configuración) realice una acción, por ejemplo, pedirle al usuario que confirme y, luego, agregar el dispositivo a la lista de entidades permitidas o a la lista de entidades bloqueadas, según el comportamiento del usuario.
- Se bloquea la asociación de todos los dispositivos cuyas direcciones MAC se encuentran en
Ten en cuenta que los dispositivos solo pueden usar la funcionalidad de la lista de entidades permitidas si es compatible con el dispositivo. Puedes verificar la compatibilidad del dispositivo con
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 aquellos cuyas direcciones MAC se agreguen a
Implementación
Para admitir la conexión a Internet a través de un hotspot o un hotspot solo local, los fabricantes de dispositivos deben proporcionar compatibilidad con la app de Configuración, el framework y la HAL/firmware:
App de configuración: La app de configuración del AOSP proporciona una base para configurar un hotspot de vinculación con SSID y credenciales de seguridad. Este código se puede usar tal como está o modificar para proporcionar capacidades adicionales, como se describe en Cómo desarrollar apps con las APIs de hotspot.
Framework: El código del framework del AOSP admite todas las funciones que se describen en Cómo desarrollar apps con las APIs de hotspot.
HAL/firmware para hotspot: La versión 1.2 o posterior de
IHostapd.hal
de HIDL, o bienIHostapd.aidl
de AIDL.
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
: Es el intervalo de tiempo de espera de apagado predeterminado. Solo es válido siSoftApConfiguration#setAutoShutdownEnabled
está habilitado. Se puede anular conSoftApConfiguration#setShutdownTimeoutMillis
.config_wifiHardwareSoftapMaxClientCount
: Es 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 del operador (especificadas porCarrierConfigManager.Wifi#KEY_HOTSPOT_MAX_CLIENT_COUNT
). El resultado final se proporciona a la app conSoftApCapabilities#getMaxSupportedClients
.config_wifiSofapClientForceDisconnectSupported
: Indica si el dispositivo puede forzar la desconexión de un cliente. Se requiere para habilitar las listas de bloqueo y de entidades permitidas. Se comunica a la app de control (app de Configuración) a través deSoftApCapabilities#areFeaturesSupported(SOFTAP_FEATURE_CLIENT_FORCE_DISCONNECT)
.- (Disponible a partir de la versión 13)
config_wifiSoftapPassphraseAsciiEncodableCheck
: Indica si la frase de contraseña del AP temporal debe ser codificable en ASCII. config_wifiSoftapAutoUpgradeToBridgedConfigWhenSupported
: Indica si se debe actualizar automáticamente la configuración de la banda a bandas duales durante la restauración de la configuración en la nube cuando se admite un dispositivo nuevo.- (Disponible a partir de la versión 13)
config_wifiSoftapAutoAppendLowerBandsToBandConfigurationEnabled
: Indica si el framework agrega automáticamente bandas inferiores a la configuración de bandas para evitar el control de coexistencia. config_wifiSoftApDynamicCountryCodeUpdateSupported
: Indica si el dispositivo admite o no la actualización dinámica del código de país en el modo AP.- Compatibilidad con canales:
config_wifiSoftap2gChannelList
,config_wifiSoftap5gChannelList
,config_wifiSoftap6gChannelList
yconfig_wifiSoftap60gChannelList
. - Es compatible con el restablecimiento, y especifica si las entradas correspondientes se restablecen a la configuración predeterminada cuando se restablece la configuración de zona Wi-Fi en un dispositivo nuevo:
config_wifiSoftapResetChannelConfig
,config_wifiSoftapResetHiddenConfig
,config_wifiSoftapResetUserControlConfig
,config_wifiSoftapResetAutoShutdownTimerConfig
,config_wifiSoftapResetMaxClientSettingConfig
. Ten en cuenta que estos parámetros se establecen entrue
de forma predeterminada, lo que significa que los valores se restablecen. Esto es fundamental si el dispositivo nuevo no admite la configuración. - Capacidades de hardware:
config_wifi_softap_acs_supported
config_wifi_softap_sae_supported
- (Disponible a partir de Android 13)
config_wifiSoftapOweTransitionSupported
- (Disponible a partir de Android 13)
config_wifiSoftapOweSupported
config_wifi_softap_ieee80211ac_supported
config_wifiSoftapIeee80211axSupported
- (Disponible a partir de Android 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 de unidades y pruebas del Conjunto de pruebas de compatibilidad (CTS) para validar la función de hotspot. La función de hotspot también se puede probar con el Vendor Test Suite (VTS).
Pruebas de unidades
Verifica el paquete de zona activa con las siguientes pruebas.
Pruebas de servicio:
atest packages/modules/Wifi/service/tests/wifitests/
Pruebas de administrador:
atest packages/modules/Wifi/framework/tests/
Pruebas del Conjunto de pruebas de compatibilidad (CTS)
Usa pruebas de CTS para validar la función de hotspot. El CTS detecta cuando la función está habilitada y, automáticamente, incluye las pruebas asociadas.
Para activar las pruebas de CTS, ejecuta lo siguiente:
atest android.net.wifi.cts.WifiManagerTest
Conjunto de pruebas de proveedores (VTS)
Si se implementa la interfaz de HIDL, ejecuta el siguiente comando:
atest VtsHalWifiHostapdV1_2Target
Si se implementa la interfaz de AIDL, ejecuta el siguiente comando:
atest VtsHalHostapdTargetTest