वाई-फ़ाई हॉटस्पॉट (सॉफ़्ट एपी)

Android, वाई-फ़ाई हॉटस्पॉट (सॉफ़्ट एपी) के साथ काम करता है. इसमें वाई-फ़ाई हॉटस्पॉट और सिर्फ़ स्थानीय वाई-फ़ाई हॉटस्पॉट के ज़रिए टेदरिंग की सुविधा भी शामिल है.

सॉफ़्ट एपी सुविधा की मदद से, इन्हें कॉन्फ़िगर किया जा सकता है:

  • SSID और BSSID
  • सुरक्षा प्रकार (WPA3 सहित)
  • छिपा हुआ SSID
  • ऑपरेटिंग बैंड और चैनल (ACS सहित)
  • अनुमति वाले क्लाइंट की ज़्यादा से ज़्यादा संख्या
  • अपने-आप बंद होने की सुविधा के लिए टाइम आउट की वैल्यू
  • अनुमति वाली सूची और ब्लॉकलिस्ट, ताकि उपयोगकर्ता जुड़े हुए डिवाइसों को कंट्रोल कर सके
  • AP BSSID के लिए एमएसी रैंडमाइज़ेशन का लेवल
  • 802.11ax और 802.11be

डिवाइस की क्षमताओं से यह तय होता है कि ये कंट्रोल उपलब्ध होंगे या नहीं. इन सुविधाओं को पाने के लिए, Android 11 में एपीआई उपलब्ध कराए गए हैं. डिवाइस बनाने वाली कंपनियां ओवरले का इस्तेमाल करके, डिवाइस की बुनियादी क्षमताओं की जानकारी भी दे सकती हैं.

ध्यान दें कि कुछ एपीआई, सिस्टम के एपीआई हैं और अनुमतियों के ज़रिए उन पर पाबंदी लगाई गई है, ताकि सिर्फ़ सिस्टम का सेटिंग ऐप्लिकेशन उन्हें ऐक्सेस कर सके.

हॉटस्पॉट एपीआई की मदद से ऐप्लिकेशन डेवलप करना

एओएसपी सेटिंग ऐप्लिकेशन, टेदर किए गए वाई-फ़ाई हॉटस्पॉट को डिफ़ॉल्ट तौर पर लागू करता है. हालांकि, यह सॉफ़्ट एपी कॉन्फ़िगरेशन के लिए, सभी एपीआई का इस्तेमाल नहीं करता.

हॉटस्पॉट या सिर्फ़ लोकल हॉटस्पॉट के ज़रिए टेदरिंग की सुविधा चालू करने के लिए, ऐप्लिकेशन को ये काम करने होंगे:

  1. अगर डिवाइस की सुविधाएं पाने के लिए, टेदर किए गए हॉटस्पॉट के लिए WifiManager#registerSoftApCallback या सिर्फ़ स्थानीय हॉटस्पॉट के लिए WifiManager#registerLocalOnlyHotspotSoftApCallback का इस्तेमाल करना है, तो कॉलबैक रजिस्टर करें.

    SoftApCallback कॉलबैक ये तरीके उपलब्ध कराता है:

    • SoftApCallback#onCapabilityChanged: डिवाइस की सुविधाओं के बारे में जानकारी देता है. इसमें, इस्तेमाल किए जा सकने वाले क्लाइंट की ज़्यादा से ज़्यादा संख्या शामिल है. साथ ही, यह भी पता चलता है कि SAE या ACS काम करता है या नहीं.
    • SoftApCallback#onInfoChanged: यह, चल रहे Soft AP के बारे में जानकारी देता है. यह सिर्फ़ शुरू होने के बाद लागू होता है. इसमें बैंड और फ़्रीक्वेंसी की जानकारी भी शामिल है.
    • SoftApCallback#onConnectedClientsChanged: कनेक्ट किए गए क्लाइंट की सूची देता है. हर एक क्लाइंट के लिए, आप MAC पता पा सकते हैं. आईपी की जानकारी पाने के लिए, TetheringEventCallback#onClientsChanged कॉलबैक का इस्तेमाल करें.
    • SoftApCallback#onStateChanged: सॉफ़्ट एपी के चालू और बंद होने पर, उसकी स्थिति के बारे में अपडेट देता है.
    • SoftApCallback#onBlockedClientConnecting: ब्लॉक किए गए क्लाइंट की जानकारी देने के लिए, इनमें से किसी वजह से ब्लॉक करें: डिवाइस ज़्यादा से ज़्यादा ऐसे क्लाइंट तक पहुंच गया है जिनका इस्तेमाल किया जा सकता है या क्लाइंट को कनेक्ट करने की अनुमति साफ़ तौर पर नहीं दी गई है.

