वाई-फाई एसटीए/एसटीए समवर्ती

एंड्रॉइड 12 वाई-फाई एसटीए / एसटीए समवर्ती पेश करता है, जो उपकरणों को एक साथ दो वाई-फाई नेटवर्क से कनेक्ट करने की अनुमति देता है। यह वैकल्पिक सुविधा निम्नलिखित कार्यों को सक्षम करती है।

  • ब्रेक-प्री-ब्रेक : डिवाइस मौजूदा कनेक्शन को तोड़ने से पहले एक नए वाई-फाई नेटवर्क से कनेक्शन बनाता है। यह वाई-फाई नेटवर्क के बीच स्विच करने पर आसान ट्रांज़िशन में परिणत होता है
  • समवर्ती स्थानीय-केवल और इंटरनेट कनेक्शन : डिवाइस डिवाइस के प्राथमिक इंटरनेट-प्रदान करने वाले कनेक्शन को बाधित किए बिना केवल स्थानीय नेटवर्क से कनेक्ट होता है।
  • समवर्ती प्रतिबंधित और इंटरनेट कनेक्शन : डिवाइस डिवाइस के प्राथमिक इंटरनेट-प्रदान करने वाले कनेक्शन को बाधित किए बिना एक प्रतिबंधित नेटवर्क (केवल कुछ विशेषाधिकार प्राप्त ऐप्स के लिए उपलब्ध) से कनेक्ट होता है।
  • (एंड्रॉइड 13 या उच्चतर) इंटरनेट कनेक्शन के साथ समवर्ती कई नेटवर्क : डिवाइस दो नेटवर्क से जुड़ता है, जो सभी ऐप्स के लिए अप्रतिबंधित और उपलब्ध हैं, और इंटरनेट कनेक्टिविटी प्रदान करते हैं।

यह पृष्ठ डिवाइस के व्यवहार का वर्णन करता है जब यह सुविधा सक्षम होती है और डिवाइस निर्माताओं और विक्रेताओं के लिए कार्यान्वयन विवरण।

कार्यान्वयन

वाई-फाई एसटीए/एसटीए संगामिति को लागू करने के लिए उपकरणों को निम्नलिखित का समर्थन करना चाहिए:

  • वाई-फाई चिप या फर्मवेयर को दो समवर्ती एसटीए कनेक्शन का समर्थन करना चाहिए। फर्मवेयर को दोनों कनेक्शनों के लिए सभी चैनल और बैंड संयोजनों का समर्थन करना चाहिए। प्रदर्शन के मुद्दों से बचने के लिए, हम 2x2+2x2 डीबीएस सक्षम वाई-फाई चिप का उपयोग करने की सलाह देते हैं।

  • डिवाइस को विक्रेता एचएएल संस्करण 1.5 . में निम्नलिखित एपीआई का समर्थन करना चाहिए

    • IWifiChip.setMultiStaPrimaryConnection()
    • IWifiChip.setMultiStaUseCase()
  • एचएएल वाई-फाई इंटरफेस संयोजन में दो समवर्ती एसटीए इंटरफेस होने चाहिए जो कि [{STA} <= 2, ...] जैसे विनिर्देश प्रारूप का उपयोग करके उजागर हों। अधिक जानकारी के लिए, वाई-फाई बहु-इंटरफ़ेस समवर्ती देखें।

यदि वे पूर्व-आवश्यकताएं पूरी होती हैं, तो निम्न कार्य करके वाई-फाई एसटीए/एसटीए समवर्ती लागू करें:

  1. रनटाइम संसाधन ओवरले (डिफ़ॉल्ट रूप से अक्षम) का उपयोग करके व्यक्तिगत रूप से एक या अधिक फ़ंक्शन सक्षम करें।

    • मेक-पहले-ब्रेक : config_wifiMultiStaNetworkSwitchingMakeBeforeBreakEnabled
    • समवर्ती स्थानीय-केवल और इंटरनेट कनेक्शन : config_wifiMultiStaLocalOnlyConcurrencyEnabled
    • समवर्ती प्रतिबंधित और इंटरनेट कनेक्शन : config_wifiMultiStaRestrictedConcurrencyEnabled
    • इंटरनेट कनेक्शन के साथ समवर्ती एकाधिक नेटवर्क : config_wifiMultiStaMultiInternetConcurrencyEnabled
  2. नीचे उनके संबंधित अनुभागों में वर्णित प्रत्येक कार्यान्वयन को मान्य करें।

