नेटवर्क चुनना

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

नेटवर्क चुनने का व्यवहार

इस सेक्शन में, डिवाइसों के लिए नेटवर्क चुनने के तरीके के बारे में बताया गया है Android 12 या इसके बाद के वर्शन और Android पर चलने वाले डिवाइसों के लिए 11 और उससे कम.

Android 12

Android 12 या उसके बाद के वर्शन वाले डिवाइसों के लिए, Android यह NetworkScore क्लास का इस्तेमाल करें. इस कक्षा में कई फ़्लैग करने होंगे, जो नीति से जुड़े फ़ैसले लेने के लिए ज़रूरी हैं. हर फ़्लैग मतलब के हिसाब से एक ऐसे नेटवर्क की विशेषता है जो नेटवर्क च��नने के लिए ज़रूरी है.

नेटवर्क एजेंट (NetworkAgent) का इस्तेमाल करता है POLICY_TRANSPORT_PRIMARY फ़्लैग करें कि उस नेटवर्क को प्राथमिकता दी जाए, जब एक ही के एक से ज़्यादा नेटवर्क हों परिवहन मौजूद हैं. इसका एक सामान्य उदाहरण दो सिम वाला ऐसा डिवाइस है जिसमें सेटिंग में जाएं, ताकि उपयोगकर्ता यह चुन सके कि कौनसे सिम कार्ड इस्तेमाल करने हैं डिफ़ॉल्ट. दिए गए ट्रांसपोर्ट में, Android ऐसे नेटवर्क को प्राथमिकता देता है जिसमें POLICY_TRANSPORT_PRIMARY फ़्लैग के बिना नेटवर्क पर फ़्लैग करें.

नेटवर्क एजेंट, POLICY_EXITING फ़्लैग करके ऐसे नेटवर्क की पहचान करें, जो जल्द ही डिसकनेक्ट हो सकता है. सामान्य इसका उदाहरण तब है, जब उपयोगकर्ता के बाहर जाने के दौरान वाई-फ़ाई नेटवर्क की क्वालिटी खराब हो जाए नेटवर्क की सीमा तय कर सकते हैं. Android इस फ़्लैग वाले नेटवर्क के इस्तेमाल से बचने की कोशिश करता है, अगर: बिना इस फ़्लैग वाला नेटवर्क उपलब्ध है. हर व्यक्तिगत नेटवर्क एजेंट ये काम कर सकता है यह तय कर सकते हैं कि कब कोई नेटवर्क इतना कम हो जाता है कि उसे बाहर र��ने क��� ��िए ������ा ��ा सकता है.

NetworkScore क्लास, नेटवर्क एजेंट को यह एलान करने की भी अनुमति देती है कि नेटवर्क अप-टू-डेट रहना है. KEEP_CONNECTED_FOR_HANDOVER फ़्लैग करें और NetworkScore.Builder.setKeepConnectedReason तरीका. यह KEEP_CONNECTED_FOR_HANDOVER फ़्लैग उन संभावित नेटवर्क के लिए उपयोगी है जिनकी मदद से नेटवर्क एजेंट दूसरे वाई-फ़ाई STA से कनेक्ट करें. इसके लिए उस डिवाइस को मुख्य नेटवर्क बनाना ज़रूरी नहीं है. ऐसा होने तक नेटवर्क की परफ़ॉर्मेंस का आकलन किया जाता है. अगर कोई नेटवर्क एजेंट यह जानकारी नहीं देता है फ़्लैग, संभावित नेटवर्क इस समय बंद हो चुके हैं, क्योंकि एजेंट को नेटवर्क की परफ़ॉर्मेंस का आकलन करने का मौका मिलता है.

अगर दो नेटवर्क किसी दिए गए अनुरोध को पूरा कर सकते हों और वे नीति बिंदु के हिसाब से हों देखने के बाद, चयन उस नेटवर्क को प्राथमिकता देता है जो वर्तमान में अनुरोध. अगर कोई भी नेटवर्क अनुरोध को पूरा नहीं कर रहा है, तो वह कर सकते हैं. इस नेटवर्क को तब तक प्राथमिकता दी जाएगी, जब तक नीति फ़्लैग को नहीं बदला जाता.

नेटवर्क चुनने की सुविधा को लागू करने की सेटिंग कनेक्टिविटी का मॉड्यूल में शामिल हैं. नेटवर्क को चुनने की नीति का मकसद यहां दिया गया है: NetworkRanker क्लास और इसके हेल्पर क्लास हैं. इसका मतलब है कि डिवाइस बनाने वाली कंपनियां ये काम नहीं कर सकतीं नेटवर्क चुनने के कोड को सीधे कस्टमाइज़ करता है, लेकिन इसके बजाय इसे NetworkScore का इस्तेमाल, नेटवर्क के बारे में ज़रूरी जानकारी देने के लिए किया जाता है.

Android 11

Android 11 या इससे पहले के वर्शन वाले डिवाइसों के लिए, Android ��ेटवर्क चुनने का काम करता है नेटवर्क एजेंट को लागू करने से भेजे गए एक सरल पूर्णांक पर आधारित (NetworkAgent). हर अनुरोध के लिए, Android सबसे ज़्यादा अंकों वाला नेटवर्क चुनता है जो अनुरोध पूरा कर सके. अंकों वाला यह स्कोर, भेजे गए पूर्णांक से मिलकर बना होता है नेटवर्क एजेंट की ओर से दिए गए अतिरिक्त बोनस या जैसी स्थितियों की पुष्टि की जाएगी, जैसे कि नेटवर्क सत्यापित है या नहीं या नेटवर्क एक वीपीएन है. अलग-अलग नेटवर्क एजेंट, एक-दूसरे के साथ सिंक करते हैं नीति से जुड़े फ़ैसले लेने के लिए किया जा सकता है.

