वाई-फ़ाई STA/STA एक साथ काम करने की सुविधा

Android 12 में, वाई-फ़ाई STA/STA को एक साथ इस्तेमाल करने की सुविधा है. इस सुविधा का इस्तेमाल करके, डिवाइस एक साथ दो वाई-फ़ाई नेटवर्क से कनेक्ट हो सकते हैं. इस वैकल्पिक सुविधा की मदद से, ये फ़ंक्शन चालू किए जाते हैं.

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

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

लागू करना

वाई-फ़ाई STA/STA लागू करने के लिए, डिवाइसों पर ये सुविधाएं काम करनी चाहिए एक साथ कई काम करना:

  • वाई-फ़ाई चिप या फ़र्मवेयर पर एक साथ दो एसटीए काम करने चाहिए कनेक्शन. फ़र्मवेयर को चैनल और बैंड के सभी कॉम्बिनेशन के साथ काम करना चाहिए दोनों कनेक्शन के लिए. परफ़ॉर्मेंस की समस्याओं से बचने के लिए, हमारा सुझाव है कि 2x2+2x2 DBS की सुविधा वाला वाई-फ़ाई चिप.

  • डिवाइस, AIDL या HIDL में नीचे दिए गए एपीआई के साथ काम करता हो IWifiChip को लागू करना.

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

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

  1. इसका इस्तेमाल करके एक या उससे ज़्यादा फ़ंक्शन अलग-अलग चालू करें रनटाइम रिसॉर्स ओवरले (इसे बंद किया जा सकता है डिफ़ॉल्ट).

    • ब्रेक से पहले बनाएं: config_wifiMultiStaNetworkSwitchingMakeBeforeBreakEnabled
    • एक ही समय पर लोकल-ओनली और इंटरनेट कनेक्शन: config_wifiMultiStaLocalOnlyConcurrencyEnabled
    • एक साथ प्रतिबंधित और इंटरनेट कनेक्शन: config_wifiMultiStaRestrictedConcurrencyEnabled
    • इंटरनेट कनेक्शन के साथ एक साथ कई नेटवर्क: config_wifiMultiStaMultiInternetConcurrencyEnabled
  2. लागू किए गए हर सेक्शन की पुष्टि उनसे जुड़े सेक्शन में बताए गए तरीके से करें.

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

ब्रेक से पहले बनाएं

make-before-break फ़ंक्शन की मदद से डिवाइस को नए वाई-फ़ाई से कनेक्ट करने में मदद मिलती है नेटवर्क, सिर्फ़ मौजूदा वाई-फ़ाई नेटवर्क कनेक्शन बनाए रखते हुए नए नेटवर्क से कनेक्ट होने पर, पुराने नेटवर्क से डिसकनेक्ट हो जाए वाई-फ़ाई नेटवर्क मौजूद हो और इसमें इंटरनेट हो.

ब्रेक से पहले इस्तेमाल का उदाहरण, नीचे दी गई समस्याओं को हल करता है Android 11 या इससे पहले का वर्शन, जिसमें डिवाइस का डिसकनेक्ट होना ज़रूरी है किसी नए नेटवर्क से कनेक्ट करने से पहले (बनाने से पहले ब्रेक लें).

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

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

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

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

ऐप्लिकेशन, WifiManager#isMakeBeforeBreakWifiSwitchingSupported() एपीआई.

ब्रेक से पहले मेक-अप करें की पुष्टि करें

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

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

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

एक ही समय पर लोकल-ओनली कनेक्शन और इंटरनेट कनेक्शन

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

Android 11 और उससे पहले के वर्शन में, डिवाइस किसी IoT डिवाइस से कनेक्ट करते समय प्राथमिक वाई-फ़ाई नेटवर्क का इस्तेमाल नहीं किया जाएगा, जिससे इंटरनेट कनेक्टिविटी (जब तक कि डिवाइस में कोई अन्य ट्रांसपोर्ट टाइप उपलब्ध न हो, जैसे कि मोबाइल डेटा).

ऐप्लिकेशन इसका इस्तेमाल करके यह देख सकते हैं कि यह फ़ंक्शन डिवाइस पर काम करता है या नहीं WifiManager#isStaConcurrencyForLocalOnlyConnectionsSupported() एपीआई.

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

सिर्फ़ लोकल कनेक्शन और इंटरनेट कनेक्शन की पुष्टि करना

इस फ़ंक्शन की पुष्टि करने के लिए, MultiStaConcurrencyWifiNetworkSpecifierTest सीटीएस टेस्ट.

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

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

