Điểm phát sóng Wi-Fi (Điểm truy cập mềm)

Android hỗ trợ điểm phát sóng Wi-Fi (Soft AP), bao gồm cả tính năng chia sẻ Internet qua điểm phát sóng Wi-Fi và điểm phát sóng Wi-Fi chỉ cục bộ.

Tính năng AP mềm 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
  • Kênh và băng tần hoạt động (bao gồm cả ACS)
  • Số lượng khách hà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 MAC cho AP BSSID
  • 802.11ax và 802.11be

Khả năng của thiết bị quyết định khả năng sử dụng các chế độ kiểm soát này. Android 11 ra mắt các API để có được những tính năng này. Nhà sản xuất thiết bị cũng có thể chỉ định chức năng cơ sở của thiết bị bằng cách sử dụng lớp phủ.

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 có API điểm phát sóng

Phương thức triển khai mặc định của điểm phát sóng Wi-Fi được chia sẻ Internet sẽ do ứng dụng Cài đặt AOSP cung cấp. Tuy nhiên, hoạt động này không thực thi tất cả các API cho cấu hình AP mềm.

Để hỗ trợ tính năng chia sẻ Internet thông qua điểm phát sóng hoặc điểm phát sóng chỉ trên thiết 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 để lấy 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ỉ 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ề khả năng của thiết bị, bao gồm số lượng ứng dụng tối đa được hỗ trợ và liệu SAE hay ACS được hỗ trợ.
    • SoftApCallback#onInfoChanged: Cung cấp thông tin về AP Soft đ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 suất.
    • SoftApCallback#onConnectedClientsChanged: Cung cấp danh sách các ứng dụng đã kết nối. Đối với mỗi ứng dụng, bạn có thể có được đị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ề ứng dụng bị chặn kèm theo một trong các lý do sau đây khiến ứng dụng bị chặn: thiết bị đã đạt đến số lượng ứng dụng tối đa mà nó có thể hỗ trợ hoặc ứng dụng không được cho phép kết nối một cách rõ ràng.

Đối với điểm phát sóng được chia sẻ Internet:

  1. Định cấu hình cấu hình AP mềm cho hoạt động 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ạo SoftApConfiguration bằ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. Khởi động điểm phát sóng chỉ cục bộ bằng một cấu hình AP mềm 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 thông thường của nhà mạng là cung cấp cho người dùng quyền kiểm soát những 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. Hãy nhớ chỉ định số thấp hơn số ứng dụng tối đa 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 động bằng danh sách cho phép và danh sách chặn:

    • Cấu hình mặc định của AP mềm cho phép mọi thiết bị liên kết với AP mềm, ngoại trừ các thiết bị có địa chỉ MAC được thêm vào SoftApConfiguration.Builder#setBlockedClientList.
    • Nếu bạn định cấu hình AP mềm bằng SoftApConfiguration.Builder#setClientControlByUserEnabled(true), thì danh sách cho phép sẽ được sử dụng.

      • Mọi thiết bị có địa chỉ MAC nằm trong SoftApConfiguration.Builder#setBlockedClientList sẽ bị chặn khỏi liên kết.
      • Mọi thiết bị có địa chỉ MAC nằm 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 nằm trong danh sách cho phép hoặc chặn) bị chặn khỏi 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 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 vào danh sách chặn tuỳ thuộc vào hành vi của người dùng.

    Lưu ý các thiết bị chỉ có thể sử dụng chức năng danh sách cho phép nếu tính năng này được hỗ trợ trên thiết bị. Bạn có thể xác minh khả năng hỗ trợ thiết bị bằng SoftApCapability#areFeaturesSupported(SOFTAP_FEATURE_CLIENT_FORCE_DISCONNECT).

Triển khai

Để hỗ trợ tính năng chia sẻ Internet thông qua điểm phát sóng hoặc để hỗ trợ một điểm phát sóng chỉ cục bộ, nhà sản xuất thiết bị phải hỗ trợ ứng dụng Cài đặt, khung và hỗ trợ HAL/phần mềm cơ sở:

