Android hỗ trợ điểm phát sóng Wi-Fi (Soft AP), bao gồm cả việc chia sẻ Internet qua điểm phát sóng Wi-Fi và điểm phát sóng Wi-Fi chỉ trong cục bộ.
Tính năng Soft AP cho phép định cấu hình những mục sau:
- SSID và BSSID
- Loại bảo mật (bao gồm cả WPA3)
- SSID ẩn
- Băng tần và kênh hoạt động (bao gồm cả ACS)
- Số lượng tối đa khách hàng được phép
- Giá trị thời gian chờ tự động tắt
- Danh sách cho phép và danh sách chặn để cho phép người dùng kiểm soát các thiết bị được liên kết
- Mức độ ngẫu nhiên hoá địa chỉ MAC cho BSSID AP
- 802.11ax và 802.11be
Các tính năng của thiết bị sẽ xác định khả năng sử dụng của các chế độ kiểm soát này. Android 11 giới thiệu các API để có được các tính năng này. Nhà sản xuất thiết bị cũng có thể chỉ định các tính năng cơ bản của thiết bị bằng lớp phủ.
Phát triển ứng dụng bằng các API điểm phát sóng
Ứng dụng Cài đặt của Dự án nguồn mở Android (AOSP) cung cấp một cách triển khai mặc định cho điểm phát sóng Wi-Fi được chia sẻ Internet. Tuy nhiên, ứng dụng này không sử dụng tất cả các API để định cấu hình Soft AP.
Để hỗ trợ việc chia sẻ Internet qua điểm phát sóng hoặc điểm phát sóng chỉ trong cục bộ, ứng dụng phải thực hiện các chức năng sau:
Đăng ký lệnh gọi lại để có được các tính năng của thiết bị bằng cách sử dụng
WifiManager#registerSoftApCallbackcho điểm phát sóng được chia sẻ Internet hoặcWifiManager#registerLocalOnlyHotspotSoftApCallbackcho điểm phát sóng chỉ trong cục bộ.Lệnh gọi lại
SoftApCallbackcung cấp các phương thức sau:SoftApCallback#onCapabilityChanged: Cung cấp thông tin về các tính năng của thiết bị, bao gồm số lượng tối đa khách hàng được hỗ trợ và liệu SAE hoặc ACS có được hỗ trợ hay không.SoftApCallback#onInfoChanged: Cung cấp thông tin về Soft AP đang chạy (chỉ hợp lệ sau khi bắt đầu), bao gồm cả thông tin về băng tần và tần số.SoftApCallback#onConnectedClientsChanged: Cung cấp danh sách các khách hàng được kết nối. Đối với mỗi khách hàng, bạn có thể lấy địa chỉ MAC. Để lấy thông tin IP, hãy sử dụng lệnh gọi lạiTetheringEventCallback#onClientsChanged.SoftApCallback#onStateChanged: Cung cấp thông tin cập nhật về trạng thái của Soft AP khi được bật và tắt.SoftApCallback#onBlockedClientConnecting: Cung cấp thông tin về khách hàng bị chặn với một trong các lý do chặn sau: thiết bị đã đạt đến số lượng tối đa khách hàng mà thiết bị có thể hỗ trợ hoặc khách hàng không được phép kết nối một cách rõ ràng.SoftApCallback#onClientsDisconnected: Cung cấp danh sách các khách hàng bị ngắt kết nối. Đối với mỗi khách hàng, bạn có thể lấy lý do ngắt kết nối.
Đối với điểm phát sóng được chia sẻ Internet:
- Định cấu hình Soft AP để chia sẻ Internet bằng cách gọi
WifiManager#setSoftApConfigurationphương thức và cung cấp mộtSoftApConfigurationthực thể. TạoSoftApConfigurationbằng cách sử dụng lớpSoftApConfiguration.Builder. - Bắt đầu chia sẻ Internet bằng cách gọi phương thức chia sẻ Internet tại
TetheringManager#startTethering.
Đối với điểm phát sóng chỉ trong cục bộ:
- Bắt đầu điểm phát sóng chỉ trong cục bộ với một cấu hình Soft AP cụ thể bằng cách
gọi
WifiManager#startLocalOnlyHotspotphương thức.
Triển khai danh sách cho phép và danh sách chặn
Một yêu cầu thông thường của nhà mạng là cung cấp cho người dùng các chế độ kiểm soát đối với các thiết bị được phép liên kết với Soft AP. Có một số cơ chế để thực hiện việc này:
- Giới hạn số lượng tối đa thiết bị có thể liên kết với Soft AP bằng cách sử dụng
SoftApConfiguration.Builder#setMaxNumberOfClients. Hãy nhớ chỉ định một số thấp hơn số lượng tối đa khách hàng mà thiết bị hỗ trợ. Bạn có thể lấy số lượng tối đa từSoftApCapability#getMaxSupportedClients. Cung cấp chế độ kiểm soát linh động bằng cách sử dụng danh sách cho phép và danh sách chặn:
- Cấu hình mặc định của Soft AP cho phép tất cả các thiết bị liên kết với Soft AP, ngoại trừ các thiết bị có địa chỉ MAC được thêm vào
SoftApConfiguration.Builder#setBlockedClientList. - Nếu Soft AP được định cấu hình bằng
SoftApConfiguration.Builder#setClientControlByUserEnabled(true), thì danh sách cho phép sẽ được sử dụng.- Tất cả các thiết bị có địa chỉ MAC trong
SoftApConfiguration.Builder#setBlockedClientListđều bị chặn liên kết. - Tất cả các thiết bị có địa chỉ MAC trong
SoftApConfiguration.Builder#setAllowedClientListđều được phép liên kết. - Tất cả các thiết bị khác (tức là các thiết bị có địa chỉ MAC không có trong danh sách cho phép hoặc danh sách chặn) đều bị chặn liên kết nhưng
SoftApCallback#onBlockedClientConnectingđược gọi, cho phép ứng dụng kiểm soát (tức là ứng dụng Cài đặt) thực hiện một hành động, chẳng hạn như yêu cầu người dùng xác nhận rồi thêm thiết bị vào danh sách cho phép hoặc danh sách chặn tuỳ thuộc vào hành vi của người dùng.
- Tất cả các thiết bị có địa chỉ MAC trong
Xin lưu ý rằng các thiết bị chỉ có thể sử dụng chức năng danh sách cho phép nếu chức năng này được hỗ trợ trên thiết bị. Bạn có thể xác minh khả năng hỗ trợ của thiết bị bằng cách sử dụng
SoftApCapability#areFeaturesSupported(SOFTAP_FEATURE_CLIENT_FORCE_DISCONNECT).- Cấu hình mặc định của Soft AP cho phép tất cả các thiết bị liên kết với Soft AP, ngoại trừ các thiết bị có địa chỉ MAC được thêm vào
Triển khai
Để hỗ trợ việc chia sẻ Internet qua điểm phát sóng hoặc hỗ trợ điểm phát sóng chỉ trong cục bộ, nhà sản xuất thiết bị phải cung cấp ứng dụng cài đặt, khung và hỗ trợ HAL/firmware:
Ứng dụng Cài đặt: Ứng dụng Cài đặt của Dự án nguồn mở Android (AOSP) cung cấp một đường cơ sở để định cấu hình điểm phát sóng chia sẻ Internet bằng SSID và thông tin xác thực bảo mật. Bạn có thể sử dụng mã này nguyên trạng hoặc sửa đổi để cung cấp các tính năng bổ sung như mô tả trong bài viết Phát triển ứng dụng bằng các API điểm phát sóng.
Khung: Mã khung AOSP hỗ trợ tất cả các chức năng được mô tả trong bài viết Phát triển ứng dụng bằng các API điểm phát sóng.
HAL/firmware cho điểm phát sóng: HIDL
IHostapd.halphiên bản 1.2 trở lên hoặc AIDLIHostapd.aidl.
Tùy chỉnh
Để tuỳ chỉnh quá trình triển khai, nhà sản xuất thiết bị nên định cấu hình các
lớp phủ và cấu hình nhà mạng sau đây, được ghi lại trong
packages/modules/Wifi/service/ServiceWifiResources/res/values/config.xml:
config_wifiFrameworkSoftApShutDownTimeoutMilliseconds: Khoảng thời gian chờ tắt mặc định. Chỉ hợp lệ nếu bạn bậtSoftApConfiguration#setAutoShutdownEnabled. Có thể ghi đè bằng cách sử dụngSoftApConfiguration#setShutdownTimeoutMillis.config_wifiHardwareSoftapMaxClientCount: Giới hạn phần cứng đối với số lượng tối đa khách hàng được hỗ trợ. Số lượng tối đa khách hàng mà thiết bị hỗ trợ là mức tối thiểu của các hạn chế về phần cứng và nhà mạng (được chỉ định bởiCarrierConfigManager.Wifi#KEY_HOTSPOT_MAX_CLIENT_COUNT). Kết quả cuối cùng được cung cấp cho ứng dụng bằngSoftApCapabilities#getMaxSupportedClients.config_wifiSofapClientForceDisconnectSupported: Liệu thiết bị có khả năng buộc ngắt kết nối khách hàng hay không. Bắt buộc phải bật danh sách cho phép và danh sách chặn. Được truyền đạt cho ứng dụng kiểm soát (ứng dụng Cài đặt) thông quaSoftApCapabilities#areFeaturesSupported(SOFTAP_FEATURE_CLIENT_FORCE_DISCONNECT).- (Có từ Android 13)
config_wifiSoftapPassphraseAsciiEncodableCheck: Liệu cụm mật khẩu Soft AP có bắt buộc phải mã hoá được bằng ASCII hay không. config_wifiSoftapAutoUpgradeToBridgedConfigWhenSupported: Liệu có tự động nâng cấp cấu hình chế độ cài đặt băng tần lên băng tần kép trong quá trình khôi phục cấu hình đám mây khi một thiết bị mới được hỗ trợ hay không.- (Có từ Android 13)
config_wifiSoftapAutoAppendLowerBandsToBandConfigurationEnabled: Liệu khung có tự động thêm các băng tần thấp hơn vào cấu hình băng tần để tránh xử lý cùng tồn tại hay không. config_wifiSoftApDynamicCountryCodeUpdateSupported: Liệu thiết bị có hỗ trợ cập nhật mã quốc gia động ở chế độ AP hay không- Hỗ trợ kênh:
config_wifiSoftap2gChannelList,config_wifiSoftap5gChannelList,config_wifiSoftap6gChannelListvàconfig_wifiSoftap60gChannelList. - Hỗ trợ khôi phục, chỉ định liệu các mục tương ứng có được đặt lại về mặc định hay không khi khôi phục cấu hình điểm phát sóng về một thiết bị mới:
config_wifiSoftapResetChannelConfig,config_wifiSoftapResetHiddenConfig,config_wifiSoftapResetUserControlConfig,config_wifiSoftapResetAutoShutdownTimerConfig,config_wifiSoftapResetMaxClientSettingConfig. Xin lưu ý rằng các mục này được đặt thànhtruetheo mặc định, nghĩa là các giá trị sẽ được đặt lại. Điều này rất quan trọng nếu thiết bị mới không hỗ trợ cấu hình. - Các tính năng của phần cứng:
config_wifi_softap_acs_supportedconfig_wifi_softap_sae_supported- (Có từ Android 13)
config_wifiSoftapOweTransitionSupported - (Có từ Android 13)
config_wifiSoftapOweSupported config_wifi_softap_ieee80211ac_supportedconfig_wifiSoftapIeee80211axSupported- (Có từ Android 13)
config_wifiSoftapIeee80211beSupported config_wifiSoftapMacAddressCustomizationSupportedconfig_wifiSoftapHeSuBeamformerSupportedconfig_wifiSoftapHeSuBeamformeeSupportedconfig_wifiSoftapHeMuBeamformerSupportedconfig_wifiSoftapHeTwtSupportedconfig_wifiSoftap24ghzSupportedconfig_wifiSoftap5ghzSupportedconfig_wifiSoftap6ghzSupportedconfig_wifiSoftap60ghzSupportedconfig_wifiSoftapAcsIncludeDfs
Xác nhận kết quả
Android cung cấp một tập hợp các bài kiểm thử đơn vị và bài kiểm thử Bộ kiểm tra tính tương thích (CTS) để xác thực tính năng điểm phát sóng. Bạn cũng có thể kiểm thử tính năng điểm phát sóng bằng cách sử dụng Bộ kiểm thử nhà cung cấp (VTS).
Kiểm thử đơn vị
Xác minh gói điểm phát sóng bằng các bài kiểm thử sau.
Bài kiểm thử dịch vụ:
atest packages/modules/Wifi/service/tests/wifitests/Bài kiểm thử trình quản lý:
atest packages/modules/Wifi/framework/tests/
Bài kiểm thử Bộ kiểm tra tính tương thích (CTS)
Sử dụng các bài kiểm thử CTS để xác thực tính năng điểm phát sóng. CTS phát hiện thời điểm tính năng được bật và tự động đưa các bài kiểm thử được liên kết vào.
Để kích hoạt các bài kiểm thử CTS, hãy chạy:
atest android.net.wifi.cts.WifiManagerTestBộ kiểm thử nhà cung cấp (VTS)
Nếu bạn triển khai giao diện HIDL, hãy chạy:
atest VtsHalWifiHostapdV1_2TargetNếu bạn triển khai giao diện AIDL, hãy chạy:
atest VtsHalHostapdTargetTest