ऐप्लिकेशन इसका इस्तेमाल करके यह देख सकते हैं कि यह फ़ंक्शन डिवाइस पर काम करता है या नहीं WifiManager#isStaConcurrencyForRestrictedConnectionsSupported() एपीआई.

किसी डिवाइस को सेकंडरी प्रतिबंधित वाई-फ़ाई नेटवर्क से कनेक्ट करने के लिए, यह तरीका अपनाएं:

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

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

जब डिवाइस, OEM से मेल खाने वाले नेटवर्क से स्कैन के नतीजों का पता लगाता है या OEM निजी सुझाव, यह अपने-आप सेकंडरी नेटवर्क के तौर पर इससे कनेक्ट हो जाता है.

एक साथ चलने वाले प्रतिबंधित और इंटरनेट कनेक्शन की पुष्टि करें

इस फ़ंक्शन की पुष्टि करने के लिए, MultiStaConcurrencyRestrictedWifiNetworkSuggestionTest सीटीएस टेस्ट.

इंटरनेट कनेक्शन के साथ एक साथ कई नेटवर्क

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

ऐप्लिकेशन इसका इस्तेमाल करके यह देख सकते हैं कि यह सुविधा डिवाइस पर काम करती है या नहीं WifiManager#isStaConcurrencyForMultiInternetSupported() तरीका.

अगर यह सुविधा काम करती है, तो ऐसे ऐप्लिकेशन जिन्हें खास अधिकार मिले हुए हैं, वे WifiManager#setStaConcurrencyForMultiInternetMode(int mode) तरीका. कॉन्टेंट बनाने सुविधा में ये मोड शामिल हैं:

मौजूदा चालू फ़ीचर मोड के बारे में क्वेरी करने के लिए, WifiManager#getStaConcurrencyForMultiInternetMode() तरीका.

इस सुविधा के चालू होने पर, अतिरिक्त सुविधाओं का अनुरोध करने के लिए, यहां दिया गया तरीका अपनाएं इंटरनेट उपलब्ध कराने वाला वाई-फ़ाई नेटवर्क.

  1. इसका इस्तेमाल करके वाई-फ़ाई नेटवर्क स्पेसिफ़िकेशन बनाएं WifiNetworkSpecifier.Builder. इसका इस्तेमाल करके, स्पेसिफ़िकेशन के लिए एक बैंड चुनें setBand() तरीका. SSID या BSSID को उस नेटवर्क के लिए अतिरिक्त नेटवर्क के रूप में तय न करें बताए गए बैंड को वाई-फ़ाई फ़्रेमवर्क से चुना गया है.

  2. इसका इस्तेमाल किया जा रहा है ConnectivityManager, एक NetworkRequest बनाएं. NET_CAPABILITY_INTERNET क्षमता.

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

इंटरनेट कनेक्शन के साथ, एक साथ कई नेटवर्क की पुष्टि करें

इस फ़ंक्शन की पुष्टि करने के लिए, नीचे दिए गए सीटीएस टेस्ट का इस्तेमाल करें:

  • सीटीएस: MultiStaConcurrencyMultiInternetWifiNetworkTest

वेंडर के वाई-फ़ाई चिप से जुड़े दिशा-निर्देश

वाई-फ़ाई चिप की सुविधा देने वाले वेंडर, इन दिशा-निर्देशों का पालन करके वाई-फ़ाई STA/STA एक साथ काम करने की सुविधा.

वाई-फ़ाई चिप को एक साथ दो STA कनेक्शन के साथ काम करना चाहिए. इसका मतलब है कि इनका समर्थन करता है:

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

ज़रूरी सुविधाएं हर इंटरफ़ेस के हिसाब से चालू होनी चाहिए और उन्हें ऐसा होना चाहिए प्राइमरी इंटरफ़ेस पर उपलब्ध है. इन ज़रूरी बातों की सूची नीचे दी गई है सुविधाएँ:

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

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

  • लिंक लेयर के आंकड़े, हर इंटरफ़ेस के हिसाब से काम करने चाहिए.

नीचे अलग-अलग तरह के वाई-फ़ाई चिप इस्तेमाल करने के सुझाव दिए गए हैं एक साथ कई काम करने की स्थितियां:

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

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

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

      • DUAL_STA_TRANSIENT_PREFER_PRIMARY: 70% प्राइमरी और 30% सेकंडरी.
      • DUAL_STA_NON_TRANSIENT_UNBIASED: 50% प्राइमरी और 50% सेकंडरी.