Điểm phát sóng Wi-Fi (Soft AP)

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:

  1. Đă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#registerSoftApCallback cho điểm phát sóng được chia sẻ Internet hoặc WifiManager#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 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ại TetheringEventCallback#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:

  1. Định cấu hình Soft AP để chia sẻ Internet bằng cách gọi WifiManager#setSoftApConfiguration phương thức và cung cấp một SoftApConfiguration thực thể. Tạo SoftApConfiguration bằng cách sử dụng lớp SoftApConfiguration.Builder.
  2. 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ộ:

  1. 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#startLocalOnlyHotspot phươ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.

    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).

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:

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ật SoftApConfiguration#setAutoShutdownEnabled. Có thể ghi đè bằng cách sử dụng SoftApConfiguration#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ởi CarrierConfigManager.Wifi#KEY_HOTSPOT_MAX_CLIENT_COUNT). Kết quả cuối cùng được cung cấp cho ứng dụng bằng SoftApCapabilities#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 qua SoftApCapabilities#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_wifiSoftap6gChannelListconfig_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ành true theo 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_supported
    • config_wifi_softap_sae_supported
    • (Có từ Android 13) config_wifiSoftapOweTransitionSupported
    • (Có từ Android 13) config_wifiSoftapOweSupported
    • config_wifi_softap_ieee80211ac_supported
    • config_wifiSoftapIeee80211axSupported
    • (Có từ Android 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 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.WifiManagerTest

Bộ 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_2Target

Nếu bạn triển khai giao diện AIDL, hãy chạy:

atest VtsHalHostapdTargetTest