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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

लागू करना

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

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

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

  • हॉटस्पॉट के लिए हाल/फ़र्मवेयर: हाईडॉल या फिर HIDL 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) के ज़रिए, कंट्रोल करने वाले ऐप्लिकेशन (Settings ऐप्लिकेशन) को सूचना दी जाती है.
  • (Android 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 यूनिट टेस्ट और कंपैटिबिलिटी टेस्ट सुइट (CTS) टेस्ट का एक सेट उपलब्ध कराता है. हॉटस्पॉट सुविधा की जांच वेंडर टेस्ट सुइट (वीटीएस) का इस्तेमाल करके भी की जा सकती है.

यूनिट टेस्ट

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

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

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

    atest packages/modules/Wifi/framework/tests/
    

Compatibility Test Suite (CTS) टेस्ट

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

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

atest android.net.wifi.cts.WifiManagerTest

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

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

atest VtsHalWifiHostapdV1_2Target

अगर AIDL इंटरफ़ेस लागू किया गया है, तो:

atest VtsHalHostapdTargetTest