अपने ऐप्लिकेशन में 5G की सुविधाएं जोड़ना

Android 11 में, ऐप्लिकेशन में 5G की सुविधा इस्तेमाल करने की सुविधा जोड़ी गई है. इस विषय में, फ़ंक्शन के बारे में बताया गया है. साथ ही, यह जानकारी भी दी गई है कि अपने ऐप्लिकेशन में 5G के हिसाब से फ़ंक्शन जोड़ने से, उपयोगकर्ता अनुभव को कैसे बेहतर बनाया जा सकता है.

5G के लिए बनाए गए ऐप्लिकेशन

5G का इस्तेमाल कैसे करना है, यह तय करते समय इस बात पर ध्यान दें कि आपको उपयोगकर्ताओं को किस तरह का अनुभव देना है. 5G की मदद से, आपके ऐप्लिकेशन को बेहतर बनाने के कुछ तरीके यहां दिए गए हैं:

  • 5G की स्पीड और इंतज़ार के समय में हुए सुधारों की वजह से, मौजूदा अनुभव अपने-आप तेज़ और बेहतर हो जाते हैं.
  • उपयोगकर्ता अनुभव को बेहतर बनाएं. जैसे, 4K वीडियो दिखाकर या ज़्यादा रिज़ॉल्यूशन वाली गेम ऐसेट डाउनलोड करके.
  • यह पक्का करने के बाद कि ज़्यादा डेटा खर्च करने पर उपयोगकर्ता को कोई शुल्क नहीं देना होगा, आम तौर पर सिर्फ़ वाई-फ़ाई पर उपलब्ध अनुभवों को शामिल करें. जैसे, ऐसा कॉन्टेंट डाउनलोड करना जो आम तौर पर बिना शुल्क वाले वाई-फ़ाई के लिए उपलब्ध होता है.
  • 5G के लिए ऐसे अनुभव उपलब्ध कराएं जो सिर्फ़ तेज़ स्पीड और कम इंतज़ार के साथ काम करते हों.

5G की सुविधा

Android 11 में, फ़ंक्शन में ये बदलाव और बेहतरियां की गई हैं:

मेज़रमेंट की सुविधा चालू है या नहीं, यह देखना

NET_CAPABILITY_TEMPORARILY_NOT_METERED, Android 11 में जोड़ी गई एक सुविधा है. इससे आपको यह पता चलता है कि मोबाइल और इंटरनेट सेवा देने वाली कंपनियों की दी गई जानकारी के आधार पर, आपके इस्तेमाल किए जा रहे नेटवर्क पर डेटा इस्तेमाल करने की कोई सीमा है या नहीं.

नए फ़्लैग का इस्तेमाल, NET_CAPABILITY_NOT_METERED के साथ किया जाता है. मौजूदा फ़्लैग से पता चलता है कि कोई नेटवर्क हमेशा बिना मेज़र किए इस्तेमाल किया जा सकता है या नहीं. यह फ़्लैग, वाई-फ़ाई और मोबाइल डेटा, दोनों पर लागू होता है.

दोनों फ़्लैग के बीच का अंतर यह है कि नेटवर्क टाइप बदले बिना भी NET_CAPABILITY_TEMPORARILY_NOT_METERED बदल सकता है. Android 11 को टारगेट करने वाले ऐप्लिकेशन, NET_CAPABILITY_TEMPORARILY_NOT_METERED फ़्लैग का इस्तेमाल कर सकते हैं. Android 9 और इससे पहले के वर्शन पर चल रहे डिवाइसों पर, ओएस इस फ़्लैग की जानकारी नहीं देगा. Android 10 पर काम करने वाले ऐप्लिकेशन के लिए, यह फ़्लैग उपलब्ध हो सकता है. हालांकि, यह इस बात पर निर्भर करता है कि ऐप्लिकेशन किस डिवाइस पर काम कर रहा है.

यह पता चलने के बाद कि मौजूदा नेटवर्क पर कुछ समय के लिए या हमेशा के लिए डेटा इस्तेमाल करने की कोई सीमा नहीं है, ज़्यादा रिज़ॉल्यूशन वाला कॉन्टेंट (जैसे, 4K वीडियो) दिखाया जा सकता है. साथ ही, लॉग अपलोड किए जा सकते हैं, फ़ाइलों का बैक अप लिया जा सकता है, और कॉन्टेंट को पहले से डाउनलोड किया जा सकता है.

नीचे दिए गए सेक्शन में, अपने ऐप्लिकेशन में मेज़रमेंट की सुविधा जोड़ने का तरीका बताया गया है.

नेटवर्क कॉलबैक रजिस्टर करना

NetworkCapabilities में बदलाव होने पर सूचना पाने के लिए, ConnectivityManager.registerDefaultNetworkCallback() का इस्तेमाल करके नेटवर्क कॉलबैक के लिए रजिस्टर करें. NetworkCallback में onCapabilitiesChanged() वाले तरीके को बदलकर, NetworkCapabilities में हुए बदलावों का पता लगाया जा सकता है.

registerDefaultNetworkCallback() की मदद से, रजिस्टर किए गए कॉलबैक फ़ंक्शन को रजिस्टर होने के तुरंत बाद ट्रिगर किया जाता है. इससे ऐप्लिकेशन को मौजूदा स्थिति की जानकारी मिलती है. आने वाले समय में होने वाले कॉलबैक, ऐप्लिकेशन के लिए ज़रूरी हैं, ताकि वे सही कार्रवाई कर सकें. ऐसा तब होता है, जब ऐप्लिकेशन की स्थिति, बिना मेज़र किए जाने से मेज़र किए जाने की स्थिति में बदलती है या मेज़र किए जाने की स्थिति से बिना मेज़र किए जाने की स्थिति में बदलती है.

