Google は、黒人コミュニティに対する人種平等の促進に取り組んでいます。取り組みを見る

Wi-Fi STA / STA同時実行

Android 12では、Wi-Fi STA / STA同時実行機能が導入されています。これにより、デバイスは2つのWi-Fiネットワークに同時に接続できます。このオプション機能により、以下の機能が有効になります。

  • メイク前にブレーク:デバイスは、既存の接続を切断する前に、新しいのWi-Fiネットワークへの接続を行います。これにより、Wi-Fiネットワークを切り替える際の移行がスムーズになります
  • ローカルのみとインターネット接続の同時:デバイスは、デバイスの主要なインターネット接続提供を中断することなく、ローカルのみのネットワークに接続します。
  • 同時制限され、インターネット接続:デバイスの主なインターネット接続提供を中断せずに(のみ、特定の特権のアプリケーションが利用できる)制限付きネットワークにデバイスが接続します。

このページでは、この機能が有効になっている場合のデバイスの動作と、デバイスの製造元とベンダーの実装の詳細について説明します。

実装

Wi-Fi STA / STA同時実行を実装するには、デバイスが以下をサポートしている必要があります。

  • Wi-Fiチップまたはファームウェアは、2つの同時STA接続をサポートする必要があります。ファームウェアは、両方の接続ですべてのチャネルとバンドの組み合わせをサポートする必要があります。パフォーマンスの問題を回避するために、2x2 + 2x2DBS対応のWi-Fiチップを使用することをお勧めします。

  • デバイスは、中次のAPIサポートしている必要があり、ベンダーHALバージョン1.5を

    • IWifiChip.setMultiStaPrimaryConnection()
    • IWifiChip.setMultiStaUseCase()
  • HALのWi-Fiインタフェース組み合わせのようなspecifactionフォーマットを用いて露光2つの同時STAインターフェースを有していなければならない[{STA} <= 2, ...]詳細については、を参照のWi-Fiマルチインタフェースの同時実行を

これらの前提条件が満たされている場合は、次の手順を実行してWi-Fi STA / STAの同時実行性を実装します。

  1. 個別に使用して1つまたは複数の機能を有効にするランタイムリソースオーバーレイを(デフォルトでは無効)。

    • メイク前にブレークconfig_wifiMultiStaNetworkSwitchingMakeBeforeBreakEnabled
    • 同時ローカルのみとインターネット接続config_wifiMultiStaLocalOnlyConcurrencyEnabled
    • 同時制限やインターネット接続config_wifiMultiStaRestrictedConcurrencyEnabled
  2. 以下のそれぞれのセクションで説明されているように、各実装を検証します。

より良いサポートのWi-Fi STA / STAの同時実行のために、我々は、OEMカスタマイズフレームワークやアプリケーションが使用することをお勧めしますNetworkCallback#onCapabilitiesChanged()の代わりの方法WifiManager#getConnectionInfo()だけを返し、 WifiInfo単一のネットワーク用とAndroidの12で廃止されましたが。詳細については、ピア・ツー・ピア接続のためのWi-FiネットワークへのリクエストAPIを

休憩前に作る

それが成功した新しいのWi-Fiネットワークに接続し、インターネットへのアクセスを持っている場合にのみ、古いネットワークから切断、既存のWi-Fiネットワーク接続を維持しながら、メイク・ビフォア・ブレーク関数は、新しいのWi-Fiネットワークにconnnectにデバイスを可能にします。

