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
- แต่งหน้าก่อนหยุดพัก
ตรวจสอบการติดตั้งใช้งานแต่ละรายการตามที่อธิบายไว้ในส่วนที่เกี่ยวข้อง
เราขอแนะนำให้ใช้บริการ OEM ที่กำหนดเองเพื่อรองรับการเกิดขึ้นพร้อมกันของ Wi-Fi STA/STA ได้ดียิ่งขึ้น
เฟรมเวิร์กและแอปใช้เมธอด NetworkCallback#onCapabilitiesChanged()
แทนที่จะเป็น WifiManager#getConnectionInfo()
ซึ่งจะแสดงผลเฉพาะ WifiInfo
สำหรับ
เครือข่ายเดียวและเลิกใช้งานแล้วใน Android 12 สำหรับ
ข้อมูลเพิ่มเติม โปรดดู
API คำขอเครือข่าย Wi-Fi สำหรับการเชื่อมต่อแบบเพียร์ทูเพียร์
แต่งหน้าก่อนหยุดพัก
ฟังก์ชันกำหนดเวลาก่อนหยุดพักช่วยให้อุปกรณ์เชื่อมต่อกับ Wi-Fi ใหม่ได้ เครือข่ายพร้อมๆ กับรักษาการเชื่อมต่อเครือข่าย Wi-Fi ที่มีอยู่เท่านั้น ถูกตัดการเชื่อมต่อจากเครือข่ายเดิม เมื่อเชื่อมต่อกับเครือข่ายใหม่ได้สำเร็จ เครือข่าย Wi-Fi และเชื่อมต่ออินเทอร์เน็ตได้
Use Case แบบก่อนหยุดพักจะจัดการกับปัญหาต่อไปนี้ใน Android 11 หรือต่ำกว่า ซึ่งอุปกรณ์ต้องยกเลิกการเชื่อมต่อ จากเครือข่าย Wi-Fi ที่มีอยู่ก่อนเชื่อมต่อเครือข่ายใหม่ (break-before-make)
เมื่อเชื่อมต่อกับเครือข่ายใหม่ อุปกรณ์อาจพบว่า บันทึกรหัสผ่าน Wi-Fi ที่ไม่ถูกต้องหรือเครือข่ายใหม่ไม่บันทึก มีการเชื่อมต่ออินเทอร์เน็ต วิธีนี้จะบังคับให้อุปกรณ์เปลี่ยนกลับไปเป็นเวอร์ชันเก่า เครือข่าย เป็นเวลานานพอสมควรหากไม่มีการเชื่อมต่อ Wi-Fi
ยกเลิกการเชื่อมต่อเครือข่ายเก่าอย่างกะทันหัน ซึ่งหมายความว่า ซ็อกเก็ตต่าง ๆ ปิดลง แอปมักตอบสนองได้ไม่ดีนักกับการสูญเสีย และอาจนำไปสู่การเชื่อมต่อ ผู้ใช้ไม่สามารถเชื่อมต่อกับอินเทอร์เน็ตได้ 2-3 วินาทีจนกระทั่ง สร้างการเชื่อมต่ออย่างสมบูรณ์แล้ว
เครือข่ายเริ่มต้นจะเปลี่ยน 2 ครั้ง โดยเปลี่ยนจากเครือข่าย Wi-Fi เดิมเป็นเครือข่ายมือถือ จากนั้นจากเครือข่ายมือถือไปใช้เครือข่าย Wi-Fi ใหม่ ซึ่งทำให้แอปตอบสนองต่อ มีการเปลี่ยนแปลง 2 ครั้ง อุปกรณ์ยังต้องใช้เวลา โดยใช้อินเทอร์เน็ตมือถือ
ขั้นตอนการสร้างก่อนหยุดพักจะใช้กับเครือข่าย Wi-Fi อัตโนมัติเท่านั้น สวิตช์ที่เริ่มโดยระบบปฏิบัติการ สวิตช์เครือข่ายที่เริ่มต้นโดยผู้ใช้จะใช้สวิตช์เดิม ขั้นตอน "หยุดพักก่อน" ที่เครือข่ายก่อนหน้าถูกตัดการเชื่อมต่อโดยสมบูรณ์ ก่อนที่จะเชื่อมต่อเครือข่ายใหม่ ในบางกรณี ฟิลด์ จะมีการใช้ขั้นตอน "หยุดพักก่อนสร้าง" แม้ในสวิตช์อัตโนมัติที่เริ่มต้นโดย เช่น เมื่อสลับระหว่างเครือข่าย 2 เครือข่าย ทั้ง 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 โปรดดู API คำขอเครือข่าย Wi-Fi สำหรับการเชื่อมต่อแบบเพียร์ทูเพียร์
ตรวจสอบการเชื่อมต่ออินเทอร์เน็ตเฉพาะในตัวเครื่องและการเชื่อมต่ออินเทอร์เน็ต
ในการตรวจสอบฟังก์ชันนี้ ให้ใช้
การทดสอบ 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 ขึ้นไป การเชื่อมต่อพร้อมกัน หลายเครือข่ายที่มีการเชื่อมต่ออินเทอร์เน็ต ทำให้อุปกรณ์ เชื่อมต่อเครือข่าย (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 เดียวกันอยู่
ฟีเจอร์ที่สำคัญต้องทำงานแบบทีละอินเทอร์เฟซและต้อง ที่พร้อมใช้งานในอินเทอร์เฟซหลัก รายการการตรวจสอบที่สำคัญมีดังนี้ ได้แก่
ต้องมีการรองรับโรมมิ่งในอินเทอร์เฟซหลัก (ตั้งค่าโดยใช้
IWifiChip.setMultiStaPrimaryConnection()
) หากรองรับการโรมมิ่งใน อินเทอร์เฟซทั้งสองแบบ การตัดสินใจเกี่ยวกับการเชื่อมต่อแบบใดแบบหนึ่ง ต้องไม่กระทบกับ การเชื่อมต่อพร้อมกันครั้งที่สอง ตัวอย่างเช่น หนึ่งอินเทอร์เฟซต้องไม่โรมมิ่ง กับ 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
: ระบุ การเชื่อมต่ออินเทอร์เน็ตพร้อมกันเท่านั้นและการเชื่อมต่ออินเทอร์เน็ตหรือพร้อมกัน และจำกัดการเชื่อมต่ออินเทอร์เน็ต คุณภาพของทั้ง การเชื่อมต่อที่จำเป็นอย่างเท่าเทียมกัน
เนื่องจาก STA แบบ 2 ชุดพร้อมกันอาจนำไปสู่โหมด 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%