Android 12 เปิดตัว Wi-Fi STA/STA พร้อมกัน ซึ่งช่วยให้อุปกรณ์เชื่อมต่อเครือข่าย Wi-Fi 2 เครือข่ายพร้อมกันได้ ฟีเจอร์ที่ไม่บังคับนี้ทำให้ฟังก์ชันต่อไปนี้ใช้งานได้
- สร้างก่อนหักบัญชี: อุปกรณ์จะเชื่อมต่อกับเครือข่าย Wi-Fi ใหม่ก่อนที่จะหยุดการเชื่อมต่อที่มีอยู่ ซึ่งส่งผลให้การเปลี่ยนไปมาระหว่างเครือข่าย Wi-Fi ราบรื่นยิ่งขึ้น
- การเชื่อมต่ออินเทอร์เน็ตเฉพาะท้องถิ่นและพร้อมกัน: อุปกรณ์เชื่อมต่อกับเครือข่ายเฉพาะที่โดยไม่รบกวนการเชื่อมต่ออินเทอร์เน็ตหลักของอุปกรณ์
- การเชื่อมต่ออินเทอร์เน็ตแบบจำกัดและพร้อมกัน: อุปกรณ์เชื่อมต่อกับเครือข่ายที่จำกัด (ใช้ได้กับแอปที่ได้รับสิทธิ์บางแอปเท่านั้น) โดยไม่รบกวนการเชื่อมต่ออินเทอร์เน็ตหลักของอุปกรณ์
- (Android 13 ขึ้นไป) ใช้หลายเครือข่ายพร้อมกันโดยเชื่อมต่ออินเทอร์เน็ต: อุปกรณ์จะเชื่อมต่อกับเครือข่าย 2 เครือข่ายที่ไม่มีการจำกัดและใช้งานได้สำหรับทุกแอป รวมถึงมีการเชื่อมต่ออินเทอร์เน็ต
หน้านี้อธิบายลักษณะการทำงานของอุปกรณ์เมื่อเปิดใช้ฟีเจอร์นี้ รวมถึงรายละเอียดการใช้งานสำหรับผู้ผลิตและผู้ให้บริการอุปกรณ์
การใช้งาน
อุปกรณ์ต้องรองรับรายการต่อไปนี้เพื่อใช้งาน Wi-Fi STA/STA พร้อมกัน
ชิป Wi-Fi หรือเฟิร์มแวร์ต้องรองรับการเชื่อมต่อ STA พร้อมกัน 2 จุด เฟิร์มแวร์ต้องรองรับชุดค่าผสมของช่องสัญญาณและย่านความถี่ทั้งหมดสำหรับการเชื่อมต่อทั้ง 2 แบบ เพื่อหลีกเลี่ยงปัญหาด้านประสิทธิภาพ เราขอแนะนำให้ใช้ ชิป Wi-Fi ที่ใช้ DBS ขนาด 2x2+2x2 ได้
อุปกรณ์ต้องรองรับ API ต่อไปนี้ในการใช้งาน AIDL หรือ HIDL ของ
IWifiChip
IWifiChip.setMultiStaPrimaryConnection(String ifName)
IWifiChip.setMultiStaUseCase(MultiStaUseCase useCase)
ชุดอินเทอร์เฟซ Wi-Fi แบบ HAL ต้องมีอินเทอร์เฟซ STA พร้อมกัน 2 รายการที่แสดงโดยใช้รูปแบบข้อกำหนดเฉพาะ เช่น
[{STA} <= 2, ...]
ดูข้อมูลเพิ่มเติมได้ที่การใช้งานหลายอินเทอร์เฟซผ่าน Wi-Fi พร้อมกัน
หากเป็นไปตามข้อกำหนดเบื้องต้นเหล่านั้นแล้ว ให้ใช้ Wi-Fi STA/STA พร้อมกันโดยทำตามขั้นตอนต่อไปนี้
เปิดใช้อย่างน้อย 1 ฟังก์ชันแยกกันโดยใช้การวางซ้อนทรัพยากรรันไทม์ (ปิดใช้โดยค่าเริ่มต้น)
- สร้างคอนเทนต์ก่อนหยุดพัก:
config_wifiMultiStaNetworkSwitchingMakeBeforeBreakEnabled
- การเชื่อมต่ออินเทอร์เน็ตเฉพาะในตัวเท่านั้น:
config_wifiMultiStaLocalOnlyConcurrencyEnabled
- การเชื่อมต่ออินเทอร์เน็ตแบบจำกัดและพร้อมกัน:
config_wifiMultiStaRestrictedConcurrencyEnabled
- ใช้หลายเครือข่ายพร้อมกันด้วยการเชื่อมต่ออินเทอร์เน็ต:
config_wifiMultiStaMultiInternetConcurrencyEnabled
- สร้างคอนเทนต์ก่อนหยุดพัก:
ตรวจสอบการติดตั้งใช้งานแต่ละรายการตามที่อธิบายไว้ในส่วนที่เกี่ยวข้อง
เพื่อให้รองรับ Wi-Fi STA/STA พร้อมกันได้ดียิ่งขึ้น ขอแนะนำให้ใช้เฟรมเวิร์กและแอปที่ออกแบบโดย OEM ใช้NetworkCallback#onCapabilitiesChanged()
แทน WifiManager#getConnectionInfo()
ซึ่งจะแสดงผล WifiInfo
สำหรับเครือข่ายเดียวและเลิกใช้งานใน Android 12 เท่านั้น ดูข้อมูลเพิ่มเติมได้ที่ Wi-Fi Network Request API สำหรับการเชื่อมต่อแบบเพียร์ทูเพียร์
แต่งหน้าก่อนหยุดพัก
ฟังก์ชันหยุดพักก่อนพักช่วยให้อุปกรณ์เชื่อมต่อกับเครือข่าย Wi-Fi ใหม่ขณะที่ยังคงรักษาการเชื่อมต่อเครือข่าย Wi-Fi เดิมไว้ เพียงแต่ยกเลิกการเชื่อมต่อจากเครือข่ายเก่าก็ต่อเมื่อเชื่อมต่อกับเครือข่าย Wi-Fi ใหม่ได้สำเร็จและเชื่อมต่ออินเทอร์เน็ตได้
กรณีการใช้งานแบบ "เลือกก่อนหยุดพัก" จะจัดการกับปัญหาต่อไปนี้ใน Android 11 หรือต่ำกว่า ซึ่งก็คือการที่อุปกรณ์ต้องยกเลิกการเชื่อมต่อกับเครือข่าย Wi-Fi ที่มีอยู่ก่อนที่จะเชื่อมต่อกับเครือข่ายใหม่ (หยุดพักก่อนการทำ)
เมื่อเชื่อมต่อกับเครือข่ายใหม่ อุปกรณ์อาจพบว่ามีการบันทึกรหัสผ่าน Wi-Fi ที่ไม่ถูกต้องหรือเครือข่ายใหม่ไม่มีการเข้าถึงอินเทอร์เน็ต ซึ่งจะบังคับให้อุปกรณ์เปลี่ยนกลับไปใช้เครือข่ายเก่า ทำให้ต้องใช้เวลาระยะหนึ่งหากไม่มีการเชื่อมต่อ Wi-Fi
ยกเลิกการเชื่อมต่อเครือข่ายเก่าอย่างกะทันหัน ซึ่งหมายความว่าเต้ารับทั้งหมดถูกปิด แอปมักตอบสนองได้ไม่ดีต่อการสูญเสียการเชื่อมต่ออย่างกะทันหัน ซึ่งอาจทำให้ผู้ใช้ไม่สามารถเชื่อมต่ออินเทอร์เน็ตได้หลายวินาทีจนกว่าจะทำการเชื่อมต่อใหม่ได้สำเร็จ
เครือข่ายเริ่มต้นจะเปลี่ยน 2 ครั้งจากเครือข่าย Wi-Fi เดิมเป็นเครือข่ายมือถือ จากนั้นจากเครือข่ายมือถือเป็นเครือข่าย Wi-Fi ใหม่ ซึ่งทำให้แอปตอบสนองต่อ การเปลี่ยนแปลงเครือข่าย 2 ครั้ง อุปกรณ์ต้องใช้ระยะเวลาสั้นๆ โดยใช้ข้อมูลมือถือด้วย
ขั้นตอนการสร้างก่อนหยุดพักจะใช้เฉพาะกับสวิตช์เครือข่าย Wi-Fi อัตโนมัติที่เริ่มต้นโดยระบบปฏิบัติการเท่านั้น สวิตช์เครือข่ายที่เริ่มต้นโดยผู้ใช้จะใช้ขั้นตอน "หยุดพักก่อนสร้าง" แบบเดิม ซึ่งเครือข่ายเดิมจะยกเลิกการเชื่อมต่อโดยสมบูรณ์ก่อนที่จะเชื่อมต่อกับเครือข่ายใหม่ ในบางกรณี จะมีการใช้ขั้นตอน "หยุดพักก่อนสร้าง" แม้ในสวิตช์อัตโนมัติที่เริ่มต้นโดยระบบปฏิบัติการ เช่น เมื่อสลับระหว่าง 2 เครือข่ายซึ่งกำหนดค่าให้ใช้ที่อยู่ MAC จากโรงงาน
แอปสามารถตรวจสอบว่าอุปกรณ์รองรับกรณีการใช้งานนี้โดยใช้ WifiManager#isMakeBeforeBreakWifiSwitchingSupported()
API หรือไม่
ตรวจสอบการแต่งหน้าก่อนหยุดพัก
หากต้องการตรวจสอบการใช้งาน ให้ทริกเกอร์สวิตช์เครือข่าย Wi-Fi อัตโนมัติ (โดยตรวจสอบว่าเครือข่ายมีความแรงของสัญญาณแรงกว่าเครือข่ายที่เชื่อมต่อพร้อมใช้งาน) และยืนยันว่าอุปกรณ์ยังคงรักษาการเชื่อมต่อที่มีอยู่ขณะเชื่อมต่อกับเครือข่ายใหม่ หากต้องการดูสถานะของอินเทอร์เฟซ Wi-Fi ทั้ง 2 อินเทอร์เฟซและยืนยันว่าทั้ง 2 อินเทอร์เฟซเชื่อมต่อแล้ว ให้ใช้คำสั่งต่อไปนี้
adb shell wpa_cli -i wlan0 status ; echo ; adb shell wpa_cli -i wlan1 status
หากเครือข่ายใหม่ไม่มีการเชื่อมต่อ อุปกรณ์จะพยายามเชื่อมต่อกับเครือข่าย โดยยังคงเชื่อมต่อกับเครือข่ายที่มีอยู่ และล้มเลิกการดำเนินการเมื่อตรวจพบว่าเครือข่ายใหม่ไม่มีอินเทอร์เน็ต จากนั้นอุปกรณ์จะใช้การเชื่อมต่อที่มีอยู่เป็นเครือข่าย Wi-Fi หลักต่อไป
เฉพาะในตัวเครื่องและการเชื่อมต่ออินเทอร์เน็ตพร้อมกัน
ฟังก์ชันการเชื่อมต่ออินเทอร์เน็ตเฉพาะในเครื่องและอินเทอร์เน็ตพร้อมกันช่วยให้อุปกรณ์เชื่อมต่อกับการเชื่อมต่อภายในเท่านั้น เช่น การเชื่อมต่อกับอุปกรณ์ IoT ควบคู่ไปกับเครือข่ายหลักที่ให้บริการอินเทอร์เน็ต ฟังก์ชันนี้จะช่วยปรับปรุงประสบการณ์ของผู้ใช้เมื่อเชื่อมต่อกับอุปกรณ์ IoT โดยตรง (เช่น กล้องถ่ายรูป) ซึ่งทำได้ผ่าน WifiNetworkSpecifier
API ที่เพิ่มลงใน Android 10
ใน Android 11 และต่ำกว่า อุปกรณ์จะยกเลิกการเชื่อมต่อกับเครือข่าย Wi-Fi หลักเมื่อเชื่อมต่อกับอุปกรณ์ IoT ทำให้สูญเสียการเชื่อมต่ออินเทอร์เน็ต (เว้นแต่อุปกรณ์มีการรับส่งประเภทอื่น เช่น อินเทอร์เน็ตมือถือ)
แอปจะตรวจสอบได้ว่าอุปกรณ์รองรับฟังก์ชันนี้หรือไม่โดยใช้ WifiManager#isStaConcurrencyForLocalOnlyConnectionsSupported()
API
ดูข้อมูลเพิ่มเติมเกี่ยวกับการเปลี่ยนแปลงของฟังก์ชัน "เฉพาะเครื่องภายในเครื่องเท่านั้น" และ "การเชื่อมต่ออินเทอร์เน็ตพร้อมกัน" ใน Android 12 ได้ที่ Wi-Fi Network Request API สำหรับการเชื่อมต่อระหว่างเครื่อง
ตรวจสอบการเชื่อมต่ออินเทอร์เน็ตเฉพาะในตัวเครื่องและการเชื่อมต่ออินเทอร์เน็ต
หากต้องการตรวจสอบฟังก์ชันนี้ ให้ใช้การทดสอบ CTS ของ MultiStaConcurrencyWifiNetworkSpecifierTest
การเชื่อมต่ออินเทอร์เน็ตที่จำกัดและจำกัดพร้อมกัน
ฟังก์ชันการเชื่อมต่ออินเทอร์เน็ตแบบจำกัดและพร้อมกันช่วยให้อุปกรณ์เชื่อมต่อกับเครือข่าย Wi-Fi หลักพร้อมกันสำหรับผู้ใช้กับเครือข่าย Wi-Fi ที่จำกัดซึ่งใช้ได้กับบางแอปเท่านั้น
แอปจะตรวจสอบได้ว่าอุปกรณ์รองรับฟังก์ชันนี้หรือไม่โดยใช้ WifiManager#isStaConcurrencyForRestrictedConnectionsSupported()
API
หากต้องการอนุญาตให้อุปกรณ์เชื่อมต่อกับเครือข่าย Wi-Fi สำรองที่จำกัด ให้ทำตามขั้นตอนต่อไปนี้
เพิ่มคำแนะนำเครือข่าย Wi-Fi ด้วย
setOemPaid
หรือsetOemPrivate
ตั้งค่าเป็น "จริง"ใน
ConnectivityManager
ให้ส่งNetworkRequest
ที่มีความสามารถที่เกี่ยวข้องดังนี้NET_CAPABILITY_OEM_PAID
สำหรับsetOemPaid
NET_CAPABILITY_OEM_PRIVATE
สำหรับsetOemPrivate
เมื่ออุปกรณ์ตรวจพบผลการสแกนกับเครือข่ายที่ตรงกับคำแนะนำส่วนตัวแบบ OEM หรือ OEM อุปกรณ์จะเชื่อมต่อกับเครือข่ายนั้นโดยอัตโนมัติในฐานะเครือข่ายรอง
ตรวจสอบการเชื่อมต่ออินเทอร์เน็ตแบบจำกัดและพร้อมกัน
หากต้องการตรวจสอบฟังก์ชันนี้ ให้ใช้การทดสอบ CTS ของ MultiStaConcurrencyRestrictedWifiNetworkSuggestionTest
เชื่อมต่อหลายเครือข่ายพร้อมกัน
พร้อมใช้งานใน Android 13 ขึ้นไป ฟีเจอร์หลายเครือข่ายพร้อมกันที่มีการเชื่อมต่ออินเทอร์เน็ตช่วยให้อุปกรณ์เชื่อมต่อ 2 เครือข่าย (AP) พร้อมกันได้ ซึ่งเป็นทั้ง 2 เครือข่ายที่ไม่มีการจำกัด (แอปทั้งหมดมีสิทธิ์เข้าถึง) และเชื่อมต่ออินเทอร์เน็ตได้
แอปจะตรวจสอบได้ว่าอุปกรณ์รองรับฟีเจอร์นี้หรือไม่โดยใช้เมธอด WifiManager#isStaConcurrencyForMultiInternetSupported()
หากระบบรองรับฟีเจอร์นี้ แอปที่ได้รับสิทธิ์จะเปิดใช้ฟีเจอร์ได้โดยใช้เมธอด WifiManager#setStaConcurrencyForMultiInternetMode(int mode)
ฟีเจอร์นี้มีโหมดต่อไปนี้
WifiManager#WIFI_MULTI_INTERNET_MODE_DBS_AP
: จำกัดการเชื่อมต่อแบบคู่ไปยังย่านความถี่คู่ของ DBS APWifiManager#WIFI_MULTI_INTERNET_MODE_MULTI_AP
: เชื่อมต่อกับ AP ที่กําหนดเองซึ่งการเชื่อมต่อแต่ละรายการใช้ย่านความถี่ที่แตกต่างกันWifiManager#WIFI_MULTI_INTERNET_MODE_DISABLED
: ปิดใช้ฟีเจอร์
หากต้องการค้นหาโหมดฟีเจอร์ที่ใช้งานอยู่ในปัจจุบัน ให้ใช้เมธอด WifiManager#getStaConcurrencyForMultiInternetMode()
เมื่อเปิดใช้ฟีเจอร์นี้แล้ว ให้ใช้ขั้นตอนต่อไปนี้เพื่อขอเครือข่าย Wi-Fi ที่ให้บริการอินเทอร์เน็ตเพิ่มเติม
สร้างตัวระบุเครือข่าย Wi-Fi โดยใช้
WifiNetworkSpecifier.Builder
เลือกแบนด์สำหรับตัวระบุโดยใช้เมธอดsetBand()
อย่าระบุ SSID หรือ BSSID เป็นเครือข่ายเพิ่มเติมสำหรับย่านความถี่ที่ระบุซึ่งเฟรมเวิร์ก Wi-Fi เลือกไว้ใช้
ConnectivityManager
เพื่อสร้างNetworkRequest
ที่มีความสามารถของNET_CAPABILITY_INTERNET
เพิ่มตัวระบุในคำขอเครือข่ายพร้อมกับอินสแตนซ์
NetworkCallback
เพื่อติดตามสถานะของคำขอและส่งคำขอไปยังConnectivityManager
หากเครือข่ายที่บันทึกไว้ที่มีย่านความถี่ที่ขอพร้อมใช้งานในผลการสแกนและการเชื่อมต่อกับเครือข่ายสําเร็จ ระบบจะเรียกใช้NetworkCallback.onAvailable()
ในออบเจ็กต์ Callback
ตรวจสอบเครือข่ายหลายรายการพร้อมกันด้วยการเชื่อมต่ออินเทอร์เน็ต
หากต้องการตรวจสอบฟังก์ชันนี้ ให้ใช้การทดสอบ CTS ต่อไปนี้
- CTS:
MultiStaConcurrencyMultiInternetWifiNetworkTest
หลักเกณฑ์ของชิป Wi-Fi ของผู้ให้บริการ
สำหรับผู้ให้บริการชิป Wi-Fi ให้ใช้หลักเกณฑ์ต่อไปนี้เพื่อรองรับการเกิดขึ้นพร้อมกันของ Wi-Fi STA/STA
ชิป Wi-Fi ต้องรองรับการเชื่อมต่อ STA แบบ 2 เครื่องพร้อมกัน ซึ่งหมายความว่า แอปรองรับสิ่งต่อไปนี้
- อินเทอร์เฟซ STA แต่ละรายการมี MAC ที่ไม่ซ้ำกันซึ่งสามารถตั้งโปรแกรมได้โดยเฟรมเวิร์ก
- คุณสร้างและทำลายอินเทอร์เฟซ STA รองแบบไดนามิกได้
- STA แต่ละรายการจะเชื่อมต่อกับ SSID ที่ต่างกันได้ (ภายในย่านความถี่เดียวกันหรือย่านความถี่อื่น)
- STA แต่ละรายการสามารถเชื่อมต่อกับ SSID เดียวกัน (ภายในย่านความถี่เดียวกันหรือย่านความถี่อื่น) STA ทั้ง 2 รายการต้องไม่เชื่อมต่อกับ BSSID เดียวกัน
ฟีเจอร์ที่สำคัญต้องทำงานแบบทีละอินเทอร์เฟซและต้องพร้อมใช้งานในอินเทอร์เฟซหลัก รายการฟีเจอร์ที่สำคัญเหล่านี้มีดังนี้
ต้องมีการรองรับโรมมิ่งในอินเทอร์เฟซหลักอย่างน้อย 1 อินเทอร์เฟซ (ตั้งค่าโดยใช้
IWifiChip.setMultiStaPrimaryConnection()
) หากระบบรองรับการโรมมิ่งในทั้ง 2 อินเทอร์เฟซ การตัดสินใจเกี่ยวกับการเชื่อมต่อเดียวจะต้องไม่กระทบกับการเชื่อมต่อพร้อมกันครั้งที่ 2 ตัวอย่างเช่น อินเทอร์เฟซหนึ่งต้องไม่โรมมิ่งไปยัง BSSID ของการเชื่อมต่ออื่นต้องรองรับ APF (และการลดภาระงานอื่นๆ เช่น ARP และ NS) ในอินเทอร์เฟซหลัก (ตั้งค่าโดยใช้
IWifiChip.setMultiStaPrimaryConnection()
) เป็นอย่างน้อยสถิติเลเยอร์ลิงก์ต้องทำงานแบบอินเทอร์เฟซต่ออินเทอร์เฟซ
การใช้งานชิป Wi-Fi ที่แนะนำสำหรับสถานการณ์การเกิดขึ้นพร้อมกันที่แตกต่างกันมีดังนี้
ชิป Wi-Fi ต้องอนุญาตให้เฟรมเวิร์กเรียกใช้
IWifiChip.setMultiStaUseCase()
ด้วยค่าคงที่ต่อไปนี้เพื่อระบุฟังก์ชันปัจจุบันDUAL_STA_TRANSIENT_PREFER_PRIMARY
: ระบุฟังก์ชันMake-before-Break ต้องให้ความสำคัญกับคุณภาพของการเชื่อมต่อหลัก ให้เหนือกว่าการเชื่อมต่อรองDUAL_STA_NON_TRANSIENT_UNBIASED
: ระบุการเชื่อมต่ออินเทอร์เน็ตภายในเครื่องและอินเทอร์เน็ตพร้อมกันเท่านั้น หรือฟังก์ชันการเชื่อมต่ออินเทอร์เน็ตแบบจำกัดและพร้อมกัน ต้องให้ความสำคัญกับคุณภาพของการเชื่อมต่อ ทั้ง 2 อย่างเท่าๆ กัน
เนื่องจาก STA พร้อมกันแบบคู่อาจนำไปสู่โหมดการดำเนินการ MCC, SCC และ DBS การใช้งานของผู้ให้บริการจึงต้องเลือกการกำหนดค่าวิทยุที่ดีที่สุดเมื่อเฟรมเวิร์กเรียกใช้
IWifiChip.setMultiStaUseCase()
เพื่อระบุฟังก์ชัน หลักเกณฑ์ทั่วไปมีดังต่อไปนี้- แนะนำให้ใช้ 2x2+2x2 DBS หากมี
- หากเป็นไปได้ ให้หลีกเลี่ยงการใช้ 1x1+1x1 DBS เพราะส่งผลต่อคุณภาพการเชื่อมต่อที่มากเกินไป แต่ให้ใช้ MCC แทน
- ไดรเวอร์หรือเฟิร์มแวร์ต้องกำหนดค่ารอบทำงานของ MCC สำหรับฟังก์ชันต่างๆ เฟรมเวิร์กนี้ไม่ได้กำหนดรอบหน้าที่ของ MCC โดยตรง แต่จะค้นหาข้อมูลนี้โดยใช้
StaLinkLayerIfaceStats.timeSliceDutyCycleInPercent
หากใช้ MCC เราขอแนะนำรอบการทำงานต่อไปนี้ระหว่างการเชื่อมต่อหลักและรอง
DUAL_STA_TRANSIENT_PREFER_PRIMARY
: ประถมศึกษา 70% มัธยมศึกษา 30%DUAL_STA_NON_TRANSIENT_UNBIASED
: ประถมศึกษา 50% มัธยมศึกษา 50%