वाई-फाई एसटीए/एसटीए समरूपता का बेहतर समर्थन करने के लिए, हम अनुशंसा करते हैं कि OEM-अनुकूलित ढांचे और ऐप्स WifiManager#getConnectionInfo() के बजाय NetworkCallback# WifiInfo NetworkCallback#onCapabilitiesChanged() विधि का उपयोग करें, जो केवल एक नेटवर्क के लिए WifiManager#getConnectionInfo() लौटाता है और Android 12 में बहिष्कृत किया गया था। अधिक जानकारी के लिए, पीयर-टू-पीयर कनेक्टिविटी के लिए वाई-फाई नेटवर्क अनुरोध एपीआई देखें।

मेक-पहले-ब्रेक

मेक-बिफोर-ब्रेक फ़ंक्शन मौजूदा वाई-फाई नेटवर्क कनेक्शन को बनाए रखते हुए उपकरणों को एक नए वाई-फाई नेटवर्क से कनेक्ट करने की अनुमति देता है, पुराने नेटवर्क से केवल तभी डिस्कनेक्ट होता है जब यह नए वाई-फाई नेटवर्क से सफलतापूर्वक कनेक्ट होता है और इंटरनेट का उपयोग होता है।

ब्रेक-प्री-ब्रेक उपयोग का मामला एंड्रॉइड 11 या उससे कम में निम्नलिखित समस्याओं का समाधान करता है, जहां डिवाइस को नए नेटवर्क (ब्रेक-बिफोर-मेक) से कनेक्ट करने से पहले मौजूदा वाई-फाई नेटवर्क से डिस्कनेक्ट करना होगा।

  • किसी नए नेटवर्क से कनेक्ट होने पर, डिवाइस को पता चल सकता है कि इसमें गलत वाई-फाई पासवर्ड सहेजा गया है या नए नेटवर्क में इंटरनेट का उपयोग नहीं है। यह डिवाइस को पुराने नेटवर्क पर वापस स्विच करने के लिए मजबूर करता है, जिससे वाई-फाई कनेक्टिविटी के बिना काफी समय लगता है।

  • पुराना नेटवर्क अचानक से डिस्कनेक्ट हो जाता है, जिसका अर्थ है कि सभी सॉकेट बंद हो जाते हैं। ऐप्स अक्सर कनेक्टिविटी के अचानक नुकसान के लिए अच्छी प्रतिक्रिया नहीं देते हैं और इससे उपयोगकर्ता को इंटरनेट कनेक्टिविटी के बिना कुछ सेकंड का अनुभव हो सकता है जब तक कि नया कनेक्शन पूरी तरह से स्थापित नहीं हो जाता।

  • डिफ़ॉल्ट नेटवर्क दो बार बदलता है, पुराने वाई-फ़ाई नेटवर्क से सेल्युलर में, फिर सेल्युलर से नए वाई-फ़ाई नेटवर्क में। इससे ऐप्स दो बार नेटवर्क परिवर्तनों पर प्रतिक्रिया करते हैं। डिवाइस को सेलुलर डेटा का उपयोग करके कम समय बिताना चाहिए।

मेक-बिफोर-ब्रेक फ्लो का उपयोग केवल ओएस द्वारा शुरू किए गए स्वचालित वाई-फाई नेटवर्क स्विच के लिए किया जाता है। उपयोगकर्ता द्वारा शुरू किए गए नेटवर्क स्विच लीगेसी ब्रेक-बिफोर-मेक फ्लो का उपयोग करते हैं, जहां नया नेटवर्क कनेक्ट होने से पहले पिछला नेटवर्क पूरी तरह से डिस्कनेक्ट हो जाता है। कुछ मामलों में, ब्रेक-प्री-मेक फ्लो का उपयोग ओएस द्वारा शुरू किए गए स्वचालित स्विच में भी किया जाता है, उदाहरण के लिए, जब दो नेटवर्क के बीच स्विच करना दोनों को फ़ैक्टरी मैक पते का उपयोग करने के लिए कॉन्फ़िगर किया गया हो।