टेदर किए गए हॉटस्पॉट के लिए:

  1. WifiManager#setSoftApConfiguration तरीके को कॉल करके और SoftApConfiguration इंस्टेंस देकर, टेदरिंग के लिए सॉफ़्ट एपी कॉन्फ़िगरेशन को कॉन्फ़िगर करें. SoftApConfiguration.Builder क्लास का इस्तेमाल करके SoftApConfiguration बनाएं.
  2. TetheringManager#startTethering पर टेदरिंग विधि को कॉल करके टेदरिंग शुरू करें.

सिर्फ़ लोकल हॉटस्पॉट के लिए:

  1. WifiManager#startLocalOnlyHotspot मेथड को बोलकर, एक खास सॉफ़्ट एपी कॉन्फ़िगरेशन के साथ सिर्फ़-स्थानीय हॉटस्पॉट शुरू करें.

अनुमति देने और ब्लॉक करने वाली सूचियों को लागू करना

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

  • SoftApConfiguration.Builder#setMaxNumberOfClients का इस्तेमाल करके, सॉफ़्ट एपी से कनेक्ट किए जा सकने वाले डिवाइसों की संख्या सीमित करें. पक्का करें कि आपको डिवाइस पर काम करने वाले क्लाइंट की ज़्यादा से ज़्यादा संख्या से कम संख्या चुननी हो. हालांकि, SoftApCapability#getMaxSupportedClients से ज़्यादा से ज़्यादा संख्या की जानकारी हासिल की जा सकती है.
  • अनुमति दें और ब्लॉक करें सूचियों का इस्तेमाल करके, डाइनैमिक कंट्रोल दें:

    • सॉफ़्ट एपी के डिफ़ॉल्ट कॉन्फ़िगरेशन से, सभी डिवाइसों को सॉफ़्ट एपी से कनेक्ट किया जा सकता है. हालांकि, उन डिवाइसों को ही ऐसा किया जा सकता है जिनके MAC पते SoftApConfiguration.Builder#setBlockedClientList से जोड़े गए हों.
    • अगर सॉफ़्ट एपी को SoftApConfiguration.Builder#setClientControlByUserEnabled(true) के साथ कॉन्फ़िगर किया गया है, तो अनुमति वाली सूची का इस्तेमाल किया जाता है.

      • वे सभी डिवाइस जिनके MAC पते SoftApConfiguration.Builder#setBlockedClientList में हैं उन्हें असोसिएशन से ब्लॉक किया गया है.
      • वे सभी डिवाइस जिनके MAC पते SoftApConfiguration.Builder#setAllowedClientList में हैं उन्हें जोड़ने की अनुमति है.
      • अन्य सभी डिवाइसों को (ऐसे डिवाइस जिनके MAC पते अनुमति वाली या ब्लॉक सूची में शामिल नहीं हैं) को असोसिएशन से ब्लॉक किया जाता है. हालांकि, SoftApCallback#onBlockedClientConnecting को इस तरह से ब्लॉक किया जाता है कि कंट्रोल करने वाले ऐप्लिकेशन (यानी सेटिंग ऐप्लिकेशन) को कोई कार्रवाई करने की अनुमति देनी पड़े. उदाहरण के लिए, उपयोगकर्ता से पुष्टि करने के लिए कहना और फिर डिवाइस को अनुमति वाली सूची या ब्लॉक सूची में जोड़ना.

    ध्यान दें कि डिवाइस अनुमति वाली सूची की सुविधा का इस्तेमाल सिर्फ़ तब कर सकते हैं, जब यह डिवाइस पर काम करता हो. SoftApCapability#areFeaturesSupported(SOFTAP_FEATURE_CLIENT_FORCE_DISCONNECT) का इस्तेमाल करके, यह पुष्टि की जा सकती है कि डिवाइस पर सहायता उपलब्ध है या नहीं.

