Android поддерживает подключение через точку доступа Wi-Fi (Soft AP). Начиная с Android 11, конфигурация Soft AP, доступная производителям устройств, поддерживает больше вариантов использования и настроек операторов связи, включая следующие настройки:
- SSID и BSSID
- Тип безопасности (включая WPA3)
- Скрытый SSID
- Рабочий диапазон и канал (включая ACS)
- Максимальное количество разрешенных клиентов
- Значение тайм-аута автоотключения
- Разрешенный и черный список, чтобы позволить пользователю управлять связанными устройствами
Возможности устройства определяют доступность этих элементов управления. В Android 11 представлены API для получения этих возможностей. Производители устройств также могут указывать возможности базовых устройств с помощью наложений.
Обратите внимание, что некоторые из API-интерфейсов являются системными API-интерфейсами и ограничены разрешениями, поэтому доступ к ним может получить только системное приложение «Настройки».
Примеры и источник
Реализация по умолчанию предоставляется приложением настроек AOSP, однако оно не использует все API-интерфейсы для настройки программной точки доступа. Вызывающее приложение должно выполнять следующие три функции:
Зарегистрируйте обратный вызов для получения возможностей устройства с помощью
WifiManager#registerSoftApCallback
. Обратный вызовSoftApCallback
предоставляет несколько методов:-
SoftApCallback#onCapabilityChanged
: предоставляет информацию о возможностях устройства, включая максимальное количество поддерживаемых клиентов, а также о том, поддерживаются ли SAE или ACS. -
SoftApCallback#onInfoChanged
: Предоставляет информацию о работающей Soft AP (действительна только после запуска), включая информацию о диапазоне и частоте. -
SoftApCallback#onConnectedClientsChanged
: предоставляет список подключенных клиентов. Для каждого клиента вы можете получить MAC-адрес. Чтобы получить информацию об IP, используйте обратный вызовTetheringEventCallback#onClientsChanged
. -
SoftApCallback#onStateChanged
: предоставляет обновления состояния программной точки доступа по мере ее включения и отключения. -
SoftApCallback#onBlockedClientConnecting
: предоставляет информацию о заблокированном клиенте с одной из следующих причин блокировки: устройство достигло максимального количества клиентов, которое оно может поддерживать, или клиент явно не авторизован для подключения.
-
Настройте конфигурацию Soft AP, которая будет использоваться для привязки, вызвав метод
WifiManager#setSoftApConfiguration
и предоставив экземплярSoftApConfiguration
. Вы можетеSoftApConfiguration
, используя классSoftApConfiguration.Builder
.Запустите привязку, вызвав метод привязки в
TetheringManager#startTethering
.
Внедрение разрешенных и заблокированных списков
Типичным требованием оператора связи является предоставление пользователю элементов управления устройствами, которым разрешено связываться с программной точкой доступа. Для этого существует несколько механизмов:
- Ограничьте максимальное количество устройств, которые могут быть связаны с программной точкой доступа, с помощью
SoftApConfiguration.Builder#setMaxNumberOfClients
. Убедитесь, что указано число меньше, чем максимальное количество клиентов, поддерживаемых устройством. Вы можете получить максимальное количество изSoftApCapability#getMaxSupportedClients
. Обеспечьте динамический контроль с помощью разрешенных и заблокированных списков:
- Конфигурация программной точки доступа по умолчанию позволяет всем устройствам связываться с программной точкой доступа, за исключением устройств, MAC-адреса которых добавлены в
SoftApConfiguration.Builder#setBlockedClientList
. Если программная точка доступа настроена с помощью
SoftApConfiguration.Builder#setClientControlByUserEnabled( true )
, используется список разрешений.- Все устройства, MAC-адреса которых находятся в
SoftApConfiguration.Builder#setBlockedClientList
, заблокированы от ассоциации. - Все устройства, MAC-адреса которых находятся в
SoftApConfiguration.Builder#setAllowedClientList
, разрешены для ассоциации. - Все другие устройства (то есть устройства, чьи MAC-адреса не входят в список разрешенных или заблокированных) блокируются от ассоциации, но
SoftApCallback#onBlockedClientConnecting
, что позволяет контролирующему приложению (то есть приложению «Настройки») выполнять действия для Например, запрашивая у пользователя подтверждение, а затем добавляя устройство в список разрешенных или в черный список в зависимости от поведения пользователя.
- Все устройства, MAC-адреса которых находятся в
Обратите внимание, что устройства могут использовать функцию списка разрешений только в том случае, если она поддерживается на устройстве. Вы можете проверить поддержку устройств, используя
SoftApCapability#areFeaturesSupported( SOFTAP_FEATURE_CLIENT_FORCE_DISCONNECT )
.- Конфигурация программной точки доступа по умолчанию позволяет всем устройствам связываться с программной точкой доступа, за исключением устройств, MAC-адреса которых добавлены в
Реализация
Для поддержки привязки через точку доступа Wi-Fi (Soft AP) производители устройств должны предоставить приложение «Настройки», платформу и поддержку HAL/прошивки:
Приложение «Настройки». Приложение «Настройки AOSP» обеспечивает основу для настройки точки доступа с использованием SSID и учетных данных безопасности. Этот код можно использовать как есть или изменить для предоставления дополнительных возможностей, как описано в примерах и исходном коде .
Фреймворк: Код фреймворка AOSP поддерживает все функциональные возможности, описанные в примерах и исходниках .
HAL/прошивка для точки доступа: IHostapd.HAL версии 1.2 или выше.
Настройка
Чтобы настроить реализацию, производители устройств должны настроить следующие конфигурации наложений и несущих, которые задокументированы в 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 )
. - Поддержка каналов:
config_wifiSoftap2gChannelList
,config_wifiSoftap5gChannelList
иconfig_wifiSoftap6gChannelList
. - Поддержка восстановления, указывающая, сбрасываются ли соответствующие записи по умолчанию при восстановлении конфигурации точки доступа на новом устройстве:
config_wifiSoftapResetChannelConfig
,config_wifiSoftapResetHiddenConfig
,config_wifiSoftapResetUserControlConfig
,config_wifiSoftapResetAutoShutdownTimerConfig
,config_wifiSoftapResetMaxClientSettingConfig
. Обратите внимание, что по умолчанию для них установлено значениеtrue
, что означает сброс значений. Это важно, если новое устройство не поддерживает конфигурацию. Аппаратные возможности:
-
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
-
Проверка
Android предоставляет набор модульных тестов, интеграционных тестов (Android Connectivity Test Suite или ACTS) и тестов Compatibility Test Suite (CTS) для проверки функции точки доступа. Функцию точки доступа также можно протестировать с помощью Vendor Test Suite (VTS).
Модульные тесты
Проверьте пакет точки доступа, используя следующие тесты.
Сервисные тесты:
atest packages/modules/Wifi/service/tests/wifitests/
Тесты менеджера:
atest packages/modules/Wifi/framework/tests/
Интеграционные тесты (ACTS)
Набор тестов точки доступа ACTS , расположенный в tools/test/connectivity/acts_tests/tests/google/wifi/WifiSoftApTest.py
, реализует функциональные тесты функции точки доступа.
Тесты набора тестов совместимости (CTS)
Используйте тесты CTS для проверки функции точки доступа. CTS определяет, когда эта функция включена, и автоматически включает связанные тесты.
Чтобы запустить тесты CTS, запустите:
atest android.net.wifi.cts.WifiManagerTest
Набор тестов поставщика (VTS)
Чтобы запустить тесты VTS, запустите:
atest VtsHalWifiHostapdV1_2Target