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

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

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

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

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

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

टेथर्ड वाई-फ़ाई हॉटस्पॉट को डिफ़ॉल्ट रूप से लागू करने की सुविधा, Android Open Source Project (AOSP) के सेटिंग ऐप्लिकेशन में मिलती है. हालांकि, यह Soft AP कॉन्फ़िगरेशन के लिए सभी एपीआई का इस्तेमाल नहीं करता है.

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

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

    SoftApCallback कॉलबैक फ़ंक्शन, ये तरीके उपलब्ध कराता है:

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

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

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

सिर्फ़ स्थानीय हॉटस्पॉट के लिए:

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

अनुमति वाली सूची और ब्लॉकलिस्ट लागू करना

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

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

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

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

लागू करना

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

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

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

  • हॉटस्पॉट के लिए एचएएल/फ़र्मवेयर: एचआईडीएल 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) के ज़रिए, कंट्रोल करने वाले ऐप्लिकेशन (सेटिंग ऐप्लिकेशन) को इसकी जानकारी दी जाती है.
  • (Android 13 से उपलब्ध है) config_wifiSoftapPassphraseAsciiEncodableCheck: सॉफ़्ट एपी पासफ़्रेज़ को ASCII में एन्कोड किया जाना चाहिए या नहीं.
  • config_wifiSoftapAutoUpgradeToBridgedConfigWhenSupported: जब कोई नया डिवाइस काम करता है, तब क्लाउड कॉन्फ़िगरेशन को वापस लाने के दौरान, बैंड की सेटिंग के कॉन्फ़िगरेशन को ड्यूअल बैंड में अपने-आप अपग्रेड करना है या नहीं.
  • (Android 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, हॉटस्पॉट की सुविधा की पुष्टि करने के लिए, यूनिट टेस्ट और Compatibility Test Suite (CTS) टेस्ट का एक सेट उपलब्ध कराता है. Vendor Test Suite (VTS) का इस्तेमाल करके, हॉटस्पॉट की सुविधा की भी जांच की जा सकती है.

यूनिट टेस्ट

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

  • सेवा की जांच:

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

    atest packages/modules/Wifi/framework/tests/

Compatibility Test Suite (CTS) टेस्ट

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

CTS टेस्ट शुरू करने के लिए, यह कमांड चलाएं:

atest android.net.wifi.cts.WifiManagerTest

Vendor Test Suite (VTS)

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

atest VtsHalWifiHostapdV1_2Target

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

atest VtsHalHostapdTargetTest