Tuỳ chỉnh

Để tuỳ chỉnh hoạt động 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 mạng di độ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 ứng dụng tối đa được hỗ trợ. Số lượng ứng dụng tối đa mà thiết bị hỗ trợ là mức tối thiểu trong các quy tắc ràng buộc về phần cứng và nhà mạng (do CarrierConfigManager.Wifi#KEY_HOTSPOT_MAX_CLIENT_COUNT chỉ định). Kết quả cuối cùng sẽ được cung cấp cho ứng dụng có SoftApCapabilities#getMaxSupportedClients.
  • config_wifiSofapClientForceDisconnectSupported: Liệu thiết bị có khả năng buộc ngắt kết nối một ứng dụng hay không. Bạn cần phải bật danh sách cho phép và danh sách chặn. Được kết nối với ứng dụng điều khiển (ứng dụng Cài đặt) thông qua SoftApCapabilities#areFeaturesSupported(SOFTAP_FEATURE_CLIENT_FORCE_DISCONNECT).
  • (Có từ 13) config_wifiSoftapPassphraseAsciiEncodableCheck: Liệu cụm mật khẩu AP mềm có bắt buộc phải là ASCII có thể mã hoá hay không.
  • config_wifiSoftapAutoUpgradeToBridgedConfigWhenSupported: Có tự động nâng cấp cấu hình 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 có hỗ trợ một thiết bị mới hay không.
  • (Có sẵn từ 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 việc xử lý cùng tồn tại hay không.
  • config_wifiSoftApDynamicCountryCodeUpdateSupported: Thiết bị có hỗ trợ tính năng cập nhật mã quốc gia động ở chế độ AP hay không
  • Kênh hỗ trợ: config_wifiSoftap2gChannelList, config_wifiSoftap5gChannelList, config_wifiSoftap6gChannelListconfig_wifiSoftap60gChannelList.
  • Khôi phục hỗ trợ 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 cho một thiết bị mới: config_wifiSoftapResetChannelConfig, config_wifiSoftapResetHiddenConfig, config_wifiSoftapResetUserControlConfig, config_wifiSoftapResetAutoShutdownTimerConfig, config_wifiSoftapResetMaxClientSettingConfig. Xin lưu ý rằng các giá trị này được đặt thành true theo mặc định, có nghĩa là các giá trị đượ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 này.
  • Khả năng phần cứng:
    • config_wifi_softap_acs_supported
    • config_wifi_softap_sae_supported
    • (Có sẵn từ 13) config_wifiSoftapOweTransitionSupported
    • (Có sẵn từ 13) config_wifiSoftapOweSupported
    • config_wifi_softap_ieee80211ac_supported
    • config_wifiSoftapIeee80211axSupported
    • (Có sẵn từ 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 Bộ thử nghiệm 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 quy trình kiểm thử sau.

  • Kiểm thử dịch vụ:

    atest packages/modules/Wifi/service/tests/wifitests/
    
  • Thử nghiệm dành cho người quản lý:

    atest packages/modules/Wifi/framework/tests/
    

Các bài kiểm tra Bộ kiểm tra tính tương thích (CTS)

Sử dụng quy trình kiểm traCTS để xác thực tính năng điểm phát sóng. CTS sẽ phát hiện thời điểm tính năng này được bật và tự động bao gồm các bài kiểm thử liên quan.

Để kích hoạt thử nghiệm CTS, hãy chạy:

atest android.net.wifi.cts.WifiManagerTest

Bộ thử nghiệm nhà cung cấp (VTS)

Nếu giao diện HIDL được triển khai, hãy chạy:

atest VtsHalWifiHostapdV1_2Target

Nếu giao diện AIDL được triển khai, hãy chạy:

atest VtsHalHostapdTargetTest