اندروید از هاتاسپات وایفای (Soft AP) پشتیبانی میکند که شامل اتصال به اینترنت از طریق هاتاسپات وایفای و هاتاسپاتهای وایفای محلی میشود.
ویژگی soft AP امکان پیکربندی موارد زیر را فراهم میکند:
- SSID و BSSID
- نوع امنیت (شامل WPA3)
- SSID مخفی
- باند و کانال عملیاتی (شامل ACS)
- حداکثر تعداد کلاینتهای مجاز
- مقدار زمان خاموش شدن خودکار
- لیست مجاز و لیست مسدود شده برای کنترل کاربر بر دستگاههای مرتبط
- سطح تصادفیسازی MAC برای AP BSSID
- 802.11ax و 802.11be
قابلیتهای دستگاه، میزان دسترسی به این کنترلها را تعیین میکند. اندروید ۱۱ رابطهای برنامهنویسی کاربردی (API) را برای دستیابی به این قابلیتها معرفی میکند. تولیدکنندگان دستگاه همچنین میتوانند قابلیتهای پایه دستگاه را با استفاده از همپوشانیها مشخص کنند.
توسعه برنامهها با APIهای هاتاسپات
پیادهسازی پیشفرض یک هاتاسپات وایفای متصل توسط برنامه تنظیمات پروژه متنباز اندروید (AOSP) ارائه میشود، با این حال، این برنامه از تمام APIهای مربوط به پیکربندی Soft AP استفاده نمیکند.
برای پشتیبانی از اتصال به اینترنت از طریق هاتاسپات یا هاتاسپات محلی، برنامه باید عملکردهای زیر را انجام دهد:
برای دریافت قابلیتهای دستگاه، با استفاده از
WifiManager#registerSoftApCallbackبرای یک هاتاسپات متصل یا باWifiManager#registerLocalOnlyHotspotSoftApCallbackبرای یک هاتاسپات فقط محلی، یک فراخوانی مجدد ثبت کنید.تابع فراخوانی
SoftApCallbackمتدهای زیر را ارائه میدهد:-
SoftApCallback#onCapabilityChanged: اطلاعاتی در مورد قابلیتهای دستگاه، از جمله حداکثر تعداد کلاینتهای پشتیبانیشده و اینکه آیا SAE یا ACS پشتیبانی میشوند، ارائه میدهد. -
SoftApCallback#onInfoChanged: اطلاعاتی در مورد Soft AP در حال اجرا (فقط پس از شروع معتبر است)، از جمله اطلاعات باند و فرکانس، ارائه میدهد. -
SoftApCallback#onConnectedClientsChanged: فهرستی از کلاینتهای متصل را ارائه میدهد. برای هر کلاینت، میتوانید آدرس MAC را به دست آورید. برای به دست آوردن اطلاعات IP، از فراخوانیTetheringEventCallback#onClientsChangedاستفاده کنید. -
SoftApCallback#onStateChanged: بهروزرسانیهایی در مورد وضعیت Soft AP هنگام فعال و غیرفعال شدن آن ارائه میدهد. -
SoftApCallback#onBlockedClientConnecting: اطلاعات کلاینت مسدود شده را با یکی از دلایل زیر برای مسدود شدن ارائه میدهد: دستگاه به حداکثر تعداد کلاینتهایی که میتواند پشتیبانی کند رسیده است یا کلاینت صراحتاً مجاز به اتصال نیست. -
SoftApCallback#onClientsDisconnected: فهرستی از کلاینتهای قطعشده را ارائه میدهد. برای هر کلاینت، میتوانید دلیل قطع ارتباط را دریافت کنید.
-
برای یک هات اسپات متصل:
- پیکربندی soft AP را برای اتصال با فراخوانی متد
WifiManager#setSoftApConfigurationو ارائه یک نمونهSoftApConfigurationپیکربندی کنید.SoftApConfigurationبا استفاده از کلاسSoftApConfiguration.Builderبسازید. - اتصال اینترنت را با فراخوانی متد tethering در
TetheringManager#startTetheringآغاز کنید.
برای هاتاسپات فقط محلی:
- با فراخوانی متد
WifiManager#startLocalOnlyHotspot، هاتاسپات محلی را با پیکربندی خاص soft AP راهاندازی کنید.
پیادهسازی لیستهای مجاز و مسدود شده
یکی از الزامات معمول اپراتور، ارائه کنترل به کاربر برای دستگاههایی است که مجاز به اتصال به Soft AP هستند. چندین مکانیسم برای انجام این کار وجود دارد:
- حداکثر تعداد دستگاههایی که میتوانند با استفاده از
SoftApConfiguration.Builder#setMaxNumberOfClientsبه soft AP متصل شوند را محدود کنید. مطمئن شوید که عددی را مشخص میکنید که کمتر از حداکثر تعداد کلاینتهای پشتیبانی شده توسط دستگاه باشد. میتوانید حداکثر تعداد را ازSoftApCapability#getMaxSupportedClientsبه دست آورید. ارائه کنترل پویا با استفاده از لیستهای مجاز و مسدود شده:
- پیکربندی پیشفرض یک Soft AP به همه دستگاهها اجازه میدهد تا به Soft AP متصل شوند، به جز دستگاههایی که آدرسهای MAC آنها به
SoftApConfiguration.Builder#setBlockedClientListاضافه شده است. - اگر Soft AP با
SoftApConfiguration.Builder#setClientControlByUserEnabled( true )پیکربندی شده باشد، از لیست مجوز استفاده میشود.- تمام دستگاههایی که آدرسهای MAC آنها در
SoftApConfiguration.Builder#setBlockedClientListقرار دارد، از ارتباط با شبکه منع میشوند. - تمام دستگاههایی که آدرس MAC آنها در
SoftApConfiguration.Builder#setAllowedClientListقرار دارد، مجاز به ارتباط هستند. - تمام دستگاههای دیگر (یعنی دستگاههایی که آدرسهای MAC آنها در لیست مجاز یا مسدود شده نیست) از ارتباط مسدود میشوند، اما
SoftApCallback#onBlockedClientConnectingفراخوانی میشود و به برنامه کنترلکننده (یعنی برنامه تنظیمات ) اجازه میدهد اقدامی انجام دهد، به عنوان مثال، از کاربر درخواست تأیید کند و سپس دستگاه را بسته به رفتار کاربر به لیست مجاز یا لیست مسدود شده اضافه کند.
- تمام دستگاههایی که آدرسهای MAC آنها در
توجه داشته باشید که دستگاهها فقط در صورتی میتوانند از قابلیت لیست مجاز استفاده کنند که در دستگاه پشتیبانی شود. میتوانید پشتیبانی دستگاه را با استفاده از
SoftApCapability#areFeaturesSupported( SOFTAP_FEATURE_CLIENT_FORCE_DISCONNECT )تأیید کنید.- پیکربندی پیشفرض یک Soft AP به همه دستگاهها اجازه میدهد تا به Soft AP متصل شوند، به جز دستگاههایی که آدرسهای MAC آنها به
پیادهسازی
برای پشتیبانی از اتصال به اینترنت از طریق هاتاسپات یا پشتیبانی از هاتاسپات محلی، تولیدکنندگان دستگاه باید یک برنامه تنظیمات، چارچوب و پشتیبانی HAL/firmware ارائه دهند:
برنامه تنظیمات: برنامه تنظیمات پروژه متنباز اندروید (AOSP) یک مبنای اولیه برای پیکربندی یک هاتاسپات اتصال به اینترنت با SSID و اطلاعات امنیتی ارائه میدهد. این کد را میتوان به همین صورت استفاده کرد یا برای ارائه قابلیتهای اضافی، همانطور که در بخش «توسعه برنامهها با APIهای هاتاسپات» توضیح داده شده است، اصلاح کرد.
چارچوب: کد چارچوب AOSP از تمام قابلیتهای شرح داده شده در «توسعه برنامهها با APIهای هاتاسپات» پشتیبانی میکند.
HAL/firmware برای هاتاسپات: یا HIDL
IHostapd.halنسخه ۱.۲ یا بالاتر، یا AIDLIHostapd.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 )به برنامه کنترل (برنامه تنظیمات) اطلاع داده میشود. - (از ۱۳ به بعد موجود است)
config_wifiSoftapPassphraseAsciiEncodableCheck: آیا لازم است رمز عبور نرمافزاری AP قابل رمزگذاری ASCII باشد یا خیر. -
config_wifiSoftapAutoUpgradeToBridgedConfigWhenSupported: آیا هنگام بازیابی پیکربندی ابری، هنگام پشتیبانی از دستگاه جدید، پیکربندی تنظیمات باند به طور خودکار به باندهای دوگانه ارتقا یابد یا خیر. - (از ۱۳ موجود است)
config_wifiSoftapAutoAppendLowerBandsToBandConfigurationEnabled: آیا چارچوب به طور خودکار باندهای پایینتر را به پیکربندی باند اضافه میکند تا از مدیریت همزمانی جلوگیری شود. -
config_wifiSoftApDynamicCountryCodeUpdateSupported: آیا بهروزرسانی پویای کد کشور در حالت AP در دستگاه پشتیبانی میشود یا خیر. - پشتیبانی کانال:
config_wifiSoftap2gChannelList،config_wifiSoftap5gChannelList،config_wifiSoftap6gChannelListوconfig_wifiSoftap60gChannelList. - پشتیبانی از بازیابی (Restore) که مشخص میکند آیا ورودیهای مربوطه هنگام بازیابی پیکربندی هاتاسپات به یک دستگاه جدید به حالت پیشفرض بازنشانی میشوند یا خیر:
config_wifiSoftapResetChannelConfig،config_wifiSoftapResetHiddenConfig،config_wifiSoftapResetUserControlConfig،config_wifiSoftapResetAutoShutdownTimerConfig،config_wifiSoftapResetMaxClientSettingConfig. توجه داشته باشید که این موارد به طور پیشفرض رویtrueتنظیم شدهاند، به این معنی که مقادیر بازنشانی میشوند. این امر در صورتی که دستگاه جدید از پیکربندی پشتیبانی نکند، بسیار مهم است. - قابلیتهای سختافزاری:
-
config_wifi_softap_acs_supported -
config_wifi_softap_sae_supported - (از ۱۳ به بعد موجود است)
config_wifiSoftapOweTransitionSupported - (از ۱۳ به بعد موجود است)
config_wifiSoftapOweSupported -
config_wifi_softap_ieee80211ac_supported -
config_wifiSoftapIeee80211axSupported - (از ۱۳ به بعد موجود است)
config_wifiSoftapIeee80211beSupported -
config_wifiSoftapMacAddressCustomizationSupported -
config_wifiSoftapHeSuBeamformerSupported -
config_wifiSoftapHeSuBeamformeeSupported -
config_wifiSoftapHeMuBeamformerSupported -
config_wifiSoftapHeTwtSupported -
config_wifiSoftap24ghzSupported -
config_wifiSoftap5ghzSupported -
config_wifiSoftap6ghzSupported -
config_wifiSoftap60ghzSupported -
config_wifiSoftapAcsIncludeDfs
-
اعتبارسنجی
اندروید مجموعهای از تستهای واحد و تستهای مجموعه تست سازگاری (CTS) را برای اعتبارسنجی ویژگی هاتاسپات ارائه میدهد. ویژگی هاتاسپات همچنین میتواند با استفاده از مجموعه تست فروشنده (VTS) آزمایش شود.
تستهای واحد
با استفاده از آزمایشهای زیر، از صحت بستهی هاتاسپات اطمینان حاصل کنید.
آزمایشهای سرویس:
atest packages/modules/Wifi/service/tests/wifitests/آزمونهای مدیریتی:
atest packages/modules/Wifi/framework/tests/
تستهای مجموعه تست سازگاری (CTS)
از تستهای CTS برای اعتبارسنجی ویژگی هاتاسپات استفاده کنید. CTS زمان فعال شدن این ویژگی را تشخیص میدهد و بهطور خودکار تستهای مرتبط را لحاظ میکند.
برای شروع تستهای CTS، دستور زیر را اجرا کنید:
atest android.net.wifi.cts.WifiManagerTestمجموعه تست فروشنده (VTS)
اگر رابط HIDL پیادهسازی شده است، دستور زیر را اجرا کنید:
atest VtsHalWifiHostapdV1_2Targetاگر رابط AIDL پیادهسازی شده است، دستور زیر را اجرا کنید:
atest VtsHalHostapdTargetTest