เพิ่มความสามารถ 5G ลงในแอป

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 อาจเปลี่ยนแปลงในเครือข่ายโดยไม่ต้องยกเลิกการเชื่อมต่อ ดังนั้น แอปจึงต้องรอฟัง Callback onCapabilitiesChanged() เพื่อจัดการเมื่อเครือข่ายกลับสู่สถานะแบบวัดปริมาณข้อมูล (สูญเสียความสามารถ 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

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