نقطة اتصال Wi-Fi (نقطة اتصال افتراضية)

يتيح نظام التشغيل Android إمكانية استخدام نقطة اتصال Wi-Fi (نقطة وصول برمجية)، بما في ذلك إعداد التوصيل من خلال نقطة اتصال Wi-Fi ونقاط اتصال Wi-Fi محلية فقط.

تسمح ميزة "نقطة الوصول البرمجية" بضبط ما يلي:

  • معرّف SSID ومعرّف مجموعة الخدمات الأساسية (BSSID)
  • نوع الأمان (بما في ذلك WPA3)
  • معرّف SSID المخفي
  • نطاق التشغيل والقناة (بما في ذلك ACS)
  • الحد الأقصى لعدد العملاء المسموح بهم
  • قيمة مهلة الإيقاف التلقائي
  • قائمة الأجهزة المسموح بها وقائمة الأجهزة المحظورة للسماح للمستخدم بالتحكّم في الأجهزة المرتبطة
  • مستوى اختيار عنوان MAC بشكل انتقائي لمُعرّف مجموعة الخدمات الأساسي (BSSID) لنقطة الوصول
  • ‫802.11ax و802.11be

تحدّد إمكانات الجهاز مدى توفّر عناصر التحكّم هذه. يوفّر نظام التشغيل Android 11 واجهات برمجة تطبيقات للحصول على هذه الإمكانات. يمكن لمصنّعي الأجهزة أيضًا تحديد إمكانات الجهاز الأساسية باستخدام التراكبات.

يُرجى العِلم أنّ بعض واجهات برمجة التطبيقات هي واجهات نظام، ويتم حظرها من خلال الأذونات، وبالتالي لا يمكن لتطبيق "الإعدادات" التابع للنظام الوصول إليها.

تطوير تطبيقات باستخدام واجهات برمجة تطبيقات نقطة الاتصال

يوفّر تطبيق "الإعدادات" في AOSP عملية تنفيذ تلقائية لنقطة اتصال Wi-Fi مقيّدة، ولكنّها لا تستخدم جميع واجهات برمجة التطبيقات الخاصة بإعداد Soft AP.

لإتاحة الربط بالإنترنت من خلال نقطة اتصال أو نقطة اتصال للأجهزة المحلية فقط، يجب أن ينفّذ التطبيق الوظائف التالية:

  1. سجِّل دالة رد الاتصال للحصول على إمكانات الجهاز باستخدام WifiManager#registerSoftApCallback لنقطة اتصال محمولة متصلة أو WifiManager#registerLocalOnlyHotspotSoftApCallback لنقطة اتصال محمولة محلية فقط.

    تقدّم دالة رد الاتصال SoftApCallback الطرق التالية:

    • SoftApCallback#onCapabilityChanged: تقدّم هذه السمة معلومات حول إمكانات الجهاز، بما في ذلك الحد الأقصى لعدد العملاء المتوافقين وما إذا كان الجهاز متوافقًا مع SAE أو ACS.
    • SoftApCallback#onInfoChanged: تقدّم هذه السمة معلومات عن نقطة الوصول البرمجية النشطة (تكون صالحة مرة واحدة فقط بعد بدء التشغيل)، بما في ذلك معلومات النطاق والتردد.
    • SoftApCallback#onConnectedClientsChanged: تعرض هذه السمة قائمة بالعملاء المرتبطين. بالنسبة إلى كل عميل، يمكنك الحصول على عنوان MAC. للحصول على معلومات عنوان IP، استخدِم معاودة الاتصال TetheringEventCallback#onClientsChanged.
    • SoftApCallback#onStateChanged: تقدّم هذه السمة معلومات عن حالة نقطة الوصول البرمجية (Soft AP) أثناء تفعيلها وإيقافها.
    • SoftApCallback#onBlockedClientConnecting: تعرض هذه السمة معلومات العميل المحظور مع أحد الأسباب التالية للحظر: إما أنّ الجهاز قد وصل إلى الحد الأقصى لعدد العملاء الذين يمكنه دعمهم، أو أنّ العميل غير مصرّح له صراحةً بالاتصال.
    • SoftApCallback#onClientsDisconnected: تعرض هذه السمة قائمة بالعملاء الذين تم قطع اتصالهم. بالنسبة إلى كل عميل، يمكنك معرفة سبب قطع الاتصال.

بالنسبة إلى نقطة اتصال مرتبطة:

  1. اضبط إعدادات نقطة الوصول البرمجية لتفعيل الربط من خلال استدعاء طريقة WifiManager#setSoftApConfiguration وتوفير مثيل SoftApConfiguration. أنشئ SoftApConfiguration باستخدام فئة SoftApConfiguration.Builder.
  2. ابدأ الربط عن طريق استدعاء طريقة الربط في TetheringManager#startTethering.

لنقطة اتصال محلية فقط:

  1. ابدأ نقطة اتصال محلية فقط باستخدام إعدادات محدّدة لنقطة الوصول البرمجية من خلال استدعاء الطريقة WifiManager#startLocalOnlyHotspot.

تنفيذ قوائم السماح والحظر

من المتطلبات النموذجية التي تفرضها شركات الاتصالات توفير عناصر تحكّم للمستخدم في الأجهزة المسموح لها بالاقتران بنقطة الوصول البرمجية. وهناك عدة آليات لتنفيذ ذلك:

  • يمكنك تحديد الحد الأقصى لعدد الأجهزة التي يمكن ربطها بنقطة الوصول البرمجية باستخدام SoftApConfiguration.Builder#setMaxNumberOfClients. احرص على تحديد رقم أقل من الحد الأقصى لعدد الأجهزة التي يمكن للجهاز دعمها. يمكنك الحصول على الحد الأقصى من SoftApCapability#getMaxSupportedClients.
  • توفير تحكّم ديناميكي باستخدام القوائم المسموح بها والقوائم المحظورة:

    • يسمح الإعداد التلقائي لنقطة الوصول البرمجية (Soft AP) لجميع الأجهزة بالربط بنقطة الوصول البرمجية باستثناء الأجهزة التي تمت إضافة عناوين MAC الخاصة بها إلى SoftApConfiguration.Builder#setBlockedClientList.
    • في حال ضبط نقطة الوصول البرمجية باستخدام 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).
  • (متاحة من الإصدار 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) للتحقّق من صحة ميزة نقطة الاتصال. يمكن أيضًا اختبار ميزة نقطة الاتصال باستخدام حزمة اختبار المورّد (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