ऐप्स यह जांच सकते हैं कि WifiManager#isMakeBeforeBreakWifiSwitchingSupported() API का उपयोग करके डिवाइस पर यह उपयोग केस समर्थित है या नहीं।

मेक-पहले-ब्रेक को मान्य करना

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

adb shell wpa_cli -i wlan0 status ; echo ; adb shell wpa_cli -i wlan1 status

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

समवर्ती स्थानीय-केवल और इंटरनेट कनेक्शन

समवर्ती स्थानीय-केवल और इंटरनेट कनेक्शन फ़ंक्शन उपकरणों को स्थानीय-केवल कनेक्शन से कनेक्ट करने की अनुमति देता है, जैसे आईओटी डिवाइस से कनेक्शन, प्राथमिक इंटरनेट-प्रदाता नेटवर्क के साथ-साथ। यह फ़ंक्शन कैमरे जैसे IoT उपकरणों से सीधे कनेक्ट होने पर उपयोगकर्ता अनुभव को बेहतर बनाता है, जो Android 10 में जोड़े गए WifiNetworkSpecifier API के माध्यम से संभव है।

एंड्रॉइड 11 और उसके बाद के संस्करण में, IoT डिवाइस से कनेक्ट होने पर डिवाइस प्राथमिक वाई-फाई नेटवर्क से डिस्कनेक्ट हो जाते हैं, जिसके परिणामस्वरूप इंटरनेट कनेक्टिविटी का नुकसान होता है (जब तक कि डिवाइस में कोई अन्य परिवहन प्रकार उपलब्ध न हो, जैसे सेलुलर डेटा)।

ऐप्स यह जांच सकते हैं कि यह फ़ंक्शन WifiManager#isStaConcurrencyForLocalOnlyConnectionsSupported() API का उपयोग करके डिवाइस पर समर्थित है या नहीं।

एंड्रॉइड 12 में समवर्ती स्थानीय-केवल और इंटरनेट कनेक्शन फ़ंक्शन में परिवर्तनों के बारे में अधिक जानकारी के लिए, पीयर-टू-पीयर कनेक्टिविटी के लिए वाई-फाई नेटवर्क अनुरोध एपीआई देखें।

केवल-स्थानीय और इंटरनेट कनेक्शन की पुष्टि

इस फ़ंक्शन को मान्य करने के लिए, निम्नलिखित CTS और ACTS परीक्षणों का उपयोग करें:

  • सीटीएस: MultiStaConcurrencyWifiNetworkSpecifierTest
  • अधिनियम: WifiStaConcurrencyNetworkRequestTest

समवर्ती प्रतिबंधित और इंटरनेट कनेक्शन

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

ऐप्स यह जांच सकते हैं कि यह फ़ंक्शन WifiManager#isStaConcurrencyForRestrictedConnectionsSupported() API का उपयोग करके डिवाइस पर समर्थित है या नहीं।

डिवाइस को द्वितीयक प्रतिबंधित वाई-फाई नेटवर्क से कनेक्ट करने के लिए सक्षम करने के लिए, इन चरणों का पालन करें:

  1. setOemPaid या setOemPrivate को सही पर सेट करके वाई-फ़ाई नेटवर्क सुझाव जोड़ें।

  2. ConnectivityManager में, संबंधित क्षमताओं के साथ NetworkRequest फ़ाइल करें:

जब डिवाइस OEM भुगतान या OEM निजी सुझाव से मेल खाने वाले नेटवर्क के साथ स्कैन परिणामों का पता लगाता है, तो यह स्वचालित रूप से इसे द्वितीयक नेटवर्क के रूप में जोड़ता है।

समवर्ती प्रतिबंधित और इंटरनेट कनेक्शन को मान्य करना

इस फ़ंक्शन को मान्य करने के लिए, निम्नलिखित CTS और ACTS परीक्षणों का उपयोग करें:

  • CTS: MultiStaConcurrencyRestrictedWifiNetworkSuggestionTest
  • अधिनियम: WifiStaConcurrencyNetworkRequestTest

इंटरनेट कनेक्शन के साथ समवर्ती एकाधिक नेटवर्क

