تزامن Wi-Fi STA / STA

تنظيم صفحاتك في مجموعات يمكنك حفظ المحتوى وتصنيفه حسب إعداداتك المفضّلة.

يقدم Android 12 مزامنة Wi-Fi STA / STA ، والتي تسمح للأجهزة بالاتصال بشبكتي Wi-Fi في وقت واحد. تتيح هذه الميزة الاختيارية الوظائف التالية.

  • جعله قبل الانقطاع : يقوم الجهاز بإجراء اتصال بشبكة Wi-Fi جديدة قبل قطع الاتصال الحالي. ينتج عن هذا انتقالات أكثر سلاسة عند التبديل بين شبكات Wi-Fi
  • اتصال محلي فقط واتصال إنترنت متزامن : يتصل الجهاز بشبكة محلية فقط دون مقاطعة اتصال توفير الإنترنت الأساسي للجهاز.
  • اتصال مقيد ومتزامن بالإنترنت : يتصل الجهاز بشبكة مقيدة (متاحة فقط لبعض التطبيقات ذات الامتيازات) دون مقاطعة اتصال توفير الإنترنت الأساسي للجهاز.
  • (Android 13 أو أعلى) شبكات متعددة متزامنة مع اتصال بالإنترنت : يتصل الجهاز بشبكتين غير مقيدتين ومتاحتين لجميع التطبيقات ، ويوفران اتصالاً بالإنترنت.

تصف هذه الصفحة سلوك الجهاز عند تمكين هذه الميزة وتفاصيل التنفيذ للشركات المصنعة للأجهزة والموردين.

تطبيق

يجب أن تدعم الأجهزة ما يلي من أجل تنفيذ التزامن Wi-Fi STA / STA:

  • يجب أن تدعم شريحة Wi-Fi أو البرنامج الثابت اتصالين متزامنين من STA. يجب أن يدعم البرنامج الثابت جميع مجموعات القنوات والنطاقات لكلا الوصلات. لتجنب مشاكل الأداء ، نوصي باستخدام شريحة Wi-Fi 2x2 + 2x2 DBS.

  • يجب أن يدعم الجهاز واجهات برمجة التطبيقات التالية في الإصدار 1.5 من HAL الخاص بالمورد

    • IWifiChip.setMultiStaPrimaryConnection()
    • IWifiChip.setMultiStaUseCase()
  • يجب أن تحتوي مجموعة واجهة HAL Wi-Fi على واجهتي STA متزامنتين معروضتين باستخدام تنسيق تحديد مثل [{STA} <= 2, ...] . لمزيد من المعلومات ، راجع التزامن متعدد الواجهات لشبكة Wi-Fi .

إذا تم استيفاء هذه المتطلبات المسبقة ، فنفذ مزامنة Wi-Fi STA / STA عن طريق القيام بما يلي:

  1. قم بتمكين وظيفة واحدة أو أكثر بشكل فردي باستخدام تراكبات موارد وقت التشغيل (معطلة افتراضيًا).

    • جعل قبل الفاصل : config_wifiMultiStaNetworkSwitchingMakeBeforeBreakEnabled
    • اتصال محلي فقط وإنترنت متزامن: config_wifiMultiStaLocalOnlyConcurrencyEnabled
    • اتصال مقيد واتصال إنترنت متزامن: config_wifiMultiStaRestrictedConcurrencyEnabled
    • شبكات متعددة متزامنة مع اتصال بالإنترنت : config_wifiMultiStaMultiInternetConcurrencyEnabled
  2. تحقق من صحة كل تطبيق كما هو موضح في الأقسام الخاصة بكل منها أدناه.

لدعم توافق Wi-Fi STA / STA بشكل أفضل ، نوصي بأن تستخدم الأطر والتطبيقات المخصصة لـ OEM طريقة NetworkCallback#onCapabilitiesChanged() بدلاً من WifiManager#getConnectionInfo() ، والتي تُرجع فقط WifiInfo لشبكة واحدة وتم إهمالها في Android 12 لمزيد من المعلومات ، راجع واجهة برمجة تطبيقات طلب شبكة Wi-Fi للاتصال من نظير إلى نظير .

اصنع قبل الفاصل

تسمح وظيفة التجهيز المسبق للأجهزة بالاتصال بشبكة Wi-Fi جديدة مع الحفاظ على اتصال شبكة Wi-Fi الحالي ، وفصلها فقط عن الشبكة القديمة عندما تتصل بنجاح بشبكة Wi-Fi الجديدة ولديها إمكانية الوصول إلى الإنترنت.

