Android поддерживает точки доступа Wi-Fi (Soft AP), включая режим модема через точку доступа Wi-Fi и локальные точки доступа Wi-Fi.
Функция программной точки доступа позволяет настраивать следующие параметры:
- SSID и BSSID
- Тип безопасности (включая WPA3)
- Скрытый SSID
- Рабочий диапазон и канал (включая ACS)
- Максимально допустимое количество клиентов
- значение таймаута автоматического выключения
- Списки разрешенных и заблокированных устройств позволяют пользователю контролировать связанные с ними устройства.
- Уровень рандомизации MAC-адреса для BSSID точки доступа.
- 802.11ax и 802.11be
Доступность этих элементов управления определяется возможностями устройства. Android 11 предоставляет API для получения этих возможностей. Производители устройств также могут указывать базовые возможности устройства с помощью наложений.
Разрабатывайте приложения с использованием API точек доступа.
В приложении «Настройки» проекта AOSP (Android Open Source Project) по умолчанию реализована функция создания точки доступа Wi-Fi через проводное соединение, однако она не использует все API для настройки программных точек доступа.
Для поддержки режима модема через точку доступа или локальную точку доступа приложение должно выполнять следующие функции:
Для получения информации о возможностях устройства используйте функцию обратного вызова
WifiManager#registerSoftApCallbackдля точки доступа с подключением через модем илиWifiManager#registerLocalOnlyHotspotSoftApCallbackдля локальной точки доступа.Функция обратного вызова
SoftApCallbackпредоставляет следующие методы:-
SoftApCallback#onCapabilityChanged: Предоставляет информацию о возможностях устройства, включая максимальное количество поддерживаемых клиентов и поддержку SAE или ACS. -
SoftApCallback#onInfoChanged: Предоставляет информацию о работающем программном AP (действительна только после запуска), включая информацию о диапазоне и частоте. -
SoftApCallback#onConnectedClientsChanged: Предоставляет список подключенных клиентов. Для каждого клиента можно получить MAC-адрес. Для получения информации об IP-адресе используйте функцию обратного вызоваTetheringEventCallback#onClientsChanged. -
SoftApCallback#onStateChanged: Предоставляет обновления о состоянии Soft AP при его включении и выключении. -
SoftApCallback#onBlockedClientConnecting: Предоставляет информацию о заблокированном клиенте с указанием одной из следующих причин блокировки: устройство достигло максимального количества клиентов, которое оно может поддерживать, или клиент не имеет явного разрешения на подключение. -
SoftApCallback#onClientsDisconnected: Предоставляет список отключившихся клиентов. Для каждого клиента можно получить причину отключения.
-
Для проводной точки доступа:
- Настройте программную конфигурацию точки доступа для режима модема, вызвав метод
WifiManager#setSoftApConfigurationи указав экземплярSoftApConfiguration. СоздайтеSoftApConfigurationиспользуя классSoftApConfiguration.Builder. - Чтобы запустить привязку, вызовите метод привязки по адресу
TetheringManager#startTethering.
Для локальной точки доступа:
- Запустите локальную точку доступа с заданными параметрами программной точки доступа, вызвав метод
WifiManager#startLocalOnlyHotspot.
Внедрить списки разрешенных и заблокированных пользователей.
Типичное требование оператора связи — предоставить пользователю возможность контролировать устройства, которым разрешено подключаться к программной точке доступа (Soft AP). Для этого существует несколько механизмов:
- Ограничьте максимальное количество устройств, которые могут подключаться к программной точке доступа, используя
SoftApConfiguration.Builder#setMaxNumberOfClients. Убедитесь, что указанное число меньше максимального количества клиентов, поддерживаемых устройством. Максимальное количество можно получить изSoftApCapability#getMaxSupportedClients. Обеспечьте динамический контроль с помощью списков разрешенных и заблокированных объектов:
- По умолчанию конфигурация программной точки доступа позволяет подключать к ней все устройства, за исключением устройств, MAC-адреса которых добавлены в
SoftApConfiguration.Builder#setBlockedClientList. - Если для Soft AP задан параметр
SoftApConfiguration.Builder#setClientControlByUserEnabled( true ), используется список разрешенных устройств.- Все устройства, MAC-адреса которых указаны в
SoftApConfiguration.Builder#setBlockedClientList, блокируются для подключения. - Разрешается подключение всех устройств, MAC-адреса которых указаны в
SoftApConfiguration.Builder#setAllowedClientList. - Все остальные устройства (то есть устройства, MAC-адреса которых не входят в список разрешенных или заблокированных) блокируются от подключения, но вызывается
SoftApCallback#onBlockedClientConnecting, позволяющий управляющему приложению (то есть приложению «Настройки» ) выполнить действие, например, запросить у пользователя подтверждение, а затем добавить устройство в список разрешенных или в список заблокированных в зависимости от поведения пользователя.
- Все устройства, MAC-адреса которых указаны в
Обратите внимание, что устройства могут использовать функцию списка разрешенных устройств только в том случае, если она поддерживается устройством. Проверить поддержку устройства можно с помощью
SoftApCapability#areFeaturesSupported( SOFTAP_FEATURE_CLIENT_FORCE_DISCONNECT ).- По умолчанию конфигурация программной точки доступа позволяет подключать к ней все устройства, за исключением устройств, MAC-адреса которых добавлены в
Выполнение
Для поддержки режима модема через точку доступа или для поддержки локальной точки доступа производители устройств должны предоставить приложение для настроек, фреймворк и поддержку HAL/прошивки:
Приложение «Настройки»: Приложение «Настройки» из проекта Android Open Source Project (AOSP) предоставляет базовый набор инструментов для настройки точки доступа с указанием SSID и учетных данных безопасности. Этот код можно использовать как есть или модифицировать для расширения возможностей, как описано в разделе «Разработка приложений с использованием API для точек доступа» .
Фреймворк: Код фреймворка AOSP поддерживает все функции, описанные в разделе «Разработка приложений с использованием API точек доступа» .
HAL/прошивка для точки доступа: либо HIDL
IHostapd.halверсии 1.2 или выше, либо AIDLIHostapd.aidl.
Настройка
Для настройки реализации мы рекомендуем производителям устройств настроить следующие параметры наложения и параметры оператора связи, которые описаны в файле packages/modules/Wifi/service/ServiceWifiResources/res/values/config.xml :
-
config_wifiFrameworkSoftApShutDownTimeoutMilliseconds: Интервал ожидания завершения работы по умолчанию. Действителен только в том случае, если включенаSoftApConfiguration#setAutoShutdownEnabled. Может быть переопределен с помощьюSoftApConfiguration#setShutdownTimeoutMillis. -
config_wifiHardwareSoftapMaxClientCount: Аппаратное ограничение на максимальное количество поддерживаемых клиентов. Максимальное количество клиентов, поддерживаемых устройством, равно минимальному значению из аппаратных ограничений и ограничений оператора связи (указанных вCarrierConfigManager.Wifi#KEY_HOTSPOT_MAX_CLIENT_COUNT). Окончательный результат передается приложению с помощьюSoftApCapabilities#getMaxSupportedClients. -
config_wifiSofapClientForceDisconnectSupported: Определяет, имеет ли устройство возможность принудительного отключения клиента. Необходимо для включения списков разрешенных и заблокированных устройств. Передается управляющему приложению (приложению «Настройки») черезSoftApCapabilities#areFeaturesSupported( SOFTAP_FEATURE_CLIENT_FORCE_DISCONNECT ). - (Доступно с версии 13)
config_wifiSoftapPassphraseAsciiEncodableCheck: Требуется ли кодировка ASCII для парольной фразы программной точки доступа. -
config_wifiSoftapAutoUpgradeToBridgedConfigWhenSupported: Следует ли автоматически обновлять конфигурацию настроек диапазонов до двух диапазонов во время восстановления конфигурации из облака при поддержке нового устройства. - (Доступно с версии 13)
config_wifiSoftapAutoAppendLowerBandsToBandConfigurationEnabled: Определяет, добавляет ли платформа автоматически нижние диапазоны к конфигурации диапазонов, чтобы избежать обработки сосуществования. -
config_wifiSoftApDynamicCountryCodeUpdateSupported: Поддерживается ли динамическое обновление кода страны в режиме точки доступа на устройстве. - Поддержка каналов:
config_wifiSoftap2gChannelList,config_wifiSoftap5gChannelList,config_wifiSoftap6gChannelListиconfig_wifiSoftap60gChannelList. - Функция восстановления позволяет указать, следует ли сбрасывать соответствующие параметры до значений по умолчанию при восстановлении конфигурации точки доступа на новом устройстве:
config_wifiSoftapResetChannelConfig,config_wifiSoftapResetHiddenConfig,config_wifiSoftapResetUserControlConfig,config_wifiSoftapResetAutoShutdownTimerConfig,config_wifiSoftapResetMaxClientSettingConfig. Обратите внимание, что по умолчанию эти параметры установлены вtrue, что означает сброс значений. Это критически важно, если новое устройство не поддерживает данную конфигурацию. - Аппаратные возможности:
-
config_wifi_softap_acs_supported -
config_wifi_softap_sae_supported - (Доступно с версии 13)
config_wifiSoftapOweTransitionSupported - (Доступно с версии 13)
config_wifiSoftapOweSupported -
config_wifi_softap_ieee80211ac_supported -
config_wifiSoftapIeee80211axSupported - (Доступно с версии 13)
config_wifiSoftapIeee80211beSupported -
config_wifiSoftapMacAddressCustomizationSupported -
config_wifiSoftapHeSuBeamformerSupported -
config_wifiSoftapHeSuBeamformeeSupported -
config_wifiSoftapHeMuBeamformerSupported -
config_wifiSoftapHeTwtSupported -
config_wifiSoftap24ghzSupported -
config_wifiSoftap5ghzSupported -
config_wifiSoftap6ghzSupported -
config_wifiSoftap60ghzSupported -
config_wifiSoftapAcsIncludeDfs
-
Валидация
Android предоставляет набор модульных тестов и тестов совместимости (Compatibility Test Suite, CTS) для проверки функции точки доступа. Функцию точки доступа также можно протестировать с помощью набора тестов поставщика (Vendor Test Suite, VTS).
модульные тесты
Проверьте работоспособность пакета точки доступа, используя следующие тесты.
Тесты сервиса:
atest packages/modules/Wifi/service/tests/wifitests/Тесты менеджера:
atest packages/modules/Wifi/framework/tests/
Тесты набора тестов на совместимость (CTS)
Используйте тесты CTS для проверки функции точки доступа. CTS определяет, когда эта функция включена, и автоматически включает соответствующие тесты.
Для запуска тестов CTS выполните следующую команду:
atest android.net.wifi.cts.WifiManagerTestНабор тестов от поставщика (VTS)
Если интерфейс HIDL реализован, выполните:
atest VtsHalWifiHostapdV1_2TargetЕсли интерфейс AIDL реализован, выполните:
atest VtsHalHostapdTargetTest