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

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

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

  • SSID और BSSID
  • सुरक्षा का टाइप (इसमें WPA3 भी शामिल है)
  • छिपा हुआ SSID
  • ऑपरेटिंग बैंड और चैनल (इसमें एसीएस भी शामिल है)
  • ज़्यादा से ज़्यादा कितने क्लाइंट जोड़े जा सकते हैं
  • अपने-आप बंद होने के लिए टाइम आउट की वैल्यू
  • अनुमति वाली सूची और ब्लॉकलिस्ट, ताकि उपयोगकर्ता उन डिवाइसों को कंट्रोल कर सके जो उससे जुड़े हैं
  • एपी बीएसएसआईडी के लिए एमएसी पता बदलने की सुविधा का लेवल
  • 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 में मौजूद हैं उन्हें असोसिएट करने से ब्लॉक कर दिया जाता है.
      • जिन डिवाइसों के एमएसी पते SoftApConfiguration.Builder#setAllowedClientList में हैं उन्हें असोसिएट करने की अनुमति है.
      • अन्य सभी डिवाइसों (यानी ऐसे डिवाइस जिनके एमएसी पते, अनुमति या ब्लॉक की सूची में नहीं हैं) को असोसिएशन से ब्लॉक कर दिया जाता है. हालांकि, SoftApCallback#onBlockedClientConnecting को कॉल किया जाता है, ताकि कंट्रोल करने वाले ऐप्लिकेशन (यानी Settings ऐप्लिकेशन) को कोई कार्रवाई करने की अनुमति मिल सके. उदाहरण के लिए, उपयोगकर्ता से पुष्टि करने के लिए कहें और फिर उपयोगकर्ता के व्यवहार के आधार पर, डिवाइस को अनुमति वाली सूची या ब्लॉक की सूची में जोड़ें.

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

लागू करना

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

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

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

  • हॉटस्पॉट के लिए एचएएल/फ़र्मवेयर: HIDL के IHostapd.hal के 1.2 या उसके बाद वाले वर्शन या AIDL के 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