تعالج حالة الاستخدام قبل الفاصل المشكلات التالية في Android 11 أو الإصدارات الأقدم ، حيث يجب قطع اتصال الجهاز بشبكة Wi-Fi الحالية قبل الاتصال بشبكة جديدة (فاصل قبل الإنشاء).

  • عند الاتصال بشبكة جديدة ، قد يكتشف الجهاز أن لديه كلمة مرور Wi-Fi غير صحيحة محفوظة أو أن الشبكة الجديدة ليس لديها وصول إلى الإنترنت. يؤدي هذا إلى إجبار الجهاز على العودة إلى الشبكة القديمة ، مما يؤدي إلى قدر كبير من الوقت بدون اتصال Wi-Fi.

  • تم قطع الاتصال بالشبكة القديمة بشكل مفاجئ ، مما يعني إغلاق جميع المقابس. غالبًا ما لا تتفاعل التطبيقات بشكل جيد مع فقدان الاتصال المفاجئ وقد يؤدي ذلك إلى تجربة المستخدم لبضع ثوان دون اتصال بالإنترنت حتى يتم إنشاء الاتصال الجديد بالكامل.

  • تتغير الشبكة الافتراضية مرتين ، من شبكة Wi-Fi القديمة إلى شبكة خلوية ، ثم من شبكة خلوية إلى شبكة Wi-Fi الجديدة. يؤدي هذا إلى تفاعل التطبيقات مع تغييرات الشبكة مرتين. يجب أن يقضي الجهاز أيضًا وقتًا قصيرًا في استخدام البيانات الخلوية.

يستخدم التدفق قبل الفاصل فقط لمبدلات شبكة Wi-Fi التلقائية التي يبدأها نظام التشغيل. تستخدم محولات الشبكة التي يبدأ تشغيلها المستخدم التدفق القديم الفاصل قبل الإنشاء ، حيث يتم فصل الشبكة السابقة تمامًا قبل توصيل الشبكة الجديدة. في حالات معينة ، يتم استخدام تدفق الفاصل قبل الإنتاج حتى في المحولات التلقائية التي يبدأها نظام التشغيل ، على سبيل المثال ، عند التبديل بين شبكتين تم تكوينهما لاستخدام عنوان MAC الخاص بالمصنع.

يمكن للتطبيقات التحقق مما إذا كانت حالة الاستخدام هذه مدعومة على الجهاز باستخدام WifiManager#isMakeBeforeBreakWifiSwitchingSupported() API.

التحقق من صحة الصنع قبل الكسر

للتحقق من صحة التنفيذ الخاص بك ، قم بتشغيل مفتاح شبكة Wi-Fi تلقائيًا (من خلال ضمان توفر شبكة ذات قوة إشارة أقوى من الشبكة المتصلة حاليًا) وتحقق من أن الجهاز يحافظ على الاتصال الحالي أثناء الاتصال بالشبكة الجديدة. لعرض حالة كل من واجهات Wi-Fi والتحقق من اتصال كلاهما ، استخدم الأمر التالي.

adb shell wpa_cli -i wlan0 status ; echo ; adb shell wpa_cli -i wlan1 status

إذا لم يكن للشبكة الجديدة اتصال ، يحاول الجهاز الاتصال بالشبكة ، مع الحفاظ على الاتصال بالشبكة الحالية ، وإحباط المحاولة عندما يكتشف أن الشبكة الجديدة لا تحتوي على إنترنت. ثم يستمر الجهاز في استخدام الاتصال الحالي كشبكة Wi-Fi أساسية.

اتصال محلي فقط وإنترنت متزامن

تتيح وظيفة الاتصال المحلي فقط والاتصال بالإنترنت المتزامنة للأجهزة الاتصال باتصال محلي فقط ، مثل الاتصال بجهاز إنترنت الأشياء ، بالتزامن مع شبكة توفير الإنترنت الأساسية. تعمل هذه الوظيفة على تحسين تجربة المستخدم عند الاتصال المباشر بأجهزة إنترنت الأشياء ، مثل الكاميرات ، وهو أمر ممكن من خلال واجهة برمجة تطبيقات WifiNetworkSpecifier المضافة في Android 10.

في نظام التشغيل Android 11 والإصدارات الأقدم ، تنفصل الأجهزة عن شبكة Wi-Fi الأساسية عند الاتصال بجهاز إنترنت الأشياء ، مما يؤدي إلى فقدان الاتصال بالإنترنت (ما لم يكن للجهاز نوع نقل آخر متاح ، مثل البيانات الخلوية).

