Android, वाई-फ़ाई हॉटस्पॉट (सॉफ़्ट एपी) के साथ काम करता है. इसमें वाई-फ़ाई हॉटस्पॉट और सिर्फ़ स्थानीय वाई-फ़ाई हॉटस्पॉट के ज़रिए टेदरिंग की सुविधा भी शामिल है.
सॉफ्ट एपी की सुविधा की मदद से, इन चीज़ों को कॉन्फ़िगर किया जा सकता है:
- SSID और BSSID
- सुरक्षा का टाइप (इसमें WPA3 भी शामिल है)
- छिपा हुआ SSID
- ऑपरेटिंग बैंड और चैनल (एसीएस के साथ)
- अनुमति वाले क्लाइंट की ज़्यादा से ज़्यादा संख्या
- अपने-आप बंद होने की सुविधा के लिए टाइम आउट की वैल्यू
- अनुमति वाली सूची और ब्लॉकलिस्ट, ताकि उपयोगकर्ता उन डिवाइसों को कंट्रोल कर सके जो उससे जुड़े हैं
- एपी BSSID के लिए MAC रैंडमाइज़ेशन का लेवल
- 802.11ax और 802.11be
डिवाइस की सुविधाओं के हिसाब से, इन कंट्रोल की उपलब्धता तय होती है. Android 11 में, ये सुविधाएं पाने के लिए एपीआई उपलब्ध कराए गए हैं. डिवाइस बनाने वाली कंपनियां ओवरले का इस्तेमाल करके, डिवाइस की बुनियादी क्षमताओं की जानकारी भी दे सकती हैं.
ध्यान दें कि कुछ एपीआई, सिस्टम एपीआई होते हैं और इन्हें अनुमतियों के ज़रिए पाबंदी दी जाती है, ताकि सिर्फ़ सिस्टम का Settings ऐप्लिकेशन इन्हें ऐक्सेस कर सके.
हॉटस्पॉट एपीआई का इस्तेमाल करके ऐप्लिकेशन डेवलप करना
AOSP के सेटिंग ऐप्लिकेशन में, वाई-फ़ाई हॉटस्पॉट को कनेक्ट करने की सुविधा डिफ़ॉल्ट रूप से उपलब्ध होती है. हालांकि, यह सॉफ्ट एपी कॉन्फ़िगरेशन के लिए सभी एपीआई का इस्तेमाल नहीं करता.
हॉटस्पॉट या सिर्फ़ सीमित दायरे में इस्तेमाल होने वाले हॉटस्पॉट की मदद से टेदरिंग की सुविधा देने के लिए, ऐप्लिकेशन को ये काम करने होंगे:
डिवाइस की सुविधाओं को पाने के लिए,
WifiManager#registerSoftApCallback
का इस्तेमाल करके टेदर किए गए हॉटस्पॉट याWifiManager#registerLocalOnlyHotspotSoftApCallback
का इस्तेमाल करके सिर्फ़ स्थानीय हॉटस्पॉट के लिए कॉलबैक रजिस्टर करें.SoftApCallback
कॉलबैक में ये तरीके उपलब्ध होते हैं:SoftApCallback#onCapabilityChanged
: इससे डिवाइस की सुविधाओं के बारे में जानकारी मिलती है. इसमें, काम करने वाले क्लाइंट की ज़्यादा से ज़्यादा संख्या और यह जानकारी भी शामिल होती है कि SAE या ACS काम करता है या नहीं.SoftApCallback#onInfoChanged
: यह चल रहे सॉफ़्ट एपी के बारे में जानकारी देता है. यह जानकारी सिर्फ़ तब मान्य होती है, जब सॉफ़्ट एपी चालू हो. इसमें बैंड और फ़्रीक्वेंसी की जानकारी भी शामिल होती है.SoftApCallback#onConnectedClientsChanged
: कनेक्ट किए गए क्लाइंट की सूची दिखाता है. हर क्लाइंट के लिए, मैक पता पाया जा सकता है. आईपी की जानकारी पाने के लिए,TetheringEventCallback#onClientsChanged
कॉलबैक का इस्तेमाल करें.SoftApCallback#onStateChanged
: सॉफ्ट एपी के चालू और बंद होने पर, उसकी स्थिति के बारे में अपडेट देता है.SoftApCallback#onBlockedClientConnecting
: ब्लॉक करने की इनमें से किसी एक वजह से, ब्लॉक किए गए क्लाइंट की जानकारी देता है: डिवाइस ज़्यादा से ज़्यादा ऐसे क्लाइंट तक पहुंच गया है जिन पर यह काम कर सकता है या क्लाइंट को कनेक्ट करने की साफ़ तौर पर अनुमति नहीं है.
टेदर किए गए हॉटस्पॉट के लिए:
WifiManager#setSoftApConfiguration
तरीका कॉल करके औरSoftApConfiguration
इंस्टेंस देकर, टेदरिंग के लिए सॉफ़्ट एपी कॉन्फ़िगरेशन कॉन्फ़िगर करें.SoftApConfiguration.Builder
क्लास का इस्तेमाल करके,SoftApConfiguration
बनाएं.TetheringManager#startTethering
पर जाकर, 'इंटरनेट शेयर करना' सुविधा को चालू करें.
सिर्फ़ स्थानीय हॉटस्पॉट के लिए:
- किसी खास सॉफ़्ट एपी कॉन्फ़िगरेशन के साथ, सिर्फ़ स्थानीय लोगों के लिए हॉटस्पॉट शुरू करने के लिए,
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