लागू करने का तरीका

हॉटस्पॉट या सिर्फ़ लोकल हॉटस्पॉट की मदद से टेदरिंग की सुविधा चालू करने के लिए, डिवाइस मैन्युफ़ैक्चरर को सेटिंग ऐप्लिकेशन, फ़्रेमवर्क, और एचएएल/फ़र्मवेयर की सुविधा देनी होगी:

  • सेटिंग ऐप्लिकेशन: एओएसपी सेटिंग ऐप्लिकेशन, टेदरिंग हॉटस्पॉट को SSID और सुरक्षा क्रेडेंशियल के साथ कॉन्फ़िगर करने के लिए एक बेसलाइन उपलब्ध कराता है. इस कोड को ऐसे ही इस्तेमाल किया जा सकता है या उसमें कुछ बदलाव किए जा सकते हैं, ताकि आपको अतिरिक्त सुविधाएं दी जा सकें. इस बारे में ज़्यादा जानकारी, हॉटस्पॉट एपीआई वाले ऐप्लिकेशन डेवलप करना में दी गई है.

  • फ़्रेमवर्क: एओएसपी फ़्रेमवर्क कोड उन सभी सुविधाओं के साथ काम करता है जिनके बारे में हॉटस्पॉट एपीआई की मदद से ऐप्लिकेशन डेवलप करना में बताया गया है.

  • हॉटस्पॉट के लिए एचएएल/फ़र्मवेयर: हाईडॉल या फिर IHostapd.hal वर्शन 1.2 या उसके बाद का वर्शन या एआईडीएल IHostapd.aiDL.

पसंद के मुताबिक बनाएं