يمكن للتطبيقات التحقق مما إذا كانت هذه الوظيفة مدعومة على الجهاز باستخدام واجهة برمجة تطبيقات WifiManager#isStaConcurrencyForLocalOnlyConnectionsSupported() .

لمزيد من المعلومات حول التغييرات على وظيفة الاتصال المحلي فقط والاتصال بالإنترنت المتزامنة في Android 12 ، راجع واجهة برمجة تطبيقات طلب شبكة Wi-Fi للاتصال من نظير إلى نظير .

التحقق من الاتصال المحلي فقط والإنترنت

للتحقق من صحة هذه الوظيفة ، استخدم اختبارات CTS و ACTS التالية:

  • CTS: MultiStaConcurrencyWifiNetworkSpecifierTest
  • أعمال: WifiStaConcurrencyNetworkRequestTest

متزامن مقيد والاتصال بالإنترنت

تتيح وظيفة الاتصال المقيد والاتصال بالإنترنت المتزامن للجهاز الاتصال بشكل متزامن بشبكة Wi-Fi أساسية للمستخدم وشبكة Wi-Fi مقيدة متاحة فقط لتطبيقات مختارة.

يمكن للتطبيقات التحقق مما إذا كانت هذه الوظيفة مدعومة على الجهاز باستخدام واجهة برمجة تطبيقات WifiManager#isStaConcurrencyForRestrictedConnectionsSupported() .

لتمكين جهاز من الاتصال بشبكات Wi-Fi الثانوية المقيدة ، اتبع الخطوات التالية:

  1. أضف اقتراحات شبكة Wi-Fi مع تعيين setOemPaid أو setOemPrivate على "صحيح".

  2. في ConnectivityManager ، قم بتقديم طلب NetworkRequest المقابلة:

عندما يكتشف الجهاز نتائج المسح بشبكة مطابقة لاقتراح OEM المدفوع أو الخاص بالشركة المصنعة للمعدات الأصلية ، فإنه يتصل بها تلقائيًا كشبكة ثانوية.

التحقق من صحة الاتصال المتزامن المقيد والاتصال بالإنترنت

للتحقق من صحة هذه الوظيفة ، استخدم اختبارات CTS و ACTS التالية:

  • CTS: MultiStaConcurrencyRestrictedWifiNetworkSuggestionTest
  • أعمال: WifiStaConcurrencyNetworkRequestTest

شبكات متعددة متزامنة مع اتصال بالإنترنت

متاحة لنظام Android 13 أو أعلى ، تتيح الشبكات المتعددة المتزامنة مع ميزة الاتصال بالإنترنت للجهاز الاتصال بشكل متزامن بشبكتين (APs) كلاهما غير مقيد (جميع التطبيقات لها وصول) وتوفر الوصول إلى الإنترنت.

يمكن للتطبيقات التحقق مما إذا كانت هذه الميزة مدعومة على الجهاز باستخدام طريقة WifiManager#isStaConcurrencyForMultiInternetSupported() .

إذا كانت الميزة مدعومة ، يمكن للتطبيقات ذات الامتيازات تمكين الميزة باستخدام طريقة WifiManager#setStaConcurrencyForMultiInternetMode(int mode) . تحتوي الميزة على الأوضاع التالية:

للاستعلام عن وضع الميزة النشطة حاليًا ، استخدم طريقة WifiManager#getStaConcurrencyForMultiInternetMode() .

عند تمكين الميزة ، استخدم الخطوات التالية لطلب شبكة Wi-Fi إضافية توفر الإنترنت.

  1. قم بإنشاء محدد شبكة Wi-Fi باستخدام WifiNetworkSpecifier.Builder . اختر نطاقًا للمحدد باستخدام طريقة setBand() . لا تحدد SSID أو BSSID حيث يتم تحديد الشبكة الإضافية للنطاق المحدد بواسطة إطار عمل Wi-Fi.

  2. باستخدام ConnectivityManager ، قم بإنشاء NetworkRequest مع إمكانية NET_CAPABILITY_INTERNET .

  3. أضف المحدد إلى طلب الشبكة مع مثيل NetworkCallback لتتبع حالة الطلب ، وإصدار الطلب إلى ConnectivityManager . في حالة توفر شبكة محفوظة بالنطاق المطلوب في نتيجة المسح ، وكان الاتصال بالشبكة ناجحًا ، يتم استدعاء NetworkCallback.onAvailable() في كائن رد الاتصال.