एंड्रॉइड 13 या उच्चतर के लिए उपलब्ध, इंटरनेट कनेक्शन सुविधा के साथ समवर्ती एकाधिक नेटवर्क डिवाइस को दो नेटवर्क (एपी) से समवर्ती रूप से कनेक्ट करने की अनुमति देता है, जो दोनों अप्रतिबंधित हैं (सभी ऐप्स की पहुंच है) और इंटरनेट एक्सेस प्रदान करते हैं।

ऐप्स यह जांच सकते हैं कि WifiManager#isStaConcurrencyForMultiInternetSupported() विधि का उपयोग करके डिवाइस पर यह सुविधा समर्थित है या नहीं।

यदि सुविधा समर्थित है, तो विशेषाधिकार प्राप्त ऐप्स WifiManager#setStaConcurrencyForMultiInternetMode(int mode) पद्धति का उपयोग करके सुविधा को सक्षम कर सकते हैं। सुविधा में निम्नलिखित मोड हैं:

वर्तमान में सक्रिय सुविधा मोड को क्वेरी करने के लिए, WifiManager#getStaConcurrencyForMultiInternetMode() विधि का उपयोग करें।

जब सुविधा सक्षम हो, तो अतिरिक्त इंटरनेट-प्रदत्त वाई-फाई नेटवर्क का अनुरोध करने के लिए निम्न चरणों का उपयोग करें।

  1. WifiNetworkSpecifier.Builder का उपयोग करके एक वाई-फाई नेटवर्क विनिर्देशक बनाएं। setBand() पद्धति का उपयोग करके विनिर्देशक के लिए एक बैंड चुनें। SSID या BSSID को निर्दिष्ट न करें क्योंकि निर्दिष्ट बैंड के लिए अतिरिक्त नेटवर्क वाई-फाई फ्रेमवर्क द्वारा चुना गया है।

  2. ConnectivityManager का उपयोग करके, NET_CAPABILITY_INTERNET क्षमता के साथ NetworkRequest बनाएं।

  3. अनुरोध की स्थिति को ट्रैक करने के लिए नेटवर्क NetworkCallback इंस्टेंस के साथ नेटवर्क अनुरोध में विनिर्देशक जोड़ें, और ConnectivityManager को अनुरोध जारी करें। यदि स्कैन परिणाम में अनुरोधित बैंड के साथ एक सहेजा गया नेटवर्क उपलब्ध है, और नेटवर्क से कनेक्शन सफल होता है, NetworkCallback.onAvailable() को कॉलबैक ऑब्जेक्ट पर लागू किया जाता है।

इंटरनेट कनेक्शन के साथ समवर्ती एकाधिक नेटवर्क को मान्य करना

इस फ़ंक्शन को मान्य करने के लिए, निम्न CTS परीक्षण का उपयोग करें:

  • CTS: MultiStaConcurrencyMultiInternetWifiNetworkTest

विक्रेता वाई-फाई चिप दिशानिर्देश

वाई-फाई चिप विक्रेताओं के लिए, वाई-फाई एसटीए/एसटीए समवर्ती का समर्थन करने के लिए निम्नलिखित दिशानिर्देशों का उपयोग करें।

वाई-फाई चिप को दोहरे समवर्ती एसटीए कनेक्शन का समर्थन करना चाहिए। इसका मतलब है कि यह निम्नलिखित का समर्थन करता है:

  • प्रत्येक STA इंटरफ़ेस में फ्रेमवर्क द्वारा प्रोग्राम करने योग्य एक अद्वितीय MAC है।
  • द्वितीयक STA इंटरफ़ेस को गतिशील रूप से बनाया और नष्ट किया जा सकता है।
  • प्रत्येक एसटीए को एक अलग एसएसआईडी (या तो एक ही बैंड या एक अलग बैंड के भीतर) से जोड़ा जा सकता है।
  • प्रत्येक एसटीए को एक ही एसएसआईडी (या तो एक ही बैंड या एक अलग बैंड के भीतर) से जोड़ा जा सकता है। दो एसटीए को कभी भी एक ही बीएसएसआईडी से नहीं जोड़ा जाना चाहिए।

