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 บางรายการเป็น API ของระบบและถูกจำกัดผ่าน สิทธิ์เพื่อให้เฉพาะแอปการตั้งค่าของระบบเท่านั้นที่เข้าถึงได้
พัฒนาแอปด้วยฮอตสปอต API
AOSP Settings app มีการใช้งานฮอตสปอต Wi-Fi ที่เชื่อมต่อไว้โดยค่าเริ่มต้น แต่ไม่ได้ใช้ API ทั้งหมดสำหรับการกำหนดค่า Soft AP
หากต้องการรองรับการเชื่อมต่ออินเทอร์เน็ตผ่านฮอตสปอตหรือฮอตสปอตในพื้นที่เท่านั้น แอปต้องทำหน้าที่ต่อไปนี้
ลงทะเบียนการเรียกกลับเพื่อรับความสามารถของอุปกรณ์โดยใช้
WifiManager#registerSoftApCallback
สำหรับฮอตสปอตที่เชื่อมต่ออินเทอร์เน็ตผ่านมือถือ หรือWifiManager#registerLocalOnlyHotspotSoftApCallback
สำหรับฮอตสปอตที่ใช้ได้เฉพาะในเครื่องCallback ของ
SoftApCallback
มีเมธอดต่อไปนี้SoftApCallback#onCapabilityChanged
: ให้ข้อมูลเกี่ยวกับความสามารถของอุปกรณ์ รวมถึงจำนวนสูงสุด ของไคลเอ็นต์ที่รองรับ และรองรับ SAE หรือ ACS หรือไม่SoftApCallback#onInfoChanged
: ให้ข้อมูลเกี่ยวกับ Soft AP ที่กำลังทำงาน (ใช้ได้ครั้งเดียวเมื่อ เริ่มต้น) รวมถึงข้อมูลย่านความถี่และความถี่SoftApCallback#onConnectedClientsChanged
: แสดงรายการไคลเอ็นต์ที่เชื่อมต่อ คุณสามารถรับที่อยู่ MAC ของไคลเอ็นต์แต่ละรายได้ หากต้องการรับข้อมูล IP ให้ใช้TetheringEventCallback#onClientsChanged
การเรียกกลับSoftApCallback#onStateChanged
: ให้ข้อมูลอัปเดตเกี่ยวกับสถานะของ Soft AP เมื่อเปิดใช้และ ปิดใช้SoftApCallback#onBlockedClientConnecting
: ระบุข้อมูลไคลเอ็นต์ที่ถูกบล็อกพร้อมเหตุผลในการบล็อกอย่างใดอย่างหนึ่งต่อไปนี้ อุปกรณ์มีจำนวนไคลเอ็นต์สูงสุดที่รองรับได้ หรือไคลเอ็นต์ไม่ได้รับอนุญาตอย่างชัดเจนให้เชื่อมต่อSoftApCallback#onClientsDisconnected
: แสดงรายการไคลเอ็นต์ที่ไม่ได้เชื่อมต่อ คุณสามารถ ดูเหตุผลที่ทำให้ไคลเอ็นต์แต่ละรายถูกตัดการเชื่อมต่อได้
สำหรับฮอตสปอตที่เชื่อมต่ออินเทอร์เน็ตผ่านมือถือ
- กำหนดค่า AP แบบซอฟต์สำหรับการแชร์อินเทอร์เน็ตโดยการเรียกใช้เมธอด
WifiManager#setSoftApConfiguration
และระบุอินสแตนซ์SoftApConfiguration
สร้างSoftApConfiguration
โดยใช้คลาสSoftApConfiguration.Builder
- เริ่มการเชื่อมต่ออินเทอร์เน็ตโดยการเรียกใช้เมธอดการเชื่อมต่ออินเทอร์เน็ตที่
TetheringManager#startTethering
สำหรับฮอตสปอตในพื้นที่เท่านั้น
- เริ่มฮอตสปอตเฉพาะในพื้นที่ด้วยการกำหนดค่า AP แบบซอฟต์แวร์ที่เฉพาะเจาะจงโดย
เรียกใช้เมธอด
WifiManager#startLocalOnlyHotspot
ใช้รายการที่อนุญาตและรายการที่บล็อก
ข้อกำหนดของผู้ให้บริการทั่วไปคือการให้สิทธิ์ควบคุมแก่ผู้ใช้สำหรับ อุปกรณ์ที่ได้รับอนุญาตให้เชื่อมโยงกับ Soft AP ซึ่งทำได้หลายวิธีดังนี้
- จำกัดจำนวนอุปกรณ์สูงสุดที่เชื่อมโยงกับ 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
ซึ่งจะอนุญาตให้แอปควบคุม (กล่าวคือ แอปการตั้งค่า) ดำเนินการ เช่น ขอให้ผู้ใช้ยืนยัน แล้วเพิ่มอุปกรณ์ลงในรายการที่อนุญาตหรือรายการที่บล็อก ทั้งนี้ขึ้นอยู่กับพฤติกรรมของผู้ใช้
- ระบบจะบล็อกอุปกรณ์ทั้งหมดที่มีที่อยู่ MAC อยู่ใน
โปรดทราบว่าอุปกรณ์จะใช้ฟังก์ชันรายการที่อนุญาตได้ก็ต่อเมื่ออุปกรณ์ รองรับฟังก์ชันดังกล่าว คุณตรวจสอบว่าอุปกรณ์รองรับหรือไม่ได้โดยใช้
SoftApCapability#areFeaturesSupported(SOFTAP_FEATURE_CLIENT_FORCE_DISCONNECT)
- การกำหนดค่าเริ่มต้นของ Soft AP จะอนุญาตให้อุปกรณ์ทั้งหมดเชื่อมโยงกับ Soft AP ยกเว้นอุปกรณ์ที่มีการเพิ่มที่อยู่ MAC ลงใน
การใช้งาน
หากต้องการรองรับการแชร์อินเทอร์เน็ตผ่านฮอตสปอตหรือรองรับฮอตสปอตที่ใช้ได้เฉพาะในเครื่อง ผู้ผลิตอุปกรณ์ต้องให้การสนับสนุนแอปการตั้งค่า เฟรมเวิร์ก และ HAL/เฟิร์มแวร์
แอปการตั้งค่า: แอปการตั้งค่า AOSP มีพื้นฐานสำหรับการกำหนดค่า ฮอตสปอตการแชร์อินเทอร์เน็ตด้วย SSID และข้อมูลเข้าสู่ระบบความปลอดภัย คุณสามารถใช้โค้ดนี้ได้โดยตรงหรือแก้ไขเพื่อเพิ่มความสามารถเพิ่มเติมตามที่อธิบายไว้ในการพัฒนาแอปด้วยฮอตสปอต API
เฟรมเวิร์ก: โค้ดเฟรมเวิร์ก AOSP รองรับฟังก์ชันการทำงานทั้งหมด ที่อธิบายไว้ในการพัฒนาแอปด้วยฮอตสปอต API
HAL/เฟิร์มแวร์สำหรับฮอตสปอต: HIDL
IHostapd.hal
เวอร์ชัน 1.2 ขึ้นไป หรือ AIDLIHostapd.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
: ระบุว่าต้องเข้ารหัสรหัสผ่านของ AP แบบซอฟต์แวร์เป็น ASCII หรือไม่ config_wifiSoftapAutoUpgradeToBridgedConfigWhenSupported
: จะอัปเกรดการกำหนดค่าการตั้งค่าแบนด์เป็นแบบ 2 แบนด์โดยอัตโนมัติในระหว่างการกู้คืนการกำหนดค่าในระบบคลาวด์เมื่อรองรับอุปกรณ์ใหม่หรือไม่- (พร้อมใช้งานตั้งแต่ 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 มีชุดการทดสอบหน่วยและการทดสอบชุดเครื่องมือทดสอบความเข้ากันได้ (CTS) เพื่อตรวจสอบฟีเจอร์ฮอตสปอต นอกจากนี้ คุณยังทดสอบฟีเจอร์ฮอตสปอตได้โดยใช้ ชุดทดสอบของผู้ให้บริการ (VTS)
การทดสอบหน่วย
ยืนยันแพ็กเกจฮอตสปอตโดยใช้การทดสอบต่อไปนี้
การทดสอบบริการ:
atest packages/modules/Wifi/service/tests/wifitests/
การทดสอบของผู้จัดการ
atest packages/modules/Wifi/framework/tests/
การทดสอบชุดเครื่องมือทดสอบความเข้ากันได้ (CTS)
ใช้การทดสอบ CTS เพื่อตรวจสอบฟีเจอร์ฮอตสปอต CTS จะตรวจจับเมื่อมีการเปิดใช้ฟีเจอร์และรวมการทดสอบที่เกี่ยวข้องโดยอัตโนมัติ
หากต้องการเรียกใช้การทดสอบ CTS ให้เรียกใช้คำสั่งต่อไปนี้
atest android.net.wifi.cts.WifiManagerTest
ชุดทดสอบของผู้ให้บริการ (VTS)
หากใช้การติดตั้งอินเทอร์เฟซ HIDL ให้เรียกใช้คำสั่งต่อไปนี้
atest VtsHalWifiHostapdV1_2Target
หากมีการติดตั้งใช้งานอินเทอร์เฟซ AIDL ให้เรียกใช้คำสั่งต่อไปนี้
atest VtsHalHostapdTargetTest