التحقق من الشبكات المتعددة المتزامنة مع اتصال الإنترنت

للتحقق من صحة هذه الوظيفة ، استخدم اختبار CTS التالي:

  • CTS: MultiStaConcurrencyMultiInternetWifiNetworkTest

إرشادات رقاقة Wi-Fi للمورد

بالنسبة لموردي شرائح Wi-Fi ، استخدم الإرشادات التالية لدعم مزامنة Wi-Fi STA / STA.

يجب أن تدعم شريحة Wi-Fi اتصالات STA المتزامنة المزدوجة. هذا يعني أنه يدعم ما يلي:

  • تحتوي كل واجهة STA على MAC فريد يمكن برمجته بواسطة إطار العمل.
  • يمكن إنشاء واجهة STA الثانوية وتدميرها ديناميكيًا.
  • يمكن توصيل كل STA بمعرف SSID مختلف (إما داخل نفس النطاق أو نطاق مختلف).
  • يمكن توصيل كل STA بنفس SSID (إما داخل نفس النطاق أو نطاق مختلف). يجب عدم توصيل كلا STA أبدًا بنفس BSSID.

يجب أن تعمل الميزات الهامة على أساس كل واجهة ويجب أن تكون متوفرة على الواجهة الأساسية. فيما يلي قائمة بهذه الميزات الهامة:

  • يجب دعم التجوال على الواجهة الأساسية على الأقل (تم ضبطها باستخدام IWifiChip.setMultiStaPrimaryConnection() ). إذا تم دعم التجوال على كلا الواجهتين ، فيجب ألا تتعارض القرارات المتعلقة باتصال واحد مع الاتصال المتزامن الثاني. على سبيل المثال ، يجب ألا تتجول إحدى الواجهات إلى BSSID للاتصال الآخر.

  • يجب دعم APF (وعمليات إلغاء التحميل الأخرى مثل ARP و NS) على الواجهة الأساسية على الأقل (تم ضبطها باستخدام IWifiChip.setMultiStaPrimaryConnection() ).

  • يجب أن تعمل إحصائيات طبقة الارتباط على أساس كل واجهة.

فيما يلي تطبيقات شرائح Wi-Fi الموصى بها لسيناريوهات التزامن المختلفة:

  • يجب أن تسمح شريحة Wi-Fi لإطار العمل باستدعاء IWifiChip.setMultiStaUseCase() بأحد الثوابت التالية لتحديد الوظيفة الحالية:

    • DUAL_STA_TRANSIENT_PREFER_PRIMARY : تحديد وظيفة Make-Before-Break. يجب إعطاء الأولوية لجودة الاتصال الأساسي على الاتصال الثانوي.
    • DUAL_STA_NON_TRANSIENT_UNBIASED : يحدد الاتصال المحلي فقط والاتصال بالإنترنت المتزامن أو وظيفة الاتصال المقيدة والاتصال بالإنترنت المتزامنة . يجب إعطاء الأولوية لجودة كلا التوصلين على قدم المساواة.
  • نظرًا لأن STAs المزدوجة المتزامنة يمكن أن تؤدي إلى أوضاع تشغيل MCC و SCC و DBS ، يجب أن يختار تطبيق البائع أفضل تكوين لاسلكي عندما يستدعي إطار العمل IWifiChip.setMultiStaUseCase() للإشارة إلى الوظيفة. فيما يلي إرشادات عامة:

    • يُفضل 2x2 + 2x2 DBS إذا كان ذلك متاحًا.
    • تجنب 1x1 + 1x1 DBS إن أمكن بسبب التأثير المفرط على جودة الاتصال. بدلاً من ذلك ، تفضل MCC.
    • يجب أن تكون دورة عمل مركز التحكم في المحرك قابلة للتكوين بواسطة برنامج التشغيل أو البرنامج الثابت للوظائف المختلفة. لا يقوم إطار العمل بتعيين دورة عمل MCC مباشرة ، ولكنه يستعلم عن هذه المعلومات باستخدام StaLinkLayerIfaceStats.timeSliceDutyCycleInPercent .
    • في حالة استخدام مركز التحكم في المحرك ، نوصي بدورات العمل التالية بين التوصيلات الأساسية والثانوية:

      • DUAL_STA_TRANSIENT_PREFER_PRIMARY : 70٪ أساسي ، 30٪ ثانوي.
      • DUAL_STA_NON_TRANSIENT_UNBIASED : 50٪ أساسي ، 50٪ ثانوي.