अगर दो नेटवर्क दिए गए अनुरोध को पूरा कर सकते हैं और उनका अंकों वाला स्कोर एक जैसा है, तो व्यवहार के बारे में नहीं बताया गया है.

NetworkScore क्लास

नेटवर्क चुनने की सुविधा का सेंट्रल क्लास है NetworkScore. इस क्लास में, उपलब्ध फ़्लैग के एपीआई और दस्तावेज़ शामिल होते हैं और setKeepConnectedReason तरीका.

NetworkScore क्लास को बिल्डर क्लास से बनाया जाना चाहिए और पास होना चाहिए तक NetworkAgent कंस्ट्रक्टर शुरू करने के बाद. इसका इस्तेमाल करके नेटवर्क स्कोर किसी भी समय अपडेट किए जा सकते हैं NetworkAgent#sendNetworkScore तरीका.

नेटवर्क एजेंट को लागू करने के उदाहरण

एओएसपी में, अलग-अलग नेटवर्क एजेंट को लागू करने के उदाहरण शामिल हैं. नीचे दिए गए यहां लागू करने के उदाहरण दिए गए हैं:

  • TelephonyNetworkAgent: मोबाइल नेटवर्क के लिए नीति के बारे में बताने के लिए, नेटवर्क स्कोर का इस्तेमाल किया जाता है
  • ClientModeImpl.WifiNetworkAgent: वाई-फ़ाई नेटवर्क के लिए नीति बताने के लिए, नेटवर्क स्कोर का इस्तेमाल करता है. यह लागू करने में, POLICY_EXITING फ़्लैग का इस्तेमाल करके नेटवर्क स्कोर.

Android 12 में अपग्रेड किए जा रहे डिवाइस

डिवाइस बनाने वाली कंपनियां, अपने डिवाइसों को Android 12 को अपने नेटवर्क एजेंट में बदलाव करना होगा NetworkScore क्लास का इस्तेमाल करने के लिए. इसमें इस्तेमाल किया गया लीगेसी पूर्णांक Android 11 या उससे पहले के वर्शन को NetworkScore में पास किया गया है, लेकिन इसका इस्तेमाल सिर्फ़ किया जा रहा है का इस्तेमाल करें. Android 12 में, डिवाइस बनाने वाली कंपनियों को NetworkScore फ़्लैग का इस्तेमाल करके ज़रूरत के मुताबिक बदलाव करने हैं. कनेक्टिविटी मेनलाइन मॉड्यूल इसके बाद, नेटवर्क को चुनने के बारे में फ़ैसला लेने के लिए फ़्लैग का इस्तेमाल करता है. डिवाइसों की सूची Android 11 या इससे पहले के वर्शन के लिए, कोड का इस्तेमाल करने वाली कंपनियां Android 12 में लागू करने पर बिल्ड में गड़बड़ियां हो सकती हैं क्योंकि लीगेसी पूर्णांक को अपडेट करने के तरीके Android 12.

आंतरिक URL का उपयोग करने वाले नेटवर्क एजेंट के लिए NetworkFactory क्लास के लिए, उन्हें NetworkScore ऑब्जेक्ट में अपना स्कोर फ़िल्टर दिखाना होगा उस नेटवर्क के सबसे मज़बूत स्कोर का प्रतिनिधित्व करता है जो फ़ैक्ट्री बना सकता है. यह है क्योंकि Android 12 में सिर्फ़ NetworkFactory क्लास NetworkFactory के लिए तय किए गए स्कोर फ़िल्टर से मेल खाने वाले अनुरोधों को पास करें Android 11 और इससे पहले के वर्शन वाले सभी अनुरोधों से अलग है.

हमारा सुझाव है कि आप फ़िल्टर पास करें, ताकि इसे आसानी से लागू किया जा सके और बैटरी भी कम खर्च हो. कि सभी अनुरोध NetworkFactory को नहीं भेजे जाते हैं. हालांकि, अगर आपके कस्टम लागू करने के लिए आवश्यक है कि सभी अनुरोध NetworkFactory को भेजे जाएं, आप रजिस्टर NetworkFactory.registerIgnoringScore सामान्य के बजाय NetworkFactory.register तरीका. अगर इस तरीके का इस्तेमाल किया जा रहा है, तो हमारा सुझाव है कि आप वह स्कोर फ़िल्टर पास करें जो यह सबसे सटीक स्कोर दिखाता है कि फ़ैक्ट्री बना सकता है बैटरी सेव करने के लिए उन अनुरोधों का आकलन न करें जिन्हें फ़ैक्ट्री पूरा नहीं कर सकता.

पुष्टि करें

किसी Android डिवाइस पर नेटवर्क चुनने के व्यवहार की पुष्टि करने के लिए, नीचे दिए गए टेस्ट के मुताबिक:

गलत तरीके से लागू करने पर, वेबसाइट या ऐप्लिकेशन को अनचाहे नेटवर्क वापस मिल सकते हैं जो ऐप्लिकेशन इस्तेमाल करने पर असर डालते हैं NetworkCallback, इसमें डिवाइस के डिफ़ॉल्ट नेटवर्क (सिस्टम का नेटवर्क) को चुनना शामिल है इस ईमेल पते के साथ नेटवर्क कॉलबैक का इस्तेमाल करने पर, इस ऐप्लिकेशन को सूचना भेजता है ConnectivityManager.registerDefaultNetworkCallback).

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