Wi-Fi STA/STA eşzamanlılığı

Android 12'de kablosuz ağ STA/STA eşzamanlılığı sunuluyor. Bu, cihazların aynı anda iki kablosuz ağa bağlanmasına olanak tanır. İsteğe bağlı bu özellik, aşağıdaki işlevleri etkinleştirir.

  • Aradan önce başlatma: Cihaz yeni bir kablosuz ağa bağlantı kurar. önce yapmanız gerekenleri öğrenin. Bu durum, Kablosuz ağlar arasında geçiş yaparken daha akıcı geçişler
  • Eşzamanlı yalnızca yerel ve internet bağlantısı: Cihaz yalnızca yerel bir ağa bağlandığında (cihazın çalışmasını kesintiye uğratmadan) bağlantıyı sağlayan birincil bağlantı.
  • Eşzamanlı kısıtlı ve internet bağlantısı: Cihaz kısıtlı bir ağa bağlandığında (yalnızca belirli ayrıcalıklı uygulamalarda kullanılabilir) Google'ın ana bilgisayar bağlantısını otomatik olarak sağlar.
  • (Android 13 veya sonraki sürümler) Eş zamanlı birden çok internet bağlantısı olan ağlar: Cihaz Her ikisi de kısıtlanmamış ve tüm uygulamalar tarafından kullanılabilen iki ağa bağlanabilir. ve internet bağlantısı sağlar.

Bu sayfada, bu özellik etkinleştirildiğinde cihaz davranışı açıklanmaktadır ve cihaz üreticileri ve satıcılar için uygulama ayrıntıları.

Uygulama

Cihazların, Kablosuz STA/STA özelliğini uygulamak için aşağıdakileri desteklemesi gerekir: eşzamanlılık:

  • Kablosuz çipi veya donanım yazılımı iki eşzamanlı STA'yı desteklemelidir bağlantılar. Donanım yazılımı tüm kanal ve bant kombinasyonlarını desteklemelidir kullanabilirsiniz. Performans sorunları yaşamamak için 2x2+2x2 DBS özellikli Wi-Fi çipi bulunmalıdır.

  • Cihaz, AIDL veya HIDL'de aşağıdaki API'leri desteklemelidir: IWifiChip uygulanması.

    • IWifiChip.setMultiStaPrimaryConnection(String ifName)
    • IWifiChip.setMultiStaUseCase(MultiStaUseCase useCase)
  • HAL kablosuz ağ arayüzü kombinasyonunda iki eşzamanlı STA arayüzü bulunmalıdır [{STA} <= 2, ...] gibi bir spesifikasyon biçimi kullanılarak gösterilir. Örneğin, daha fazla bilgi için Kablosuz çoklu arayüz eşzamanlılığı.

Bu ön koşullar karşılanırsa aşağıdaki adımları izleyerek kablosuz ağ STA/STA eşzamanlılığını uygulayın: şu:

  1. Şunu kullanarak bir veya daha fazla işlevi tek tek etkinleştirin: çalışma zamanı kaynak yer paylaşımları (Google Chrome varsayılan olarak ayarlanır).

    • Aradan önce başlatma: config_wifiMultiStaNetworkSwitchingMakeBeforeBreakEnabled
    • Eşzamanlı yalnızca yerel ve internet bağlantısı: config_wifiMultiStaLocalOnlyConcurrencyEnabled
    • Eşzamanlı kısıtlı ve internet bağlantısı: config_wifiMultiStaRestrictedConcurrencyEnabled
    • İnternet bağlantısıyla eşzamanlı olarak birden fazla ağ: config_wifiMultiStaMultiInternetConcurrencyEnabled
  2. Her uygulamayı ilgili bölümlerde açıklandığı şekilde doğrulayın.

Kablosuz ağ STA/STA eşzamanlılığını daha iyi desteklemek için OEM tarafından özelleştirilmiş çerçeveler ve uygulamalar, NetworkCallback#onCapabilitiesChanged() yöntemini kullanır , WifiManager#getConnectionInfo() yerine yalnızca WifiInfo değerini döndürür. Android 12'de desteği sonlandırılmıştır. Örneğin, daha fazla bilgi için Eşler arası bağlantı için Wi-Fi Network Request API.

