نقطه اتصال Wi-Fi (برنامه کاربردی نرم‌افزاری)

‫Android از نقطه اتصال Wi-Fi (نقطه دسترسی نرم‌افزاری) ازجمله اتصال ازطریق نقطه اتصال Wi-Fi و نقاط اتصال Wi-Fi فقط محلی پشتیبانی می‌کند.

ویژگی نقطه دسترسی نرم‌افزاری امکان پیکربندی موارد زیر را فراهم می‌کند:

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

قابلیت‌های دستگاه تعیین می‌کند که این کنترل‌ها دردسترس باشند یا نه. Android 11 میاناهای برنامه‌سازی کاربردی‌ای را معرفی می‌کند که این قابلیت‌ها را به‌دست می‌آورند. سازندگان دستگاه می‌توانند قابلیت‌های پایه دستگاه را نیز بااستفاده از رونهادها مشخص کنند.

توسعه برنامه‌ها با میاناهای برنامه‌سازی کاربردی نقطه اتصال

پیاده‌سازی پیش‌فرض نقطه اتصال Wi-Fi بااستفاده از اینترنت همراه توسط برنامه «تنظیمات» «پروژه منبع باز Android»‏ (AOSP) ارائه می‌شود، اما همه میاناهای برنامه‌سازی کاربردی را برای پیکربندی 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. پیکربندی AP نرم برای اینترنت‌بخشی را با فراخوانی روش WifiManager#setSoftApConfiguration و ارائه نمونه SoftApConfiguration پیکربندی کنید. SoftApConfiguration را بااستفاده از کلاس SoftApConfiguration.Builder بسازید.
  2. با فراخوانی روش اتصال در TetheringManager#startTethering، اتصال را شروع کنید.

برای نقطه اتصال فقط محلی:

  1. نقطه اتصال فقط محلی را با پیکربندی AP نرم‌افزاری خاصی با فراخوانی روش WifiManager#startLocalOnlyHotspot شروع کنید.

پیاده‌سازی فهرست‌های مجاز و مسدودشده

یکی از الزامات معمول شرکت مخابراتی این است که کنترل دستگاه‌هایی را که اجازه دارند به «نقطه دسترسی نرم‌افزاری» متصل شوند دراختیار کاربر قرار دهد. چندین سازوکار برای انجام این کار وجود دارد:

  • محدود کردن حداکثر تعداد دستگاه‌هایی که می‌توانند بااستفاده از SoftApConfiguration.Builder#setMaxNumberOfClients به نقطه دسترسی نرم‌افزاری متصل شوند. حتماً عددی را مشخص کنید که کمتر از حداکثر تعداد کارخواه پشتیبانی‌شده توسط دستگاه باشد. می‌توانید حداکثر تعداد را از 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/سفت‌افزار را ارائه دهند:

سفارشی‌سازی

برای سفارشی‌سازی پیاده‌سازی، به سازندگان دستگاه توصیه می‌کنیم پیکربندی‌های شرکت مخابراتی و هم‌پوشانی‌های زیر را پیکربندی کنند که در 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) به برنامه کنترل‌کننده (برنامه «تنظیمات») منتقل می‌شود.
  • (از Android 13 دردسترس است) config_wifiSoftapPassphraseAsciiEncodableCheck: آیا گذرعبارت نقطه دسترسی نرم‌افزاری باید با کدبندی ASCII باشد یا نه.
  • config_wifiSoftapAutoUpgradeToBridgedConfigWhenSupported: ارتقا دادن یا ندادن خودکار پیکربندی تنظیم باند به باند دوگانه درطول بازیابی پیکربندی ابری وقتی دستگاه جدیدی پشتیبانی می‌شود.
  • (از Android 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
    • (از Android 13 دردسترس است) config_wifiSoftapOweTransitionSupported
    • (از Android 13 دردسترس است) config_wifiSoftapOweSupported
    • config_wifi_softap_ieee80211ac_supported
    • config_wifiSoftapIeee80211axSupported
    • (در Android 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) برای اعتبارسنجی ویژگی نقطه اتصال ارائه می‌دهد. ویژگی نقطه اتصال را می‌توان بااستفاده از Vendor Test Suite (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