Android proporciona compatibilidad con el hotspot de Wi-Fi (AP en segundo plano), incluida la conexión mediante dispositivos móviles a través de un hotspot de Wi-Fi y hotspots de Wi-Fi solo locales.
La función de AP en segundo plano permite la configuración de los siguientes elementos:
- 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 presenta APIs para obtener estas capacidades. Los fabricantes de dispositivos también pueden especificar las capacidades básicas del dispositivo con superposiciones.
Desarrolla apps con las APIs de hotspot
El Proyecto de código abierto de Android (AOSP) proporciona una implementación predeterminada de un hotspot de Wi-Fi conectado, pero no ejerce todas las APIs para la configuración de AP en segundo plano.
Para admitir la conexión mediante dispositivos móviles 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#registerSoftApCallbackpara un hotspot conectado oWifiManager#registerLocalOnlyHotspotSoftApCallbackpara un hotspot solo local.La devolución de llamada
SoftApCallbackproporciona 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 en segundo plano en ejecución (solo es válido una vez que se inicia), incluida la información de la banda y la 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 en segundo plano 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, haz lo siguiente:
- Para configurar la configuración de AP en segundo plano para la conexión mediante dispositivos móviles, llama al
WifiManager#setSoftApConfigurationmétodo y proporciona una instancia deSoftApConfiguration. ConstruyeSoftApConfigurationcon laSoftApConfiguration.Builderclase. - Para iniciar la conexión mediante dispositivos móviles, llama al método de conexión en
TetheringManager#startTethering.
Para un hotspot solo local, haz lo siguiente:
- Para iniciar el hotspot solo local con una configuración de AP en segundo plano específica, llama al
método
WifiManager#startLocalOnlyHotspot.
Implementa listas de entidades permitidas y bloqueadas
Un requisito típico del operador es proporcionar al usuario controles de los dispositivos que pueden asociarse al AP en segundo plano. Existen varios mecanismos para hacerlo:
- Limita la cantidad máxima de dispositivos que pueden asociarse al AP en segundo plano con
SoftApConfiguration.Builder#setMaxNumberOfClients. Asegúrate de especificar un número inferior a la cantidad máxima de clientes admitidos por el dispositivo. Puedes obtener la cantidad máxima deSoftApCapability#getMaxSupportedClients. Proporciona control dinámico con listas de entidades permitidas y bloqueadas:
- La configuración predeterminada de un AP en segundo plano permite que todos los dispositivos se asocien al AP en segundo plano, excepto los dispositivos cuyas direcciones MAC se agreguen a
SoftApConfiguration.Builder#setBlockedClientList. - Si el AP en segundo plano está configurado con
SoftApConfiguration.Builder#setClientControlByUserEnabled(true), se usa la lista de entidades permitidas.- Todos los dispositivos cuyas direcciones MAC están en
SoftApConfiguration.Builder#setBlockedClientListno pueden asociarse. - Todos los dispositivos cuyas direcciones MAC están en
SoftApConfiguration.Builder#setAllowedClientListpueden asociarse. - Todos los demás dispositivos (es decir, los dispositivos cuyas direcciones MAC no están 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 confirmación al usuario y, luego, agregar el dispositivo a la lista de entidades permitidas o a la lista de entidades bloqueadas según el comportamiento del usuario.
- Todos los dispositivos cuyas direcciones MAC están 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 en segundo plano permite que todos los dispositivos se asocien al AP en segundo plano, excepto los dispositivos cuyas direcciones MAC se agreguen a
Implementación
Para admitir la conexión mediante dispositivos móviles a través de un hotspot o un hotspot solo local, los fabricantes de dispositivos deben proporcionar una app de configuración, un framework y compatibilidad con HAL/firmware:
App de configuración: La app de configuración del Proyecto de código abierto de Android (AOSP) proporciona una línea de base para configurar un hotspot de conexión mediante dispositivos móviles con SSID y credenciales de seguridad. Este código se puede usar tal como está o modificarse para proporcionar capacidades adicionales, como se describe en Cómo desarrollar apps con las APIs de hotspot.
Framework: El código del framework de AOSP admite toda la funcionalidad que se describe en Cómo desarrollar apps con las APIs de hotspot.
HAL/firmware para hotspot: La versión 1.2 o posterior de HIDL
IHostapd.halo AIDLIHostapd.aidl.
Personalización
Para personalizar la implementación, recomendamos que los fabricantes de dispositivos configuren las
siguientes superposiciones y configuraciones del 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 si se habilitaSoftApConfiguration#setAutoShutdownEnabled. 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 tiene la capacidad de forzar la desconexión de un cliente. Se requiere para habilitar las listas de entidades permitidas y bloqueadas. 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 en segundo plano debe codificarse 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 de 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 la banda para evitar el control de coexistencia. config_wifiSoftApDynamicCountryCodeUpdateSupported: Indica si se admite la actualización dinámica del código de país en el modo AP en el dispositivo.- Compatibilidad con canales:
config_wifiSoftap2gChannelList,config_wifiSoftap5gChannelList,config_wifiSoftap6gChannelListyconfig_wifiSoftap60gChannelList. - Compatibilidad con la restauración que especifica si las entradas correspondientes se restablecen a los valores predeterminados cuando se restaura la configuración del hotspot en un dispositivo nuevo:
config_wifiSoftapResetChannelConfig,config_wifiSoftapResetHiddenConfig,config_wifiSoftapResetUserControlConfig,config_wifiSoftapResetAutoShutdownTimerConfigyconfig_wifiSoftapResetMaxClientSettingConfig. Ten en cuenta que estos se establecen entruede 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_supportedconfig_wifi_softap_sae_supported- (Disponible a partir de la versión 13)
config_wifiSoftapOweTransitionSupported - (Disponible a partir de la versión 13)
config_wifiSoftapOweSupported config_wifi_softap_ieee80211ac_supportedconfig_wifiSoftapIeee80211axSupported- (Disponible a partir de la versión 13)
config_wifiSoftapIeee80211beSupported config_wifiSoftapMacAddressCustomizationSupportedconfig_wifiSoftapHeSuBeamformerSupportedconfig_wifiSoftapHeSuBeamformeeSupportedconfig_wifiSoftapHeMuBeamformerSupportedconfig_wifiSoftapHeTwtSupportedconfig_wifiSoftap24ghzSupportedconfig_wifiSoftap5ghzSupportedconfig_wifiSoftap6ghzSupportedconfig_wifiSoftap60ghzSupportedconfig_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 Conjunto de pruebas de proveedores (VTS).
Pruebas de unidades
Verifica el paquete de hotspot 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 las pruebas de CTS para validar la función de hotspot. 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.WifiManagerTestConjunto de pruebas de proveedores (VTS)
Si se implementa la interfaz HIDL, ejecuta lo siguiente:
atest VtsHalWifiHostapdV1_2TargetSi se implementa la interfaz AIDL, ejecuta lo siguiente:
atest VtsHalHostapdTargetTest