يتيح Android استخدام نقطة اتصال Wi-Fi (نقطة اتصال افتراضية)، بما في ذلك التوصيل من خلال نقطة اتصال Wi-Fi ونقاط اتصال Wi-Fi محلية فقط.
تسمح ميزة نقطة الاتصال الافتراضية بضبط ما يلي:
- SSID وBSSID
- نوع الأمان (بما في ذلك WPA3)
- معرّف SSID المخفي
- نطاق التشغيل والقناة (بما في ذلك ACS)
- الحد الأقصى لعدد العملاء المسموح بهم
- قيمة مهلة الإيقاف التلقائي
- القائمة المسموح بها والقائمة المحظورة للسماح للمستخدم بالتحكّم في الأجهزة المرتبطة
- مستوى اختيار عناوين MAC بشكل انتقائي لعنوان BSSID لنقطة الاتصال
- 802.11ax و802.11be
تحدّد إمكانات الجهاز مدى توفّر عناصر التحكّم هذه. يقدّم Android 11 واجهات برمجة تطبيقات للحصول على هذه الإمكانات. يمكن لمصنّعي الأجهزة أيضًا تحديد إمكانات الجهاز الأساسية باستخدام الطبقات الخارجية.
تطوير التطبيقات باستخدام واجهات برمجة التطبيقات لنقطة الاتصال
يوفّر تطبيق "الإعدادات" في مشروع Android مفتوح المصدر (AOSP) عملية تنفيذ تلقائية لنقطة اتصال Wi-Fi متصلة، ولكنّه لا يستخدم جميع واجهات برمجة التطبيقات لإعداد نقطة الاتصال الافتراضية.
لدعم التوصيل من خلال نقطة اتصال أو نقطة اتصال محلية فقط، يجب أن ينفّذ التطبيق الوظائف التالية:
تسجيل ردّ باستخدام
WifiManager#registerSoftApCallbackلنقطة اتصال متصلة أوWifiManager#registerLocalOnlyHotspotSoftApCallbackلنقطة اتصال محلية فقط، وذلك للحصول على إمكانات الجهاز.يوفّر الردّ
SoftApCallbackالطرق التالية:SoftApCallback#onCapabilityChanged: يوفّر معلومات عن إمكانات الجهاز، بما في ذلك الحد الأقصى لعدد العملاء المتاحين، وما إذا كان يتم دعم SAE أو ACS.SoftApCallback#onInfoChanged: يوفّر معلومات عن نقطة الاتصال الافتراضية قيد التشغيل (لا تكون صالحة إلا بعد بدء التشغيل)، بما في ذلك معلومات النطاق والتردد.SoftApCallback#onConnectedClientsChanged: يوفّر قائمة بالعملاء المتصلين. يمكنك الحصول على عنوان MAC لكل عميل. للحصول على معلومات عنوان IP، استخدِم الردّTetheringEventCallback#onClientsChanged.SoftApCallback#onStateChanged: يوفّر آخر الأخبار عن حالة نقطة الاتصال الافتراضية عند تفعيلها وإيقافها.SoftApCallback#onBlockedClientConnecting: يوفّر معلومات العميل المحظور مع أحد الأسباب التالية للحظر: وصل الجهاز إلى الحد الأقصى لعدد العملاء الذين يمكنه دعمهم أو لم يتم منح العميل إذنًا صريحًا بالاتصال.SoftApCallback#onClientsDisconnected: يوفّر قائمة بالعملاء الذين تم قطع اتصالهم. يمكنك الحصول على سبب قطع الاتصال لكل عميل.
بالنسبة إلى نقطة اتصال متصلة:
- اضبط إعدادات نقطة الاتصال الافتراضية للتوصيل من خلال استدعاء الـ
WifiManager#setSoftApConfigurationطريقة وتقديم مثيلSoftApConfiguration. أنشئSoftApConfigurationباستخدام الفئةSoftApConfiguration.Builder. - ابدأ التوصيل من خلال استدعاء طريقة التوصيل في
TetheringManager#startTethering.
بالنسبة إلى نقطة اتصال محلية فقط:
- ابدأ نقطة الاتصال المحلية فقط باستخدام إعدادات معيّنة لنقطة الاتصال الافتراضية بـ
استدعاء
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، ما يسمح للتطبيق المتحكّم (أي تطبيق الإعدادات) باتخاذ إجراء، مثلاً، طلب تأكيد من المستخدم ثم إضافة الجهاز إلى القائمة المسموح بها أو إلى القائمة المحظورة استنادًا إلى سلوك المستخدم.
- يتم حظر جميع الأجهزة التي تكون عناوين MAC الخاصة بها في
يُرجى العِلم أنّه لا يمكن للأجهزة استخدام وظيفة القائمة المسموح بها إلا إذا كانت متوافقة مع الجهاز. يمكنك التحقّق من توافق الجهاز باستخدام
SoftApCapability#areFeaturesSupported(SOFTAP_FEATURE_CLIENT_FORCE_DISCONNECT).- تسمح الإعدادات التلقائية لنقطة الاتصال الافتراضية لجميع الأجهزة بالاتصال بنقطة الاتصال الافتراضية، باستثناء الأجهزة التي تمت إضافة عناوين MAC الخاصة بها إلى
التنفيذ
لدعم التوصيل من خلال نقطة اتصال أو لدعم نقطة اتصال محلية فقط، يجب أن يوفّر مصنّعو الأجهزة تطبيق إعدادات وإطار عمل ودعم HAL/برامج ثابتة:
تطبيق "الإعدادات": يوفّر تطبيق "الإعدادات" في مشروع Android مفتوح المصدر (AOSP) أساسًا لضبط نقطة اتصال متصلة باستخدام معرّف SSID وبيانات اعتماد الأمان. يمكن استخدام هذا الرمز كما هو أو تعديله لتوفير إمكانات إضافية كما هو موضّح في تطوير التطبيقات باستخدام واجهات برمجة التطبيقات لنقطة الاتصال.
إطار العمل: يتيح رمز إطار عمل AOSP جميع الوظائف الموضّحة في تطوير التطبيقات باستخدام واجهات برمجة التطبيقات لنقطة الاتصال.
HAL/البرامج الثابتة لنقطة الاتصال: إما الإصدار 1.2 أو أعلى من 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).- (متاح من الإصدار 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_supportedconfig_wifi_softap_sae_supported- (متاح من الإصدار 13)
config_wifiSoftapOweTransitionSupported - (متاح من الإصدار 13)
config_wifiSoftapOweSupported config_wifi_softap_ieee80211ac_supportedconfig_wifiSoftapIeee80211axSupported- (متاح من الإصدار 13)
config_wifiSoftapIeee80211beSupported config_wifiSoftapMacAddressCustomizationSupportedconfig_wifiSoftapHeSuBeamformerSupportedconfig_wifiSoftapHeSuBeamformeeSupportedconfig_wifiSoftapHeMuBeamformerSupportedconfig_wifiSoftapHeTwtSupportedconfig_wifiSoftap24ghzSupportedconfig_wifiSoftap5ghzSupportedconfig_wifiSoftap6ghzSupportedconfig_wifiSoftap60ghzSupportedconfig_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