Android 11 เพิ่มฟังก์ชันการทำงานเพื่อรองรับ 5G ในแอปของคุณ หัวข้อนี้ครอบคลุมฟังก์ชันการทำงานและภาพรวมของวิธีที่การเพิ่มฟังก์ชันการทำงานเฉพาะ 5G ลงในแอปจะช่วยปรับปรุงประสบการณ์ของผู้ใช้ได้
สร้างขึ้นสำหรับ 5G
เมื่อตัดสินใจว่าจะใช้ 5G อย่างไร ให้พิจารณาประเภทประสบการณ์ที่คุณพยายามสร้าง ตัวอย่างวิธีที่ 5G สามารถปรับปรุงแอปของคุณได้มีดังนี้
- ทำให้ประสบการณ์การใช้งานในปัจจุบันเร็วขึ้นและดีขึ้นโดยอัตโนมัติเนื่องจากความเร็วและเวลาในการตอบสนองที่ได้รับการปรับปรุงของ 5G
- ยกระดับประสบการณ์ของผู้ใช้ เช่น การแสดงวิดีโอ 4K หรือการดาวน์โหลดเนื้อหาเกมที่มีความละเอียดสูงขึ้น
- หลังจากยืนยันว่าปริมาณการใช้อินเทอร์เน็ตที่เพิ่มขึ้นจะไม่ทำให้ผู้ใช้เสียค่าใช้จ่าย ให้รวมประสบการณ์ที่ปกติแล้วจะให้บริการผ่าน Wi-Fi เท่านั้น เช่น การดาวน์โหลดเนื้อหาเชิงรุกซึ่งโดยปกติแล้วจะสงวนไว้สำหรับ Wi-Fi ที่ไม่มีการวัดปริมาณอินเทอร์เน็ต
- มอบประสบการณ์การใช้งานเฉพาะสำหรับ 5G ที่ทำงานได้ด้วยความเร็วสูงและเวลาในการตอบสนองต่ำเท่านั้น
ฟังก์ชันการทำงานของ 5G
Android 11 มีการเปลี่ยนแปลงและการปรับปรุงฟังก์ชันการทำงานต่อไปนี้
ตรวจสอบการวัดปริมาณการใช้งาน
NET_CAPABILITY_TEMPORARILY_NOT_METERED
เป็นความสามารถที่เพิ่มเข้ามาใน Android 11 ซึ่งจะบอกคุณว่าเครือข่ายที่คุณใช้อยู่เป็นแบบไม่มีการวัดปริมาณอินเทอร์เน็ตหรือไม่ โดยอิงตามข้อมูลที่ผู้ให้บริการเครือข่ายมือถือระบุ
แฟล็กใหม่จะใช้ร่วมกับ NET_CAPABILITY_NOT_METERED
แฟล็กที่มีอยู่จะระบุว่าเครือข่ายไม่มีการวัดปริมาณอินเทอร์เน็ตเสมอหรือไม่ และใช้ได้กับการเชื่อมต่อทั้ง Wi-Fi และการเชื่อมต่อเครือข่ายมือถือ
ความแตกต่างระหว่างแฟล็กทั้งสองคือ NET_CAPABILITY_TEMPORARILY_NOT_METERED อาจเปลี่ยนแปลงโดยที่ประเภทเครือข่ายไม่เปลี่ยนแปลง แอปที่กำหนดเป้าหมายเป็น Android 11 จะใช้แฟล็ก NET_CAPABILITY_TEMPORARILY_NOT_METERED ได้ ในอุปกรณ์ที่ใช้ Android 9 และต่ำกว่า ระบบปฏิบัติการจะไม่รายงานเกี่ยวกับแฟล็ก สำหรับแอปที่ทำงานบน Android 10 แฟล็กนี้อาจพร้อมใช้งาน ทั้งนี้ขึ้นอยู่กับอุปกรณ์ที่แอปทำงานอยู่
เมื่อพิจารณาแล้วว่าเครือข่ายปัจจุบันไม่มีการวัดปริมาณอินเทอร์เน็ตชั่วคราวหรือถาวร คุณสามารถแสดงเนื้อหาที่มีความละเอียดสูงขึ้น (เช่น วิดีโอ 4K) อัปโหลดบันทึก สำรองไฟล์ และดาวน์โหลดเนื้อหาในเชิงรุกได้
ส่วนต่อไปนี้จะอธิบายขั้นตอนในการเพิ่มการตรวจสอบการวัดปริมาณลงในแอป
ลงทะเบียน Callback ของเครือข่าย
ลงทะเบียนเพื่อรับการติดต่อกลับจากเครือข่ายโดยใช้
ConnectivityManager.registerDefaultNetworkCallback()
เพื่อฟังเมื่อ NetworkCapabilities มีการเปลี่ยนแปลง คุณสามารถตรวจจับการเปลี่ยนแปลงใน NetworkCapabilities ได้โดยลบล้างเมธอด onCapabilitiesChanged() ใน NetworkCallback
registerDefaultNetworkCallback() จะทำให้ Callback ที่ลงทะเบียนไว้ทริกเกอร์ทันทีเมื่อลงทะเบียน ซึ่งจะให้ข้อมูลเกี่ยวกับสถานะปัจจุบันแก่แอป Callback ในอนาคตมีความสำคัญต่อแอปในการดำเนินการที่เหมาะสมเมื่อสถานะเปลี่ยนจากไม่มีการวัดปริมาณอินเทอร์เน็ตเป็นมีการวัดปริมาณอินเทอร์เน็ต หรือในทางกลับกัน
ตรวจสอบการวัดปริมาณอินเทอร์เน็ต
ใช้ออบเจ็กต์ NetworkCapabilites ที่คุณได้รับในการเรียกกลับของเครือข่ายเพื่อตรวจสอบเอาต์พุตของโค้ดต่อไปนี้
Kotlin
NetworkCapabilities.hasCapability(NET_CAPABILITY_NOT_METERED) || NetworkCapabilities.hasCapability(NET_CAPABILITY_TEMPORARILY_NOT_METERED)
Java
NetworkCapabilities.hasCapability(NET_CAPABILITY_NOT_METERED) || NetworkCapabilities.hasCapability(NET_CAPABILITY_TEMPORARILY_NOT_METERED)
หากค่าเป็น "จริง" คุณจะถือว่าเครือข่ายไม่มีการวัดปริมาณอินเทอร์เน็ตได้
ข้อพิจารณาเพิ่มเติม
โปรดคำนึงถึงสิ่งต่อไปนี้เมื่อใช้ฟังก์ชันการทำงานนี้
การใช้แฟล็ก
NET_CAPABILITY_TEMPORARILY_NOT_METEREDกำหนดให้คุณต้องคอมไพล์แอปกับ Android 11 SDKความสามารถ
NET_CAPABILITY_NOT_METEREDจะอยู่ในเครือข่ายอย่างถาวร เครือข่ายที่มีความสามารถนี้จะยกเลิกการเชื่อมต่อโดยอัตโนมัติหากสูญเสียความสามารถดังกล่าว (กลายเป็นแบบวัดปริมาณข้อมูล)ในทางตรงกันข้าม
NET_CAPABILITY_TEMPORARILY_NOT_METEREDอาจเปลี่ยนแปลงในเครือข่ายโดยไม่ต้องยกเลิกการเชื่อมต่อ ดังนั้น แอปจึงต้องรอฟัง CallbackonCapabilitiesChanged()เพื่อจัดการเมื่อเครือข่ายกลับสู่สถานะแบบวัดปริมาณข้อมูล (สูญเสียความสามารถNET_CAPABILITY_TEMPORARILY_NOT_METERED)เครือข่ายจะมีทั้ง
NET_CAPABILITY_NOT_METEREDและNET_CAPABILITY_TEMPORARILY_NOT_METEREDพร้อมกันไม่ได้
การตรวจจับ 5G
ตั้งแต่ Android 11 เป็นต้นไป คุณจะตรวจหาได้ว่าอุปกรณ์เชื่อมต่อกับเครือข่าย 5G หรือไม่โดยใช้การเรียก API ที่อิงตาม Callback คุณสามารถตรวจสอบได้ว่าการเชื่อมต่อเป็นเครือข่าย 5G NR (สแตนด์อโลน) หรือ NSA (ไม่ใช่สแตนด์อโลน)
ตัวอย่างการใช้งานการเรียก API นี้ ได้แก่
การแสดงแบรนด์ 5G ในแอปเพื่อไฮไลต์ว่าคุณกำลังมอบประสบการณ์การใช้งาน 5G ที่ไม่เหมือนใคร
เปิดใช้งานประสบการณ์การใช้งาน 5G ที่ไม่เหมือนใครในแอปเฉพาะเมื่อใช้เครือข่าย 5G คุณควรใช้การตรวจสอบสถานะนี้ร่วมกับการตรวจสอบการวัดปริมาณอินเทอร์เน็ต
ติดตามการเชื่อมต่อ 5G เพื่อวัตถุประสงค์ด้านการวิเคราะห์
หากต้องการทดสอบการตรวจหา 5G โดยไม่มีอุปกรณ์ 5G คุณสามารถใช้ฟีเจอร์ที่เพิ่มลงในโปรแกรมจำลอง Android SDK ได้
ตรวจจับ 5G
เรียกใช้ TelephonyManager.listen() โดยส่ง LISTEN_DISPLAY_INFO_CHANGED เพื่อตรวจสอบว่าผู้ใช้มีการเชื่อมต่อเครือข่าย 5G หรือไม่ ลบล้างเมธอด onDisplayInfoChanged() เพื่อกำหนดประเภทเครือข่ายที่ใช้เพื่อวัตถุประสงค์ในการแสดงผล ข้อยกเว้นประการหนึ่งคือหากผู้ให้บริการเลือกที่จะแสดง 5G เป็น RAT สำหรับเครือข่าย mmWave ระบบจะแสดงผลเป็น OVERRIDE_NETWORK_TYPE_NR_NSA
ตารางต่อไปนี้แสดงเครือข่ายที่สอดคล้องกับค่าต่างๆ
| ประเภทการแสดงผล | เครือข่าย |
|---|---|
OVERRIDE_NETWORK_TYPE_LTE_ADVANCED_PRO |
Advanced pro LTE (5Ge) |
OVERRIDE_NETWORK_TYPE_NR_NSA |
NR (5G) สำหรับเครือข่าย 5G Sub-6 |
OVERRIDE_NETWORK_TYPE_NR_NSA_MMWAVE |
(5G+/5G UW) สำหรับเครือข่าย 5G mmWave |
การประมาณค่าแบนด์วิดท์
การประมาณแบนด์วิดท์จะใช้ออบเจ็กต์ NetworkCapabilities ที่คุณใช้เมื่อพิจารณาการวัดปริมาณอินเทอร์เน็ต คุณสามารถดูค่าประมาณแบนด์วิดท์ได้โดยใช้ออบเจ็กต์ดังกล่าว
ความน่าเชื่อถือและความแม่นยำของวิธีการประมาณแบนด์วิดท์ getLinkDownstreamBandwidthKbps() และ getLinkUpstreamBandwidthKbps() ได้รับการปรับปรุงใน Android 11 เนื่องจากการอัปเกรดการรองรับเฟรมเวิร์กและการแก้ไขข้อบกพร่องของแพลตฟอร์ม/โมเด็มเพื่อรองรับ 5G
ค่าเริ่มต้นของแบนด์วิดท์เป็นเพียงคำแนะนำเมื่อเริ่มต้นแอปเท่านั้น ซึ่งจะช่วยคุณในสถานการณ์ "เริ่มต้นเมื่อไม่มีการใช้งาน" แอปควรวัดสิ่งที่เห็นเมื่อผู้ใช้เริ่มมีส่วนร่วมกับแอปและปรับลักษณะการสตรีมแบบไดนามิก เช่น คุณอาจเลือกความละเอียดของวิดีโอที่จะแสดงตามการประมาณแบนด์วิดท์เมื่อเริ่มต้นระบบ ตรวจสอบค่าประมาณต่อไปเมื่อผู้ใช้ใช้แอป เมื่อประเภทและความแรงของการเชื่อมต่อเปลี่ยนแปลง ให้ปรับลักษณะการทำงานของแอปตามความเหมาะสม