Aradan öncesini hazırlama

Aradan önce yap işlevi, cihazların yeni bir kablosuz ağa bağlanmasına olanak tanır. mevcut kablosuz ağ bağlantısını korurken, yalnızca Yeni ağa başarıyla bağlandığında eski ağ bağlantısını kesme Wi-Fi ve internet erişimi var.

İlk ara kullanım senaryosu, Cihazın bağlantısının kesilmesi gereken Android 11 veya önceki sürümler Yeni bir ağa bağlanmadan önce mevcut kablosuz ağdan (yapmadan önce ara).

  • Yeni bir ağa bağlanırken cihaz, bir ağ bağlantısı olduğunu ve Kablosuz şifrenin kaydedilmiş olması veya yeni ağın kaydetmediği internet erişimi vardır. Bu işlem, cihazı eski sürüme dönmeye zorlar Bu da kablosuz bağlantının çok uzun süre kullanılmasına neden oluyor.

  • Eski ağın bağlantısı aniden kopuyor. Bu da, yuvalar kapanıyor. Uygulamalar çoğu durumda değişimlerdeki ani kayıplara bağlantı kurulabilir ve bu da kullanıcı yeni gelene kadar internet bağlantısı olmadan birkaç saniye kurulduğundan emin olun.

  • Varsayılan ağ iki kez değişir: Eski kablosuz ağdan hücresel ağa, sonra hücreselden yeni kablosuz ağa bağlayın. Bu durum, uygulamaların ağ iki kez değiştirilir. Ayrıca, cihaz üzerinde saati hücresel veri kullanarak sürdürebilir.