make-before-breakユースケースは、Android 11以下で、デバイスが新しいネットワークに接続する前に既存のWi-Fiネットワークから切断する必要がある次の問題に対処します(break-before-make)。

  • 新しいネットワークに接続すると、デバイスは、誤ったWi-Fiパスワードが保存されているか、新しいネットワークにインターネットアクセスがないことを検出する場合があります。これにより、デバイスは古いネットワークに強制的に戻され、Wi-Fi接続がない状態でかなりの時間がかかります。

  • 古いネットワークが突然切断されます。これは、すべてのソケットが閉じられることを意味します。多くの場合、アプリは接続の突然の喪失にうまく反応しません。これにより、新しい接続が完全に確立されるまで、ユーザーがインターネットに接続できなくなるまで数秒かかる場合があります。

  • デフォルトのネットワークは、古いWi-Fiネットワークからセルラーに、次にセルラーから新しいWi-Fiネットワークに2回変更されます。これにより、アプリはネットワークの変更に2回反応します。また、デバイスはセルラーデータの使用に短時間を費やす必要があります。

make-before-breakフローは、OSによって開始された自動Wi-Fiネットワークスイッチにのみ使用されます。ユーザーが開始するネットワークスイッチは、新しいネットワークが接続される前に以前のネットワークが完全に切断される、従来のブレークビフォアメイクフローを使用します。場合によっては、OSによって開始された自動切り替えでも、ブレークビフォアメイクフローが使用されます。たとえば、両方とも工場出荷時のMACアドレスを使用するように構成された2つのネットワークを切り替える場合などです。

アプリは、このユースケースは、使用するデバイスでサポートされているかどうかを確認することができますWifiManager#isMakeBeforeBreakWifiSwitchingSupported() APIを。

make-before-breakの検証

実装を検証するには、自動Wi-Fiネットワークスイッチをトリガーし(現在接続されているネットワークよりも強い信号強度のネットワークが利用可能であることを確認します)、新しいネットワークに接続している間、デバイスが既存の接続を維持していることを確認します。両方のWi-Fiインターフェイスのステータスを表示し、両方が接続されていることを確認するには、次のコマンドを使用します。

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

新しいネットワークに接続がない場合、デバイスは既存のネットワークとの接続を維持しながらネットワークへの接続を試み、新しいネットワークにインターネットがないことを検出すると試行を中止します。その後、デバイスは既存の接続をプライマリWi-Fiネットワークとして引き続き使用します。

ローカルのみの同時接続とインターネット接続

同時ローカル専用及びインターネット接続機能装置が同時に一次インターネット提供ネットワークと、そのようなのIoTデバイスへの接続として、ローカル専用たっに接続することを可能にします。この関数は、直接を通して可能であるカメラなどのIoTデバイス、に接続しているユーザーエクスペリエンス向上WifiNetworkSpecifier Androidの10で追加APIを。

Android 11以前では、デバイスはIoTデバイスに接続するときにプライマリWi-Fiネットワークから切断され、インターネット接続が失われます(デバイスにセルラーデータなどの別のトランスポートタイプが利用可能な場合を除く)。

アプリでは、この機能が使用するデバイスでサポートされているかどうかを確認することができますWifiManager#isStaConcurrencyForLocalOnlyConnectionsSupported() APIを。

Androidの12での同時ローカルのみ、インターネット接続機能の変更に関する詳細については、ピア・ツー・ピア接続のためのWi-FiネットワークへのリクエストAPIを

ローカルのみのインターネット接続の検証

この機能を検証するには、次のCTSおよびACTSテストを使用します。

  • CTS: MultiStaConcurrencyWifiNetworkSpecifierTest
  • ACTS: WifiStaConcurrencyNetworkRequestTest

同時制限およびインターネット接続

同時制限され、インターネット接続機能はconccurentlyユーザーとアプリケーションを選択するだけで使用可能です制限のWi-Fiネットワークのための主要なWi-Fiネットワークに接続するデバイスを可能にします。

アプリでは、この機能が使用するデバイスでサポートされているかどうかを確認することができますWifiManager#isStaConcurrencyForRestrictedConnectionsSupported() APIを。

デバイスがセカンダリ制限付きWi-Fiネットワークに接続できるようにするには、次の手順に従います。

  1. 追加のWi-Fiネットワークの提案をしてsetOemPaidsetOemPrivate trueに設定します。

  2. ConnectivityManager 、ファイルNetworkRequest 、対応する機能を持ちます。

