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

Android รองรับฮอตสปอต Wi-Fi (Soft AP) ซึ่งรวมถึงการเชื่อมต่ออินเทอร์เน็ตผ่านมือถือผ่านฮอตสปอต Wi-Fi และฮอตสปอต Wi-Fi ที่ใช้ได้เฉพาะในเครื่อง

ฟีเจอร์ Soft AP ช่วยให้กำหนดค่าสิ่งต่อไปนี้ได้

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

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

พัฒนาแอปด้วย API ของฮอตสปอต

แอปการตั้งค่าของโครงการโอเพนซอร์ส Android (AOSP) มีการใช้งานฮอตสปอต Wi-Fi ที่เชื่อมต่ออินเทอร์เน็ตผ่านมือถือเริ่มต้น แต่ไม่ได้ใช้ 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: ให้ข้อมูลไคลเอ็นต์ที่ถูกบล็อกพร้อมเหตุผลที่บล็อกอย่างใดอย่างหนึ่งต่อไปนี้ อุปกรณ์มีไคลเอ็นต์ถึงจำนวนสูงสุดที่รองรับได้ หรือไคลเอ็นต์ไม่ได้รับอนุญาตให้เชื่อมต่ออย่างชัดเจน
    • SoftApCallback#onClientsDisconnected: แสดงรายการไคลเอ็นต์ที่ยกเลิกการเชื่อมต่อ คุณสามารถรับเหตุผลที่ยกเลิกการเชื่อมต่อของไคลเอ็นต์แต่ละรายได้

สำหรับฮอตสปอตที่เชื่อมต่ออินเทอร์เน็ตผ่านมือถือ

  1. กำหนดค่า Soft AP สำหรับการเชื่อมต่ออินเทอร์เน็ตผ่านมือถือโดยเรียกใช้ WifiManager#setSoftApConfiguration เมธอดและระบุอินสแตนซ์ SoftApConfiguration สร้าง SoftApConfiguration โดยใช้ SoftApConfiguration.Builder คลาส
  2. เริ่มการเชื่อมต่ออินเทอร์เน็ตผ่านมือถือโดยเรียกใช้เมธอดการเชื่อมต่ออินเทอร์เน็ตผ่านมือถือที่ TetheringManager#startTethering

สำหรับฮอตสปอตที่ใช้ได้เฉพาะในเครื่อง

  1. เริ่มฮอตสปอตที่ใช้ได้เฉพาะในเครื่องด้วยการกำหนดค่า Soft 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/เฟิร์มแวร์ดังนี้

  • แอปการตั้งค่า: แอปการตั้งค่าของ Android Open Source Project (AOSP) มีพื้นฐานสำหรับการกำหนดค่าฮอตสปอตที่เชื่อมต่ออินเทอร์เน็ตผ่านมือถือด้วย SSID และข้อมูลเข้าสู่ระบบเพื่อความปลอดภัย คุณสามารถใช้โค้ดนี้ได้ตามที่ให้มาหรือแก้ไขเพื่อเพิ่ม ความสามารถตามที่อธิบายไว้ใน หัวข้อการพัฒนาแอปด้วย API ของฮอตสปอต

  • เฟรมเวิร์ก: โค้ดเฟรมเวิร์ก AOSP รองรับฟังก์ชันการทำงานทั้งหมด ที่อธิบายไว้ในหัวข้อการพัฒนาแอปด้วย 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)
  • (ใช้ได้ตั้งแต่ Android 13) config_wifiSoftapPassphraseAsciiEncodableCheck: ต้องเข้ารหัสพาสเฟรสของ Soft AP เป็น ASCII หรือไม่
  • config_wifiSoftapAutoUpgradeToBridgedConfigWhenSupported: จะอัปเกรดการกำหนดค่าการตั้งค่าย่านความถี่เป็นย่านความถี่คู่โดยอัตโนมัติระหว่างการกู้คืนการกำหนดค่าระบบคลาวด์เมื่อมีการรองรับอุปกรณ์ใหม่หรือไม่
  • (ใช้ได้ตั้งแต่ Android 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
    • (ใช้ได้ตั้งแต่ Android 13) config_wifiSoftapOweTransitionSupported
    • (ใช้ได้ตั้งแต่ Android 13) config_wifiSoftapOweSupported
    • config_wifi_softap_ieee80211ac_supported
    • config_wifiSoftapIeee80211axSupported
    • (ใช้ได้ตั้งแต่ Android 13) config_wifiSoftapIeee80211beSupported
    • config_wifiSoftapMacAddressCustomizationSupported
    • config_wifiSoftapHeSuBeamformerSupported
    • config_wifiSoftapHeSuBeamformeeSupported
    • config_wifiSoftapHeMuBeamformerSupported
    • config_wifiSoftapHeTwtSupported
    • config_wifiSoftap24ghzSupported
    • config_wifiSoftap5ghzSupported
    • config_wifiSoftap6ghzSupported
    • config_wifiSoftap60ghzSupported
    • config_wifiSoftapAcsIncludeDfs

การตรวจสอบ

Android มีชุดการทดสอบแบบ Unit Test และชุดเครื่องมือทดสอบความเข้ากันได้ (CTS) เพื่อตรวจสอบฟีเจอร์ฮอตสปอต นอกจากนี้ คุณยังทดสอบฟีเจอร์ฮอตสปอตได้โดยใช้ Vendor Test Suite (VTS)

Unit Test

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

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

    atest packages/modules/Wifi/service/tests/wifitests/
  • การทดสอบเครื่องมือจัดการ:

    atest packages/modules/Wifi/framework/tests/

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

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

หากต้องการทริกเกอร์การทดสอบ CTS ให้เรียกใช้คำสั่งต่อไปนี้

atest android.net.wifi.cts.WifiManagerTest

Vendor Test Suite (VTS)

หากมีการใช้งานอินเทอร์เฟซ HIDL ให้เรียกใช้คำสั่งต่อไปนี้

atest VtsHalWifiHostapdV1_2Target

หากมีการใช้งานอินเทอร์เฟซ AIDL ให้เรียกใช้คำสั่งต่อไปนี้

atest VtsHalHostapdTargetTest