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

Android 11 में, आपके ऐप्लिकेशन में 5G की सुविधा काम करती है. इस विषय में, 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() का इस्तेमाल करके नेटवर्क कॉलबैक के लिए रजिस्टर करें. NetworkCapabilities में हुए बदलावों का पता लगाने के लिए, NetworkCallback में onCapabilitiesChanged() तरीके को बदलें.

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 Emulator में जोड़ी गई सुविधाओं का इस्तेमाल किया जा सकता है.

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

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

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

रिटर्न टाइप नेटवर्क
OVERRIDE_NETWORK_TYPE_LTE_ADVANCED_PRO ऐडवांस प्रो एलटीई (5Ge)
OVERRIDE_NETWORK_TYPE_NR_NSA 5G Sub-6 नेटवर्क के लिए, NR (5G)
OVERRIDE_NETWORK_TYPE_NR_NSA_MMWAVE 5G मि॰मी॰ वेव नेटवर्क के लिए (5G+/5G UW)

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

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

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

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