Aradan önce başlatma akışı yalnızca otomatik kablosuz ağda kullanılır anahtar sayısı. Kullanıcı tarafından başlatılan ağ anahtarları, önceki ağın tamamen bağlantısının kesildiği yapımdan önce ayrılma akışı kontrol edin. Bazı durumlarda, çalıştırmadan önce-yapma akışı, kullanıcı tarafından başlatılan otomatik geçişlerde bile İşletim sistemi (örneğin, her ikisi de fabrika MAC adresi.

Uygulamalar, bu kullanım alanının desteklenip desteklenmediğini kontrol etmek için WifiManager#isMakeBeforeBreakWifiSwitchingSupported() API.

Aradan önce oluşturmayı doğrulama

Uygulamanızı doğrulamak için otomatik bir kablosuz ağ geçişi tetikleyin (Google.com'un sağladığı sinyalden daha güçlü bir sinyal gücüne olup olmadığını kontrol edin ve cihazın, ağ bağlantısı ve ağ bağlantısı mevcut bağlantıyı devre dışı bırakmalısınız. Her iki kablosuz ağ arayüzünün durumunu görüntülemek ve bunların birbirine bağlı olduğunu doğrulamak için aşağıdaki komutu kullanın.

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

Yeni ağda bağlantı yoksa cihaz ağa bağlanmaya çalışır, aynı zamanda mevcut ağla bağlantıyı keser ve tespit ettiğinde denemeyi iptal eder yeni ağda internet yok demektir. Ardından cihaz birincil kablosuz ağ olarak ayarlayın.

Eşzamanlı yalnızca yerel ve internet bağlantısı

Eşzamanlı yalnızca yerel ve internet bağlantısı işlevi, cihazların şunları yapmasına olanak tanır: bir IoT cihazı bağlantısı gibi yalnızca yerel bir bağlantıya ile eşzamanlı olarak izlemesi gerekir. Bu işlev şu şekilde iyileşir: IoT cihazlarına doğrudan bağlanarak sağladığı kullanıcı deneyimini Bunu, eklenen WifiNetworkSpecifier API'si aracılığıyla yapabilirsiniz: Android 10.

Android 11 ve önceki sürümlerde cihazların birincil kablosuz ağa bağlanarak internet bağlantısı (cihazın başka bir aktarım türü yoksa (Hücresel veri gibi).

Uygulamalar, bu işlevin cihazda desteklenip desteklenmediğini kontrol etmek için WifiManager#isStaConcurrencyForLocalOnlyConnectionsSupported() API.

Eşzamanlı yalnızca yerel ve internete yönelik değişiklikler hakkında daha fazla bilgi bağlantı işlevi hakkında daha fazla bilgi için bkz. Eşler arası bağlantı için Wi-Fi Network Request API.

Yalnızca yerel bağlantıyı ve internet bağlantısını doğrulayın

Bu işlevi doğrulamak için MultiStaConcurrencyWifiNetworkSpecifierTest CTS testi.

Eşzamanlı kısıtlı veri ve internet bağlantısı

Eşzamanlı kısıtlı ve internet bağlantısı işlevi, cihazın kullanıcının birincil kablosuz ağına eşzamanlı olarak bağlanmasını sağlar. yalnızca belirli uygulamaların kullanabileceği kısıtlı kablosuz ağ.

Uygulamalar, bu işlevin cihazda desteklenip desteklenmediğini kontrol etmek için WifiManager#isStaConcurrencyForRestrictedConnectionsSupported() API.

Bir cihazın ikincil kısıtlanmış kablosuz ağlara bağlanmasını sağlamak için şu adımları uygulayın:

  1. Ekle Kablosuz ağ önerileri şununla: setOemPaid veya setOemPrivate değerine ayarlanır.

  2. ConnectivityManager içinde, ilgili dosya ile bir NetworkRequest dosyası oluşturun özellikler:

Cihaz, ücretli OEM veya ücretli OEM ile eşleşen bir ağ ile tarama sonuçlarını algıladığında OEM özel önerisi; bu otomatik olarak ikincil ağ olarak bağlanır.

Eşzamanlı kısıtlanmış ve internet bağlantısını doğrulayın

Bu işlevi doğrulamak için MultiStaConcurrencyRestrictedWifiNetworkSuggestionTest CTS testi.

İnternet bağlantısıyla eşzamanlı olarak birden fazla ağ

Android 13 veya sonraki sürümlerde kullanılabilen eş zamanlı internet bağlantısı olan birden fazla ağ özelliği, cihazın Her ikisi de kısıtlanmamış iki ağa aynı anda bağlanmalıdır (tüm uygulamaların erişimi vardır) ve internet erişimi sağlar.

Uygulamalar, bu özelliğin cihazda desteklenip desteklenmediğini kontrol etmek için WifiManager#isStaConcurrencyForMultiInternetSupported() yöntemidir.

Özellik destekleniyorsa ayrıcalıklı uygulamalar, özelliği WifiManager#setStaConcurrencyForMultiInternetMode(int mode) yöntemini çağırın. İlgili içeriği oluşturmak için kullanılan özelliği aşağıdaki modlara sahiptir:

Şu anda etkin olan özellik modunu sorgulamak için WifiManager#getStaConcurrencyForMultiInternetMode() yöntemidir.

Özellik etkinleştirildiğinde, ek bir veri toplama isteğinde bulunmak için aşağıdaki adımları uygulayın: kablosuz ağ sağlayan bir ağ olarak düşünün.

  1. Şunu kullanarak bir kablosuz ağ tanımlayıcısı oluştur: WifiNetworkSpecifier.Builder. Şunu kullanarak tanımlayıcı için bir bant seçin: setBand() yöntemidir. için ek ağ olarak SSID veya BSSID'yi belirtmeyin belirtilen bant Wi-Fi çerçevesi tarafından seçilir.

  2. Kullanım ConnectivityManager bir NetworkRequest oluşturun NET_CAPABILITY_INTERNET olanağı sunar.

  3. Tanımlayıcıyı, ağ isteğine NetworkCallback ve örneği göndererek isteğin durumunu takip edin ve isteği ConnectivityManager. İstenen kayışa sahip kayıtlı bir ağ tarama sonucunda kullanılabilir ve ağ bağlantısı başarılı, NetworkCallback.onAvailable() geri çağırma nesnesinde çağrılır.

İnternet bağlantısıyla eş zamanlı birden çok ağı doğrulayın

Bu işlevi doğrulamak için aşağıdaki CTS testini kullanın:

  • CTS: MultiStaConcurrencyMultiInternetWifiNetworkTest

Tedarikçi firma kablosuz ağ çipi yönergeleri

Wi-Fi çipi tedarikçi firmalarını desteklemek amacıyla aşağıdaki yönergeleri kullanın Wi-Fi STA/STA eşzamanlılığı.

Kablosuz çipin çift eşzamanlı STA bağlantısını desteklemesi gerekir. Bu demek oluyor ki şunları destekler:

  • Her STA arayüzünde çerçeve tarafından programlanabilen benzersiz bir MAC bulunur.
  • İkincil STA arayüzü dinamik olarak oluşturulup kaldırılabilir.
  • Her STA farklı bir SSID'ye (aynı kayış veya farklı bir kayış).
  • Her STA aynı SSID'ye (aynı kayış veya farklı bir kayış). İki STA hiçbir zaman aynı BSSID'ye bağlı olduğundan emin olun.

Kritik özellikler arayüz başına çalışmalı ve birincil arayüzde de mevcuttur. Bu kritik önem taşıyan risklerin özellikler:

  • Dolaşım, en azından birincil arayüzde desteklenmelidir ( IWifiChip.setMultiStaPrimaryConnection()) bilgileri gösterilir. Dolaşım şurada destekleniyorsa: her iki arayüzde de çalışır. Bir bağlantıyla ilgili kararlar, ikinci eşzamanlı bağlantı. Örneğin, bir arayüz dolaşımda olmamalıdır için BSSID'yi tekrarlamanız gerekir.

  • APF (ve ARP ve NS gibi diğer boşaltımlar) en az birincil arayüz ( IWifiChip.setMultiStaPrimaryConnection()) bilgileri gösterilir.

  • Bağlantı katmanı istatistikleri, arayüz bazında çalışmalıdır.

Aşağıda, farklı ağlar için önerilen kablosuz çip uygulamaları eşzamanlılık senaryoları:

  • Kablosuz çipi, çerçevenin şunu çağırmasına izin vermelidir: IWifiChip.setMultiStaUseCase() değeri için aşağıdaki sabit değerlerden birini kullanarak geçerli işlevi belirtin:

    • DUAL_STA_TRANSIENT_PREFER_PRIMARY: Make-Before-Break işlevi. Birincil bağlantının kalitesi birincil bağlantıya göre öncelikli olmalıdır.
    • DUAL_STA_NON_TRANSIENT_UNBIASED: eş zamanlı yalnızca yerel bağlantı ve internet bağlantısı veya eş zamanlı kısıtlı ve internet bağlantısı işlevini kullanın. Her ikisinin de kalitesi bağlantılara eşit öncelik verilmelidir.
  • Çünkü çift eşzamanlı STA'lar MM, SCC ve DBS modlarına tedarikçi uygulaması, en iyi radyo istasyonunu çerçeve tarafından IWifiChip.setMultiStaUseCase() komutu çağrıldığında konfigürasyon fonksiyonunu belirtin. Genel kurallar şu şekildedir:

    • Varsa 2x2+2x2 DBS tercih edilir.
    • bağlantı kalitesini artırır. Bunun yerine MM hesabını tercih edin.
    • MM görev döngüsü, sürücü veya donanım yazılımı tarafından açıklayacağım. Çerçeve, MM görev döngüsünü belirlememiştir ancak bu bilgileri StaLinkLayerIfaceStats.timeSliceDutyCycleInPercent
    • MM kullanıyorsanız, yeni bir müşteri hizmetleri temsilcisiyle ve ikincil bağlantılar:

      • DUAL_STA_TRANSIENT_PREFER_PRIMARY: %70 birincil, %30 ikincil.
      • DUAL_STA_NON_TRANSIENT_UNBIASED: %50 birincil, %50 ikincil.