लागू करने की प्रोसेस को पसंद के मुताबिक बनाने के लिए, डिवाइस मैन्युफ़ैक्चरर को नीचे दिए गए ओवरले और कैरियर कॉन्फ़िगरेशन कॉन्फ़िगर करने चाहिए, जिनके बारे में packages/modules/Wifi/service/ServiceWifiResources/res/values/config.xml में बताया गया है:

  • config_wifiFrameworkSoftApShutDownTimeoutMilliseconds: यह डिफ़ॉल्ट शटडाउन टाइम आउट इंटरवल होता है. SoftApConfiguration#setAutoShutdownEnabled चालू होने पर ही मान्य होगा. SoftApConfiguration#setShutdownTimeoutMillis का इस्तेमाल करके बदला जा सकता है.
  • config_wifiHardwareSoftapMaxClientCount: इस्तेमाल किए जा सकने वाले क्लाइंट की ज़्यादा से ज़्यादा संख्या के लिए हार्डवेयर की सीमा. इस डिवाइस पर काम करने वाले क्लाइंट की कम से कम संख्या, हार्डवेयर और मोबाइल और इंटरनेट सेवा देने वाली कंपनी की कम से कम सीमाएं (CarrierConfigManager.Wifi#KEY_HOTSPOT_MAX_CLIENT_COUNT में बताई गई है) हैं. आखिरी नतीजा SoftApCapabilities#getMaxSupportedClients की मदद से ऐप्लिकेशन को दिया जाता है.
  • config_wifiSofapClientForceDisconnectSupported: डिवाइस में क्लाइंट को ज़बरदस्ती डिसकनेक्ट करने की सुविधा है या नहीं. अनुमति दें और ब्लॉक करें, सूचियों को चालू करने के लिए ज़रूरी है. कंट्रोल करने वाले ऐप्लिकेशन (सेटिंग ऐप्लिकेशन) को SoftApCapabilities#areFeaturesSupported(SOFTAP_FEATURE_CLIENT_FORCE_DISCONNECT) की मदद से सूचना दी गई.
  • (13 से उपलब्ध) config_wifiSoftapPassphraseAsciiEncodableCheck: सॉफ़्ट एपी लंबा पासवर्ड, ASCII कोड में बदला जा सकता है या नहीं, यह ज़रूरी है या नहीं.
  • config_wifiSoftapAutoUpgradeToBridgedConfigWhenSupported: किसी नए डिवाइस पर, क्लाउड कॉन्फ़िगरेशन को पहले जैसा करने के दौरान बैंड की सेटिंग के कॉन्फ़िगरेशन को ड्यूअल बैंड पर अपने-आप अपग्रेड करना है या नहीं.
  • (13 से उपलब्ध) config_wifiSoftapAutoAppendLowerBandsToBandConfigurationEnabled: क्या फ़्रेमवर्क, बैंड कॉन्फ़िगरेशन में निचले बैंड को अपने-आप जोड़ देता है, ताकि साथ-साथ होने से जुड़ी हैंडलिंग से बचा जा सके.
  • config_wifiSoftApDynamicCountryCodeUpdateSupported: डिवाइस पर, एपी मोड में डाइनैमिक देश कोड अपडेट किया जा सकता है या नहीं
  • चैनल से सहायता: config_wifiSoftap2gChannelList, config_wifiSoftap5gChannelList, config_wifiSoftap6gChannelList, और config_wifiSoftap60gChannelList.
  • यह तय करने वाली सुविधा को बहाल करें कि किसी नए डिवाइस पर हॉटस्पॉट कॉन्फ़िगरेशन को वापस लाने के दौरान, इससे जुड़ी एंट्री डिफ़ॉल्ट पर रीसेट हों या नहीं: config_wifiSoftapResetChannelConfig, config_wifiSoftapResetHiddenConfig, config_wifiSoftapResetUserControlConfig, config_wifiSoftapResetAutoShutdownTimerConfig, config_wifiSoftapResetMaxClientSettingConfig. ध्यान दें कि ये डिफ़ॉल्ट रूप से true पर सेट होते हैं. इसका मतलब है कि वैल्यू को रीसेट किया जाता है. ऐसा करना तब ज़रूरी होता है, जब नए डिवाइस पर कॉन्फ़िगरेशन काम नहीं करता.
  • हार्डवेयर की सुविधाएं:
    • config_wifi_softap_acs_supported
    • config_wifi_softap_sae_supported
    • (13 से उपलब्ध) config_wifiSoftapOweTransitionSupported
    • (13 से उपलब्ध) config_wifiSoftapOweSupported
    • config_wifi_softap_ieee80211ac_supported
    • config_wifiSoftapIeee80211axSupported
    • (13 से उपलब्ध) config_wifiSoftapIeee80211beSupported
    • config_wifiSoftapMacAddressCustomizationSupported
    • config_wifiSoftapHeSuBeamformerSupported
    • config_wifiSoftapHeSuBeamformeeSupported
    • config_wifiSoftapHeMuBeamformerSupported
    • config_wifiSoftapHeTwtSupported
    • config_wifiSoftap24ghzSupported
    • config_wifiSoftap5ghzSupported
    • config_wifiSoftap6ghzSupported
    • config_wifiSoftap60ghzSupported
    • config_wifiSoftapAcsIncludeDfs

पुष्टि करें

हॉटस्पॉट की सुविधा की पुष्टि करने के लिए, Android, यूनिट टेस्ट और कंपैटबिलिटी टेस्ट सुइट (सीटीएस) टेस्ट का सेट उपलब्ध कराता है. हॉटस्पॉट सुविधा की जांच वेंडर टेस्ट सुइट (वीटीएस) का इस्तेमाल करके भी की जा सकती है.

यूनिट टेस्ट

नीचे दिए गए टेस्ट का इस्तेमाल करके हॉटस्पॉट पैकेज की पुष्टि करें.

  • सर्विस टेस्ट:

    atest packages/modules/Wifi/service/tests/wifitests/
    
  • मैनेजर टेस्ट:

    atest packages/modules/Wifi/framework/tests/
    

कंपैटबिलिटी टेस्ट सुइट (सीटीएस) के टेस्ट

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

सीटीएस टेस्ट को ट्रिगर करने के लिए, इसे चलाएं:

atest android.net.wifi.cts.WifiManagerTest

वेंडर टेस्ट सुइट (वीटीएस)

अगर HIDL इंटरफ़ेस लागू है, तो चलाएं:

atest VtsHalWifiHostapdV1_2Target

अगर एआईडीएल इंटरफ़ेस लागू है, तो इसे चलाएं:

atest VtsHalHostapdTargetTest