デバイスは、OEM有料またはOEMプライベート提案に一致するネットワークでスキャン結果を検出すると、セカンダリネットワークとして自動的に接続します。

制限付きインターネット接続の同時検証

この機能を検証するには、次のCTSおよびACTSテストを使用します。

  • CTS: MultiStaConcurrencyRestrictedWifiNetworkSuggestionTest
  • ACTS: WifiStaConcurrencyNetworkRequestTest

ベンダーWi-Fiチップのガイドライン

Wi-Fiチップベンダーの場合、次のガイドラインを使用してWi-Fi STA / STAの同時実行性をサポートします。

Wi-Fiチップは、デュアル同時STA接続をサポートする必要があります。これは、以下をサポートすることを意味します。

  • 各STAインターフェイスには、フレームワークによってプログラム可能な一意のMACがあります。
  • セカンダリSTAインターフェイスは、動的に作成および破棄できます。
  • 各STAは、異なるSSIDに接続できます(同じ帯域内または異なる帯域内のいずれか)。
  • 各STAは、同じSSIDに接続できます(同じ帯域内または異なる帯域内のいずれか)。 2台のSTAは、同じBSSIDに接続してはいけません。

重要な機能は、インターフェイスごとに動作する必要があり、プライマリインターフェイスで使用できる必要があります。以下は、これらの重要な機能のリストです。

  • 少なくともプライマリインターフェイス上でサポートされなければならないローミング(セット使用IWifiChip.setMultiStaPrimaryConnection()ローミングが両方のインターフェイスでサポートされている場合、1つの接続に関する決定が2番目の同時接続と衝突してはなりません。たとえば、一方のインターフェイスがもう一方の接続のBSSIDにローミングしてはなりません。

  • APF(ならびにARPおよびNSのような他のオフロード)は、少なくともプライマリインターフェイス上でサポートされなければならない(使用セットIWifiChip.setMultiStaPrimaryConnection()

  • リンク層の統計は、インターフェイスごとに動作する必要があります。

以下は、さまざまな同時実行シナリオで推奨されるWi-Fiチップの実装です。

  • Wi-Fiチップは、フレームワークを呼び出すことができるようにする必要がありますIWifiChip.setMultiStaUseCase()現在の関数を指定するには、次の定数のいずれかで:

    • DUAL_STA_TRANSIENT_PREFER_PRIMARY :指定メイク・ビフォアブレーク機能。プライマリ接続の品質は、セカンダリ接続よりも優先する必要があります。
    • DUAL_STA_NON_TRANSIENT_UNBIASED :指定同時ローカルのみ、インターネット接続または同時制限やインターネット接続機能。両方の接続の品質を等しく優先する必要があります。
  • デュアル同時STAが操作のMCC、SCC、およびDBSモードにつながる可能性があるため、フレームワークが呼び出したときに、ベンダーの実装では、最良の無線設定を選択する必要がありますIWifiChip.setMultiStaUseCase()関数を示すために。一般的なガイドラインは次のとおりです。

    • 可能な場合は、2x2 + 2x2DBSをお勧めします。
    • 接続品質に過度の影響を与えるため、可能であれば1x1 + 1x1DBSを避けてください。代わりに、MCCを優先します。
    • MCCのデューティサイクルは、さまざまな機能のためにドライバまたはファームウェアによって構成可能である必要があります。フレームワークは、直接MCCのデューティサイクルを設定しますが、使用してこの情報を照会しませんStaLinkLayerIfaceStats.timeSliceDutyCycleInPercent
    • MCCを使用する場合は、プライマリ接続とセカンダリ接続の間に次のデューティサイクルをお勧めします。

      • DUAL_STA_TRANSIENT_PREFER_PRIMARY :プライマリ70%、二次30%。
      • DUAL_STA_NON_TRANSIENT_UNBIASED :50%、二次、50%の主。