अपने ऐप्लिकेशन में 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() का इस्तेमाल करके नेटवर्क कॉलबैक के लिए रजिस्टर करें. 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 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 नेटवर्क के लिए एनआर (5G)
OVERRIDE_NETWORK_TYPE_NR_NSA_MMWAVE 5G मि॰मी॰ वेव नेटवर्क के लिए (5G+/5G UW)

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

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

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

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