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

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

5G के लिए बनाना

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

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

5G की सुविधा

Android 11 में, ये बदलाव और सुधार किए गए हैं:

डेटा के इस्तेमाल के लिए शुल्क लगने की जानकारी देखना

The 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 वीडियो) दिखाया जा सकता है, लॉग अपलोड किए जा सकते हैं, फ़ाइलों का बैकअप लिया जा सकता है, और कॉन्टेंट को पहले से डाउनलोड किया जा सकता है.

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

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

में बदलाव होने पर सूचना पाने के लिए, ConnectivityManager.registerDefaultNetworkCallback() का इस्तेमाल करके, नेटवर्क कॉलबैक रजिस्टर करें.NetworkCapabilities अपने 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 कनेक्शन का पता लगाने की सुविधा की जांच करने के लिए, Android SDK एम्युलेटर में जोड़ी गई सुविधाओं का इस्तेमाल किया जा सकता है.

5G कनेक्शन का पता लगाना

यह पता लगाने के लिए कि उपयोगकर्ता के पास 5G नेटवर्क कनेक्शन है या नहीं, TelephonyManager.listen() को कॉल करें. इसके लिए, LISTEN_DISPLAY_INFO_CHANGED पास करें. डिस्प्ले के मकसद से इस्तेमाल किए गए नेटवर्क का टाइप पता करने के लिए, onDisplayInfoChanged() तरीके को बदलें. एक अपवाद यह है कि अगर सेवा देने वाली कंपनी, अपने मि॰मी॰ वेव नेटवर्क के लिए 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 के साथ काम किया जा सके.

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