ฮอตสปอต Wi-Fi (Soft AP)

Android ให้การสนับสนุน Wi-Fi hotspot (Soft AP) รวมถึงการปล่อยสัญญาณผ่าน Wi-Fi hotspot และ Wi-Fi hotspots แบบโลคัลเท่านั้น

คุณลักษณะ AP แบบอ่อนช่วยให้สามารถกำหนดค่าต่อไปนี้:

  • SSID และ BSSID
  • ประเภทความปลอดภัย (รวมถึง WPA3)
  • SSID ที่ซ่อนอยู่
  • แถบปฏิบัติการและช่องสัญญาณ (รวมถึง ACS)
  • จำนวนไคลเอ็นต์สูงสุดที่อนุญาต
  • ค่าหมดเวลาปิดเครื่องอัตโนมัติ
  • รายการที่อนุญาตและรายการที่บล็อกเพื่ออนุญาตให้ผู้ใช้ควบคุมอุปกรณ์ที่เกี่ยวข้อง
  • ระดับของการสุ่ม MAC สำหรับ AP BSSID
  • 802.11ax และ 802.11be

ความสามารถของอุปกรณ์กำหนดความพร้อมใช้งานของการควบคุมเหล่านี้ Android 11 แนะนำ API เพื่อรับความสามารถเหล่านี้ ผู้ผลิตอุปกรณ์ยังสามารถระบุความสามารถของอุปกรณ์พื้นฐานโดยใช้การซ้อนทับ

โปรดทราบว่า API บางตัวเป็น API ของระบบและถูกจำกัดด้วยสิทธิ์เพื่อให้แอปการตั้งค่าของระบบเท่านั้นที่เข้าถึงได้

การพัฒนาแอพด้วย hotspot API

การใช้งานเริ่มต้นของฮอตสปอต Wi-Fi ที่เชื่อมโยงกันมีให้โดยแอปการตั้งค่า AOSP อย่างไรก็ตาม แอปการตั้งค่า AOSP ไม่ได้ใช้ API ทั้งหมดสำหรับการกำหนดค่า Soft AP

เพื่อรองรับการปล่อยสัญญาณผ่านฮอตสปอตหรือฮอตสปอตในเครื่องเท่านั้น แอปต้องทำหน้าที่ต่อไปนี้:

  1. ลงทะเบียนการโทรกลับเพื่อรับความสามารถของอุปกรณ์โดยใช้ 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 : ให้ข้อมูลไคลเอ็นต์ที่ถูกบล็อกพร้อมเหตุผลข้อใดข้อหนึ่งต่อไปนี้สำหรับการบล็อก: อุปกรณ์ถึงจำนวนไคลเอ็นต์สูงสุดที่สามารถรองรับได้ หรือไคลเอ็นต์ไม่ได้รับอนุญาตอย่างชัดเจนให้เชื่อมต่อ

สำหรับฮอตสปอตแบบเชื่อมต่อ:

  1. กำหนดการกำหนดค่า softApConfiguration สำหรับการปล่อยสัญญาณโดยเรียกเมธอด WifiManager#setSoftApConfiguration และจัดเตรียมอินสแตนซ์ SoftApConfiguration สร้าง SoftApConfiguration โดยใช้คลาส SoftApConfiguration.Builder
  2. เริ่มการปล่อยสัญญาณโดยเรียกวิธีการปล่อยสัญญาณที่ TetheringManager#startTethering

สำหรับฮอตสปอตในพื้นที่เท่านั้น:

  1. เริ่มฮอตสปอตแบบโลคัลเท่านั้นด้วยการกำหนดค่า AP แบบซอฟต์เฉพาะโดยเรียกเมธอด 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 ซึ่งอนุญาตให้แอปควบคุม (นั่นคือแอปการตั้งค่า) ดำเนินการสำหรับ เช่น ขอให้ผู้ใช้ยืนยัน จากนั้นจึงเพิ่มอุปกรณ์ในรายการที่อนุญาตหรือรายการบล็อก ทั้งนี้ขึ้นอยู่กับพฤติกรรมของผู้ใช้

    โปรดทราบว่าอุปกรณ์จะใช้ฟังก์ชันรายการที่อนุญาตได้ก็ต่อเมื่ออุปกรณ์นั้นรองรับเท่านั้น คุณสามารถตรวจสอบการสนับสนุนอุปกรณ์ได้โดยใช้ SoftApCapability#areFeaturesSupported( SOFTAP_FEATURE_CLIENT_FORCE_DISCONNECT )