मेज़र की गई डेटा ट्रैफ़िक की जांच करना

यहां दिए गए कोड के आउटपुट की जांच करने के लिए, नेटवर्क कॉलबैक में मिलने वाले 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 किसी नेटवर्क से डिसकनेक्ट किए बिना बदल सकता है. इसलिए, ऐप्लिकेशन को onCapabilitiesChanged() कॉलबैक को सुनना चाहिए, ताकि नेटवर्क के मीटर किए जाने की स्थिति में वापस आने पर (NET_CAPABILITY_TEMPORARILY_NOT_METERED की सुविधा बंद होने पर) उसे मैनेज किया जा सके.

  • किसी नेटवर्क में एक साथ NET_CAPABILITY_NOT_METERED और NET_CAPABILITY_TEMPORARILY_NOT_METERED, दोनों नहीं हो सकते.

5G नेटवर्क की पहचान करना

Android 11 में, कॉलबैक पर आधारित एपीआई कॉल का इस्तेमाल करके, यह पता लगाया जा सकता है कि डिवाइस 5G नेटवर्क से कनेक्ट है या नहीं. यह देखा जा सकता है कि कनेक्शन, 5G NR (स्टैंडअलोन) या NSA (नॉन-स्टैंडअलोन) नेटवर्क है या नहीं.

इस एपीआई कॉल के कुछ इस्तेमालों में ये शामिल हो सकते हैं:

  • अपने ऐप्लिकेशन में 5G ब्रैंडिंग दिखाना, ताकि यह हाइलाइट किया जा सके कि आपका ऐप्लिकेशन 5G का यूनीक अनुभव देता है.

  • सिर्फ़ 5G नेटवर्क का इस्तेमाल करने पर, ऐप्लिकेशन में 5G का बेहतर अनुभव पाने की सुविधा चालू करना. आपको इस स्टेटस की जांच को मेज़र किए जाने की जांच के साथ जोड़ना चाहिए.

  • आंकड़े जुटाने के लिए, 5G कनेक्शन का ट्रैक रखना.

5G डिवाइस के बिना, 5G नेटवर्क की पहचान करने की सुविधा की जांच करने के लिए, Android SDK इम्युलेटर में जोड़ी गई सुविधाओं का इस्तेमाल किया जा सकता है.

5G का पता लगाना

उपयोगकर्ता के पास 5G नेटवर्क कनेक्शन है या नहीं, यह पता लगाने के लिए, TelephonyManager.listen() को कॉल करें और LISTEN_DISPLAY_INFO_CHANGED को पास करें. डिसप्ले के लिए इस्तेमाल किए जाने वाले नेटवर्क टाइप का पता लगाने के लिए, onDisplayInfoChanged() के तरीके को बदलें. हालांकि, एक अपवाद है. अगर मोबाइल और इंटरनेट सेवा देने वाली कंपनी, अपने एमएम वेव नेटवर्क के लिए आरएटी के तौर पर 5G दिखाने का विकल्प चुनती है, तो OVERRIDE_NETWORK_TYPE_NR_NSA दिखाया जाता है.

नीचे दी गई टेबल में, वैल्यू से जुड़े नेटवर्क दिखाए गए हैं:

सामान लौटाने का तरीका नेटवर्क
OVERRIDE_NETWORK_TYPE_LTE_ADVANCED_PRO Advanced pro LTE (5Ge)
OVERRIDE_NETWORK_TYPE_NR_NSA 5G Sub-6 नेटवर्क के लिए एनआर (5G)
OVERRIDE_NETWORK_TYPE_NR_NSA_MMWAVE 5G मि॰मी॰ वेव नेटवर्क के लिए (5G+/5G UW)

बैंडविथ का अनुमान

बैंडविड्थ का अनुमान लगाने के लिए, उस NetworkCapabilities ऑब्जेक्ट का इस्तेमाल किया जाता है जिसका इस्तेमाल, मेज़र किए जाने की स्थिति तय करते समय किया जाता है. उस ऑब्जेक्ट का इस्तेमाल करके, बैंडविड्थ के अनुमान देखे जा सकते हैं.

Android 11 में, बैंडविड्थ का अनुमान लगाने के तरीकों getLinkDownstreamBandwidthKbps() और getLinkUpstreamBandwidthKbps() पर भरोसा करना और उन्हें सटीक बनाना आसान हो गया है. ऐसा, फ़्रेमवर्क के लिए किए गए अपग्रेड और 5G के लिए प्लैटफ़ॉर्म/मॉडेम की गड़बड़ियों को ठीक करने की वजह से हुआ है.

डिफ़ॉल्ट बैंडविड्थ से, सिर्फ़ ऐप्लिकेशन के स्टार्ट-अप के बारे में जानकारी मिलती है. इससे आपको "इंजन बंद होने पर शुरू होने की सुविधा" से जुड़ी समस्या को हल करने में मदद मिलेगी. जब आपके उपयोगकर्ता आपके ऐप्लिकेशन का इस्तेमाल करना शुरू कर दें, तब आपके ऐप्लिकेशन को यह मेज़र करना चाहिए कि उसे क्या दिख रहा है. साथ ही, स्ट्रीमिंग के व्यवहार में डाइनैमिक तौर पर बदलाव करना चाहिए. उदाहरण के लिए, स्टार्टअप के समय बैंडविड्थ के अनुमान के आधार पर, वीडियो का रिज़ॉल्यूशन चुना जा सकता है. जब आपके उपयोगकर्ता ऐप्लिकेशन का इस्तेमाल करते हैं, तब अनुमान देखना जारी रखें. जैसे-जैसे उनके कनेक्शन का टाइप और गति बदलती है, वैसे-वैसे अपने ऐप्लिकेशन के व्यवहार में बदलाव करें.