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ỉ dành cho mạng cục bộ.
Tính năng điểm truy cập ảo 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 ứng dụng tối đa đượ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 của địa chỉ MAC cho BSSID của AP
- 802.11ax và 802.11be
Các tính năng của thiết bị sẽ quyết định việc có các chế độ kiểm soát này hay không. Android 11 giới thiệu các API để có được những chức năng này. Nhà sản xuất thiết bị cũng có thể chỉ định các chức năng cơ bản của thiết bị bằng lớp phủ.
Xin lưu ý rằng một số API là API hệ thống và bị hạn chế thông qua các quyền để chỉ ứng dụng Cài đặt của hệ thống mới có thể truy cập vào các API đó.
Phát triển ứng dụng bằng API điểm phát sóng
Ứng dụng Cài đặt AOSP cung cấp chế độ triển khai mặc định của điểm phát sóng Wi-Fi được chia sẻ qua Internet, tuy nhiên, chế độ này không sử dụng tất cả các API để định cấu hình Soft AP.
Để hỗ trợ tính năng 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ý một lệnh gọi lại để lấy các chức năng của thiết bị bằng cách sử dụng
WifiManager#registerSoftApCallback
cho điểm phát sóng chia sẻ Internet hoặcWifiManager#registerLocalOnlyHotspotSoftApCallback
cho điểm phát sóng chỉ trong cục bộ.Lệnh gọi lại
SoftApCallback
cung cấp các phương thức sau:SoftApCallback#onCapabilityChanged
: Cung cấp thông tin về các chức năng của thiết bị, bao gồm cả số lượng tối đa của các ứng dụng được hỗ trợ và liệu SAE hay ACS có được hỗ trợ hay không.SoftApCallback#onInfoChanged
: Cung cấp thông tin về AP mềm đang chạy (chỉ có hiệu lực một lần 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 ứng dụng đã kết nối. Đối với mỗi máy khách, 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ề ứng dụng bị chặn với một trong các lý do chặn sau: thiết bị đã đạt đến số lượng ứng dụng tối đa mà thiết bị có thể hỗ trợ hoặc ứng dụng không được uỷ quyền rõ ràng để kết nối.SoftApCallback#onClientsDisconnected
: Cung cấp danh sách các máy khách bị ngắt kết nối. Đối với mỗi ứng dụ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 cấu hình điểm truy cập mềm để chia sẻ Internet bằng cách gọi phương thức
WifiManager#setSoftApConfiguration
và cung cấp một thực thểSoftApConfiguration
. TạoSoftApConfiguration
bằ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ộ bằng một cấu hình AP ảo cụ thể bằng cách gọi phương thức
WifiManager#startLocalOnlyHotspot
.
Triển khai danh sách cho phép và danh sách chặn
Một yêu cầu điển hình của nhà mạng là cung cấp cho người dùng quyền kiểm soát các thiết bị được phép liên kết với AP mềm. Có một số cơ chế để thực hiện việc này:
- Giới hạn số lượng thiết bị tối đa có thể liên kết với AP mềm bằng
SoftApConfiguration.Builder#setMaxNumberOfClients
. Đảm bảo bạn chỉ định một số thấp hơn số lượng ứng dụng tối đa mà thiết bị hỗ trợ. Bạn có thể nhận được số lượng tối đa từSoftApCapability#getMaxSupportedClients
. Cung cấp chế độ kiểm soát linh hoạt 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 một AP ảo cho phép tất cả các thiết bị liên kết với AP ảo, ngoại trừ những 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 dùng.- Tất cả các thiết bị có địa chỉ MAC trong
SoftApConfiguration.Builder#setBlockedClientList
đều bị chặn kết nối. - 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à những thiết bị có địa chỉ MAC không nằm 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 thiết bị đó hỗ trợ chức năng này. Bạn có thể xác minh khả năng hỗ trợ 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 một AP ảo cho phép tất cả các thiết bị liên kết với AP ảo, ngoại trừ những thiết bị có địa chỉ MAC được thêm vào
Triển khai
Để hỗ trợ chia sẻ Internet qua điểm phát sóng hoặc chỉ hỗ trợ điểm phát sóng 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/chương trình cơ sở:
Ứng dụng Cài đặt: Ứng dụng Cài đặt 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 đăng nhập 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 chức năng bổ sung như mô tả trong phần Phát triển ứng dụng bằng API điểm phát sóng.
Khung: Mã khung AOSP hỗ trợ tất cả chức năng được mô tả trong phần Phát triển ứng dụng bằng API điểm phát sóng.
HAL/firmware cho điểm phát sóng: HIDL
IHostapd.hal
phiên bản 1.2 trở lên hoặc AIDLIHostapd.aidl
.
Tuỳ chỉnh
Để tuỳ chỉnh việc triển khai, các 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ác lớp phủ và cấu hình nà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ằngSoftApConfiguration#setShutdownTimeoutMillis
.config_wifiHardwareSoftapMaxClientCount
: Giới hạn phần cứng cho số lượng tối đa của các ứng dụng được hỗ trợ. Số lượng tối đa các ứng dụng mà thiết bị hỗ trợ là số lượng tối thiểu theo các ràng buộc về phần cứng và nhà mạng (doCarrierConfigManager.Wifi#KEY_HOTSPOT_MAX_CLIENT_COUNT
chỉ định). Kết quả cuối cùng được cung cấp cho ứng dụng bằngSoftApCapabilities#getMaxSupportedClients
.config_wifiSofapClientForceDisconnectSupported
: Thiết bị có khả năng buộc ngắt kết nối một ứng dụng hay không. Bắt buộc để bật danh sách cho phép và chặn. Được truyền đến ứng dụng kiểm soát (ứng dụng Cài đặt) thông quaSoftApCapabilities#areFeaturesSupported(SOFTAP_FEATURE_CLIENT_FORCE_DISCONNECT)
.- (Có từ phiên bản 13)
config_wifiSoftapPassphraseAsciiEncodableCheck
: Cụm mật khẩu AP mềm có bắt buộc phải mã hoá theo tiêu chuẩn ASCII hay không. config_wifiSoftapAutoUpgradeToBridgedConfigWhenSupported
: 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ừ phiên bản 13)
config_wifiSoftapAutoAppendLowerBandsToBandConfigurationEnabled
: Liệu khung có tự động thêm các dải tần thấp hơn vào cấu hình dải tần để tránh xử lý việc cùng tồn tại hay không. config_wifiSoftApDynamicCountryCodeUpdateSupported
: Thiết bị có hỗ trợ cập nhật mã quốc gia động ở chế độ AP hay không- Kênh hỗ trợ:
config_wifiSoftap2gChannelList
,config_wifiSoftap5gChannelList
,config_wifiSoftap6gChannelList
vàconfig_wifiSoftap60gChannelList
. - Khôi phục chế độ hỗ trợ, cho biết liệu các mục tương ứng có được đặt lại về mặc định khi khôi phục cấu hình điểm phát sóng về một thiết bị mới hay không:
config_wifiSoftapResetChannelConfig
,config_wifiSoftapResetHiddenConfig
,config_wifiSoftapResetUserControlConfig
,config_wifiSoftapResetAutoShutdownTimerConfig
,config_wifiSoftapResetMaxClientSettingConfig
. Xin lưu ý rằng các giá trị này được đặt thànhtrue
theo mặc định, tức 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. - Khả năng phần cứng:
config_wifi_softap_acs_supported
config_wifi_softap_sae_supported
- (Có từ ngày 13)
config_wifiSoftapOweTransitionSupported
- (Có từ ngày 13)
config_wifiSoftapOweSupported
config_wifi_softap_ieee80211ac_supported
config_wifiSoftapIeee80211axSupported
- (Có từ ngày 13)
config_wifiSoftapIeee80211beSupported
config_wifiSoftapMacAddressCustomizationSupported
config_wifiSoftapHeSuBeamformerSupported
config_wifiSoftapHeSuBeamformeeSupported
config_wifiSoftapHeMuBeamformerSupported
config_wifiSoftapHeTwtSupported
config_wifiSoftap24ghzSupported
config_wifiSoftap5ghzSupported
config_wifiSoftap6ghzSupported
config_wifiSoftap60ghzSupported
config_wifiSoftapAcsIncludeDfs
Xác nhận kết quả
Android cung cấp một bộ kiểm thử đơn vị và các 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 Vendor Test Suite (VTS).
Kiểm thử đơn vị
Xác minh gói điểm phát sóng bằng các kiểm thử sau.
Kiểm thử dịch vụ:
atest packages/modules/Wifi/service/tests/wifitests/
Kiểm thử người quản lý:
atest packages/modules/Wifi/framework/tests/
Các bài kiểm thử trong Bộ kiểm tra tính tương thích (CTS)
Sử dụng các quy trình 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 bao gồm các kiểm thử liên kết.
Để kích hoạt các bài kiểm thử CTS, hãy chạy:
atest android.net.wifi.cts.WifiManagerTest
Bộ thử nghiệm của nhà cung cấp (VTS)
Nếu giao diện HIDL được triển khai, hãy chạy:
atest VtsHalWifiHostapdV1_2Target
Nếu bạn triển khai giao diện AIDL, hãy chạy:
atest VtsHalHostapdTargetTest