Android обеспечивает поддержку точек доступа Wi-Fi (Soft AP), включая подключение через точку доступа Wi-Fi и локальные точки доступа Wi-Fi.
Функция программной точки доступа позволяет настраивать следующее:
- SSID и BSSID
- Тип безопасности (включая WPA3)
- Скрытый SSID
- Рабочий диапазон и канал (включая ACS)
- Максимальное количество разрешенных клиентов
- Значение тайм-аута автоматического выключения
- Белый и черный списки, позволяющие пользователю управлять связанными устройствами
- Уровень рандомизации MAC для BSSID точки доступа
- 802.11ax и 802.11be
Возможности устройства определяют доступность этих элементов управления. Android 11 представляет API для получения этих возможностей. Производители устройств также могут указывать базовые возможности устройства с помощью наложений.
Обратите внимание, что некоторые API являются системными API и ограничены разрешениями, так что доступ к ним может получить только приложение «Настройки» системы.
Разрабатывайте приложения с API точек доступа
Реализацию привязанной точки доступа Wi-Fi по умолчанию обеспечивает приложение «Настройки AOSP», однако оно не использует все API для настройки Soft AP.
Для поддержки подключения через точку доступа или локальную точку доступа приложение должно выполнять следующие функции:
Зарегистрируйте обратный вызов, чтобы получить возможности устройства, используя
WifiManager#registerSoftApCallback
для привязанной точки доступа илиWifiManager#registerLocalOnlyHotspotSoftApCallback
для локальной точки доступа.Обратный вызов
SoftApCallback
предоставляет следующие методы:-
SoftApCallback#onCapabilityChanged
: предоставляет информацию о возможностях устройства, включая максимальное количество поддерживаемых клиентов, а также о том, поддерживаются ли SAE или ACS. -
SoftApCallback#onInfoChanged
: предоставляет информацию о работающей Soft AP (действительно только после запуска), включая информацию о диапазоне и частоте. -
SoftApCallback#onConnectedClientsChanged
: Предоставляет список подключенных клиентов. Для каждого клиента можно получить MAC-адрес. Чтобы получить информацию об IP, используйте обратный вызовTetheringEventCallback#onClientsChanged
. -
SoftApCallback#onStateChanged
: предоставляет обновления состояния Soft AP при ее включении и отключении. -
SoftApCallback#onBlockedClientConnecting
: предоставляет информацию о заблокированном клиенте с указанием одной из следующих причин блокировки: устройство достигло максимального количества клиентов, которое оно может поддерживать, или клиент явно не авторизован для подключения. -
SoftApCallback#onClientsDisconnected
: Предоставляет список отключенных клиентов. Для каждого клиента можно получить причину отключения.
-
Для привязанной точки доступа:
- Настройте конфигурацию soft AP для привязки, вызвав метод
WifiManager#setSoftApConfiguration
и предоставив экземплярSoftApConfiguration
. СоздайтеSoftApConfiguration
с помощью классаSoftApConfiguration.Builder
. - Запустите модем, вызвав метод модема в
TetheringManager#startTethering
.
Для локальной точки доступа:
- Запустите локальную точку доступа с определенной конфигурацией программной точки доступа, вызвав метод
WifiManager#startLocalOnlyHotspot
.
Внедрение списков разрешений и блокировок
Типичное требование оператора — предоставить пользователю элементы управления устройствами, которым разрешено подключаться к Soft AP. Для этого есть несколько механизмов:
- Ограничьте максимальное количество устройств, которые могут быть связаны с soft AP, используя
SoftApConfiguration.Builder#setMaxNumberOfClients
. Обязательно укажите число, которое меньше максимального количества клиентов, поддерживаемых устройством. Вы можете получить максимальное количество изSoftApCapability#getMaxSupportedClients
. Обеспечьте динамический контроль с помощью списков разрешений и блокировок:
- Конфигурация Soft AP по умолчанию позволяет всем устройствам подключаться к Soft AP, за исключением устройств, 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 )
.- Конфигурация Soft AP по умолчанию позволяет всем устройствам подключаться к Soft AP, за исключением устройств, MAC-адреса которых добавлены в
Выполнение
Для поддержки модема через точку доступа или поддержки локальной точки доступа производители устройств должны обеспечить поддержку приложения «Настройки», фреймворка и HAL/прошивки:
Приложение настроек: приложение настроек AOSP обеспечивает базовую линию для настройки точки доступа с SSID и учетными данными безопасности. Этот код можно использовать как есть или изменить для предоставления дополнительных возможностей, как описано в разделе Разработка приложений с API точек доступа .
Фреймворк: Код фреймворка AOSP поддерживает все функции, описанные в разделе Разработка приложений с API точек доступа .
HAL/прошивка для точки доступа: HIDL IHostapd.hal версии 1.2 или выше, либо AIDL IHostapd.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
Android обеспечивает поддержку точек доступа Wi-Fi (Soft AP), включая подключение через точку доступа Wi-Fi и локальные точки доступа Wi-Fi.
Функция программной точки доступа позволяет настраивать следующее:
- SSID и BSSID
- Тип безопасности (включая WPA3)
- Скрытый SSID
- Рабочий диапазон и канал (включая ACS)
- Максимальное количество разрешенных клиентов
- Значение тайм-аута автоматического выключения
- Белый и черный списки, позволяющие пользователю управлять связанными устройствами
- Уровень рандомизации MAC для BSSID точки доступа
- 802.11ax и 802.11be
Возможности устройства определяют доступность этих элементов управления. Android 11 представляет API для получения этих возможностей. Производители устройств также могут указывать базовые возможности устройства с помощью наложений.
Обратите внимание, что некоторые API являются системными API и ограничены разрешениями, так что доступ к ним может получить только приложение «Настройки» системы.
Разрабатывайте приложения с API точек доступа
Реализацию привязанной точки доступа Wi-Fi по умолчанию обеспечивает приложение «Настройки AOSP», однако оно не использует все API для настройки Soft AP.
Для поддержки подключения через точку доступа или локальную точку доступа приложение должно выполнять следующие функции:
Зарегистрируйте обратный вызов, чтобы получить возможности устройства, используя
WifiManager#registerSoftApCallback
для привязанной точки доступа илиWifiManager#registerLocalOnlyHotspotSoftApCallback
для локальной точки доступа.Обратный вызов
SoftApCallback
предоставляет следующие методы:-
SoftApCallback#onCapabilityChanged
: предоставляет информацию о возможностях устройства, включая максимальное количество поддерживаемых клиентов, а также о том, поддерживаются ли SAE или ACS. -
SoftApCallback#onInfoChanged
: предоставляет информацию о работающей Soft AP (действительно только после запуска), включая информацию о диапазоне и частоте. -
SoftApCallback#onConnectedClientsChanged
: Предоставляет список подключенных клиентов. Для каждого клиента можно получить MAC-адрес. Чтобы получить информацию об IP, используйте обратный вызовTetheringEventCallback#onClientsChanged
. -
SoftApCallback#onStateChanged
: предоставляет обновления состояния Soft AP при ее включении и отключении. -
SoftApCallback#onBlockedClientConnecting
: предоставляет информацию о заблокированном клиенте с указанием одной из следующих причин блокировки: устройство достигло максимального количества клиентов, которое оно может поддерживать, или клиент явно не авторизован для подключения. -
SoftApCallback#onClientsDisconnected
: Предоставляет список отключенных клиентов. Для каждого клиента можно получить причину отключения.
-
Для привязанной точки доступа:
- Настройте конфигурацию soft AP для привязки, вызвав метод
WifiManager#setSoftApConfiguration
и предоставив экземплярSoftApConfiguration
. СоздайтеSoftApConfiguration
с помощью классаSoftApConfiguration.Builder
. - Запустите модем, вызвав метод модема в
TetheringManager#startTethering
.
Для локальной точки доступа:
- Запустите локальную точку доступа с определенной конфигурацией программной точки доступа, вызвав метод
WifiManager#startLocalOnlyHotspot
.
Внедрение списков разрешений и блокировок
Типичное требование оператора — предоставить пользователю элементы управления устройствами, которым разрешено подключаться к Soft AP. Для этого есть несколько механизмов:
- Ограничьте максимальное количество устройств, которые могут быть связаны с soft AP, используя
SoftApConfiguration.Builder#setMaxNumberOfClients
. Обязательно укажите число, которое меньше максимального количества клиентов, поддерживаемых устройством. Вы можете получить максимальное количество изSoftApCapability#getMaxSupportedClients
. Обеспечьте динамический контроль с помощью списков разрешений и блокировок:
- Конфигурация Soft AP по умолчанию позволяет всем устройствам подключаться к Soft AP, за исключением устройств, 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 )
.- Конфигурация Soft AP по умолчанию позволяет всем устройствам подключаться к Soft AP, за исключением устройств, MAC-адреса которых добавлены в
Выполнение
Для поддержки модема через точку доступа или поддержки локальной точки доступа производители устройств должны обеспечить поддержку приложения «Настройки», фреймворка и HAL/прошивки:
Приложение настроек: приложение настроек AOSP обеспечивает базовую линию для настройки точки доступа с SSID и учетными данными безопасности. Этот код можно использовать как есть или изменить для предоставления дополнительных возможностей, как описано в разделе Разработка приложений с API точек доступа .
Фреймворк: Код фреймворка AOSP поддерживает все функции, описанные в разделе Разработка приложений с API точек доступа .
HAL/прошивка для точки доступа: HIDL IHostapd.hal версии 1.2 или выше, либо AIDL IHostapd.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