نقطه اتصال Wi-Fi (Soft AP)

اندروید از هات‌اسپات وای‌فای (Soft AP) پشتیبانی می‌کند که شامل اتصال به اینترنت از طریق هات‌اسپات وای‌فای و هات‌اسپات‌های وای‌فای محلی می‌شود.

ویژگی soft AP امکان پیکربندی موارد زیر را فراهم می‌کند:

  • SSID و BSSID
  • نوع امنیت (شامل WPA3)
  • SSID مخفی
  • باند و کانال عملیاتی (شامل ACS)
  • حداکثر تعداد کلاینت‌های مجاز
  • مقدار زمان خاموش شدن خودکار
  • لیست مجاز و لیست مسدود شده برای کنترل کاربر بر دستگاه‌های مرتبط
  • سطح تصادفی‌سازی MAC برای AP BSSID
  • 802.11ax و 802.11be

قابلیت‌های دستگاه، میزان دسترسی به این کنترل‌ها را تعیین می‌کند. اندروید ۱۱ رابط‌های برنامه‌نویسی کاربردی (API) را برای دستیابی به این قابلیت‌ها معرفی می‌کند. تولیدکنندگان دستگاه همچنین می‌توانند قابلیت‌های پایه دستگاه را با استفاده از همپوشانی‌ها مشخص کنند.

توسعه برنامه‌ها با APIهای هات‌اسپات

پیاده‌سازی پیش‌فرض یک هات‌اسپات وای‌فای متصل توسط برنامه تنظیمات پروژه متن‌باز اندروید (AOSP) ارائه می‌شود، با این حال، این برنامه از تمام APIهای مربوط به پیکربندی Soft AP استفاده نمی‌کند.

برای پشتیبانی از اتصال به اینترنت از طریق هات‌اسپات یا هات‌اسپات محلی، برنامه باید عملکردهای زیر را انجام دهد:

  1. برای دریافت قابلیت‌های دستگاه، با استفاده از 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 : فهرستی از کلاینت‌های قطع‌شده را ارائه می‌دهد. برای هر کلاینت، می‌توانید دلیل قطع ارتباط را دریافت کنید.

برای یک هات اسپات متصل:

  1. پیکربندی soft AP را برای اتصال با فراخوانی متد WifiManager#setSoftApConfiguration و ارائه یک نمونه SoftApConfiguration پیکربندی کنید. SoftApConfiguration با استفاده از کلاس SoftApConfiguration.Builder بسازید.
  2. اتصال اینترنت را با فراخوانی متد tethering در TetheringManager#startTethering آغاز کنید.

برای هات‌اسپات فقط محلی:

  1. با فراخوانی متد 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 فراخوانی می‌شود و به برنامه کنترل‌کننده (یعنی برنامه تنظیمات ) اجازه می‌دهد اقدامی انجام دهد، به عنوان مثال، از کاربر درخواست تأیید کند و سپس دستگاه را بسته به رفتار کاربر به لیست مجاز یا لیست مسدود شده اضافه کند.

    توجه داشته باشید که دستگاه‌ها فقط در صورتی می‌توانند از قابلیت لیست مجاز استفاده کنند که در دستگاه پشتیبانی شود. می‌توانید پشتیبانی دستگاه را با استفاده از SoftApCapability#areFeaturesSupported( SOFTAP_FEATURE_CLIENT_FORCE_DISCONNECT ) تأیید کنید.

پیاده‌سازی

برای پشتیبانی از اتصال به اینترنت از طریق هات‌اسپات یا پشتیبانی از هات‌اسپات محلی، تولیدکنندگان دستگاه باید یک برنامه تنظیمات، چارچوب و پشتیبانی HAL/firmware ارائه دهند:

  • برنامه تنظیمات: برنامه تنظیمات پروژه متن‌باز اندروید (AOSP) یک مبنای اولیه برای پیکربندی یک هات‌اسپات اتصال به اینترنت با SSID و اطلاعات امنیتی ارائه می‌دهد. این کد را می‌توان به همین صورت استفاده کرد یا برای ارائه قابلیت‌های اضافی، همانطور که در بخش «توسعه برنامه‌ها با APIهای هات‌اسپات» توضیح داده شده است، اصلاح کرد.

  • چارچوب: کد چارچوب AOSP از تمام قابلیت‌های شرح داده شده در «توسعه برنامه‌ها با APIهای هات‌اسپات» پشتیبانی می‌کند.

  • HAL/firmware برای هات‌اسپات: یا HIDL IHostapd.hal نسخه ۱.۲ یا بالاتر، یا 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 ) به برنامه کنترل (برنامه تنظیمات) اطلاع داده می‌شود.
  • (از ۱۳ به بعد موجود است) 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