वाई-फाई एसटीए/एसटीए कॉनकरेंसी

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

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

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

कार्यान्वयन

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

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

  • डिवाइस को IWifiChip के AIDL या HIDL कार्यान्वयन में निम्नलिखित API का समर्थन करना चाहिए।

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

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

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

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

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

तोड़ने से पहले बनाओ

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

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

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

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

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

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

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

मेक-बिफोर-ब्रेक को मान्य करना

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

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

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

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

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

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

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

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

केवल स्थानीय और इंटरनेट कनेक्शन को मान्य किया जा रहा है

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

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

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

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

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

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

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

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

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

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

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

  • सीटीएस: MultiStaConcurrencyRestrictedWifiNetworkSuggestionTest परीक्षण
  • अधिनियम: WifiStaConcurrencyNetworkRequestTest

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

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

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

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

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

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

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

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

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

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

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

  • सीटीएस: MultiStaConcurrencyMultiInternetWifiNetworkTest

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

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

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

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

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

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

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

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

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

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

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

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

      • DUAL_STA_TRANSIENT_PREFER_PRIMARY : 70% प्राथमिक, 30% माध्यमिक।
      • DUAL_STA_NON_TRANSIENT_UNBIASED : 50% प्राथमिक, 50% माध्यमिक।