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

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

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

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

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

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

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

لدعم التوصيل من خلال نقطة اتصال أو نقطة اتصال محلية فقط، يجب أن ينفّذ التطبيق الوظائف التالية:

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

    يوفّر الردّ SoftApCallback الطرق التالية:

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

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

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

بالنسبة إلى نقطة اتصال محلية فقط:

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

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

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

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

    • تسمح الإعدادات التلقائية لنقطة الاتصال الافتراضية لجميع الأجهزة بالاتصال بنقطة الاتصال الافتراضية، باستثناء الأجهزة التي تمت إضافة عناوين 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