การดำเนินการ

เพื่อรองรับการปล่อยสัญญาณผ่านฮอตสปอตหรือรองรับฮอตสปอตเฉพาะที่เท่านั้น ผู้ผลิตอุปกรณ์ต้องจัดเตรียมแอปการตั้งค่า เฟรมเวิร์ก และการสนับสนุน HAL/เฟิร์มแวร์:

  • แอพการตั้งค่า: แอพการตั้งค่า AOSP เป็นพื้นฐานสำหรับการกำหนดค่าฮอตสปอตการปล่อยสัญญาณด้วย SSID และข้อมูลรับรองความปลอดภัย รหัสนี้สามารถใช้ตามที่เป็นอยู่หรือแก้ไขเพื่อให้มีความสามารถเพิ่มเติมตามที่อธิบายไว้ใน การพัฒนาแอปด้วย hotspot API

  • เฟรมเวิร์ก: โค้ดเฟรมเวิร์ก AOSP รองรับการทำงานทั้งหมดที่อธิบายไว้ใน การพัฒนาแอพด้วย hotspot 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 แบบซอฟต์ AP หรือไม่
  • config_wifiSoftapAutoUpgradeToBridgedConfigWhenSupported : จะอัปเกรดการกำหนดค่าการตั้งค่าแบนด์เป็นแบนด์คู่โดยอัตโนมัติระหว่างการกู้คืนการกำหนดค่าระบบคลาวด์หรือไม่ เมื่ออุปกรณ์ใหม่รองรับ
  • (ใช้ได้ตั้งแต่ 13) config_wifiSoftapAutoAppendLowerBandsToBandConfigurationEnabled : กำหนดว่าเฟรมเวิร์กจะเพิ่มแบนด์ที่ต่ำกว่าให้กับการกำหนดค่าแบนด์โดยอัตโนมัติเพื่อหลีกเลี่ยงการจัดการที่อยู่ร่วมกันหรือไม่
  • config_wifiSoftApDynamicCountryCodeUpdateSupported : รองรับการอัปเดตรหัสประเทศแบบไดนามิกในโหมด AP หรือไม่
  • การสนับสนุนช่องทาง: 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 มีชุดการทดสอบหน่วย การทดสอบการรวม (Android Connectivity Test Suite หรือ ACTS) และการทดสอบ Compatibility Test Suite (CTS) เพื่อตรวจสอบคุณสมบัติฮอตสปอต ฟีเจอร์ฮอตสปอตสามารถทดสอบได้โดยใช้ Vendor Test Suite (VTS)

การทดสอบหน่วย

ตรวจสอบแพ็คเกจฮอตสปอตโดยใช้การทดสอบต่อไปนี้

  • การทดสอบบริการ:

    atest packages/modules/Wifi/service/tests/wifitests/
    
  • การทดสอบผู้จัดการ:

    atest packages/modules/Wifi/framework/tests/
    

การทดสอบบูรณาการ (ACTS)

ชุดทดสอบฮอตสปอต ACTS ซึ่งอยู่ใน tools/test/connectivity/acts_tests/tests/google/wifi/WifiSoftApTest.py ใช้การทดสอบการทำงานของฟีเจอร์ฮอตสปอต

การทดสอบความเข้ากันได้ของชุดทดสอบ (CTS)

ใช้ การทดสอบ CTS เพื่อตรวจสอบคุณสมบัติของฮอตสปอต CTS ตรวจพบเมื่อเปิดใช้งานคุณสมบัติและรวมการทดสอบที่เกี่ยวข้องโดยอัตโนมัติ

ในการทริกเกอร์การทดสอบ CTS ให้รัน:

atest android.net.wifi.cts.WifiManagerTest

ชุดทดสอบผู้จำหน่าย (VTS)

หากใช้อินเทอร์เฟซ HIDL ให้เรียกใช้:

atest VtsHalWifiHostapdV1_2Target

หากใช้งานอินเทอร์เฟซ AIDL ให้เรียกใช้:

atest VtsHalHostapdTargetTest