महत्वपूर्ण विशेषताएं प्रति-इंटरफ़ेस के आधार पर संचालित होनी चाहिए और वे प्राथमिक इंटरफ़ेस पर उपलब्ध होनी चाहिए। इन महत्वपूर्ण विशेषताओं की सूची निम्नलिखित है:

  • रोमिंग कम से कम प्राथमिक इंटरफ़ेस ( IWifiChip.setMultiStaPrimaryConnection() का उपयोग करके सेट) पर समर्थित होना चाहिए। यदि रोमिंग दोनों इंटरफेस पर समर्थित है, तो एक कनेक्शन पर निर्णय दूसरे समवर्ती कनेक्शन के साथ संघर्ष नहीं करना चाहिए। उदाहरण के लिए, एक इंटरफ़ेस को दूसरे कनेक्शन के BSSID में नहीं घूमना चाहिए।

  • APF (और अन्य ऑफलोड जैसे ARP और NS) को कम से कम प्राथमिक इंटरफ़ेस ( IWifiChip.setMultiStaPrimaryConnection() का उपयोग करके सेट) पर समर्थित होना चाहिए।

  • लिंक परत के आँकड़े प्रति इंटरफ़ेस के आधार पर काम करने चाहिए।

विभिन्न समवर्ती परिदृश्यों के लिए निम्नलिखित अनुशंसित वाई-फाई चिप कार्यान्वयन हैं:

  • वाई-फाई चिप को फ्रेमवर्क को IWifiChip.setMultiStaUseCase() को वर्तमान फ़ंक्शन को निर्दिष्ट करने के लिए निम्नलिखित स्थिरांकों में से एक के साथ कॉल करने की अनुमति देनी चाहिए:

    • DUAL_STA_TRANSIENT_PREFER_PRIMARY : मेक-बिफोर-ब्रेक फ़ंक्शन को निर्दिष्ट करता है। प्राथमिक कनेक्शन की गुणवत्ता को द्वितीयक कनेक्शन पर प्राथमिकता दी जानी चाहिए।
    • DUAL_STA_NON_TRANSIENT_UNBIASED : समवर्ती स्थानीय-केवल और इंटरनेट कनेक्शन या समवर्ती प्रतिबंधित और इंटरनेट कनेक्शन फ़ंक्शन को निर्दिष्ट करता है। दोनों कनेक्शनों की गुणवत्ता को समान रूप से प्राथमिकता दी जानी चाहिए।
  • चूंकि दोहरे समवर्ती एसटीए एमसीसी, एससीसी, और डीबीएस के संचालन के तरीके को जन्म दे सकते हैं, इसलिए जब फ़ंक्शन को इंगित करने के लिए फ्रेमवर्क IWifiChip.setMultiStaUseCase() को कॉल करता है, तो विक्रेता कार्यान्वयन को सबसे अच्छा रेडियो कॉन्फ़िगरेशन चुनना चाहिए। निम्नलिखित सामान्य दिशानिर्देश हैं:

    • यदि उपलब्ध हो तो 2x2+2x2 डीबीएस को प्राथमिकता दी जाती है।
    • कनेक्शन की गुणवत्ता पर अत्यधिक प्रभाव के कारण यदि संभव हो तो 1x1+1x1 डीबीएस से बचें। इसके बजाय, एमसीसी को प्राथमिकता दें।
    • MCC कर्तव्य चक्र को विभिन्न कार्यों के लिए ड्राइवर या फर्मवेयर द्वारा कॉन्फ़िगर करने योग्य होना चाहिए। ढांचा सीधे एमसीसी कर्तव्य चक्र निर्धारित नहीं करता है, लेकिन इस जानकारी के लिए StaLinkLayerIfaceStats.timeSliceDutyCycleInPercent का उपयोग करके पूछताछ करता है।
    • यदि एमसीसी का उपयोग कर रहे हैं, तो हम प्राथमिक और द्वितीयक कनेक्शनों के बीच निम्नलिखित कर्तव्य चक्रों की अनुशंसा करते हैं:

      • DUAL_STA_TRANSIENT_PREFER_PRIMARY : 70% प्राथमिक, 30% द्वितीयक।
      • DUAL_STA_NON_TRANSIENT_UNBIASED : 50% प्राथमिक, 50% द्वितीयक।