Android の Wi-Fi ネットワーク選択

このページでは、Android 12 で Wi-Fi ネットワークの選択と切り替えに使用されるアルゴリズムと手順の概要を示します。Android は、接続されているネットワークの品質を継続的に評価し、利用可能なネットワークの品質を査定します。

自動接続のライフサイクル

ここでは、Android デバイスが利用可能な Wi-Fi ネットワークを評価して接続するプロセスについて説明します。

  1. 画面がオンかオフかに応じて、デバイスは次のいずれかの方法で利用可能なネットワークをスキャンします。

    • 画面がオン(接続済み): Android 接続サブシステムは、(画面がオンのときのスキャンの定義に従って)現在の接続がスキャンをスキップできる程度に良好かどうかを定期的に評価します。接続がスキャンをスキップできる程度に良好でない場合、接続サブシステムは利用可能なネットワークを検出するためのスキャンをトリガーします。こうしたスキャンは、位置情報システムやアプリ(設定アプリを含む)などの他のシステム コンポーネントからもトリガーできます。
    • 画面がオン(切断): Android 接続サブシステムは、指数バックオフのスケジュールに沿って定期的なスキャンを実行します。モジュールは、受信したすべてのスキャン結果を評価し、接続に最適なネットワークの選択を試みます。
    • 画面がオフ(切断): ホスト CPU は、画面がオフになるとすぐに優先ネットワーク オフロード(PNO)スキャンを使用して優先ネットワークのリストでファームウェアをプログラムします。ファームウェアは、いずれかの優先ネットワークを検出すると、ホストをスリープ状態から復帰させます。AOSP は、デバイスで PNO がサポートされていると想定しています。

    WifiManager#allowAutojoinGlobal(boolean) メソッドは、自動接続を無効にするために使用できます。これは、デバイス メーカーが限定的な状況(モバイル以外の事前構成済みデバイスなど)で使用できる特権 API です。

    デバイスが接続済みで config_wifi_framework_enable_associated_network_selection オーバーレイが false に設定されている場合、接続スキャンは実行されず、スキャン結果によってネットワーク選択がトリガーされることはありません。この設定は、デバイスの接続が切断されたときは効力を持ちません。つまり、その場合も接続スキャンとネットワーク選択が行われます。

  2. スキャン結果が評価されます。

    • デバイスが Wi-Fi ネットワークに接続されている場合、フレームワークは現在のネットワークがネットワークの選択をスキップできる程度に良好かどうかを評価します。

      ネットワークは、次のいずれかの条件が満たされる場合、ネットワーク選択をスキップできる程度に良好であると見なされます。

      • 前回のネットワーク選択からの経過時間が 10 秒未満である。
      • ユーザーが最近手動でネットワークに接続した(「最近」については config_wifiSufficientDurationAfterUserSelectionMilliseconds オーバーレイで構成可能)。
      • デバイスがオンライン登録(OSU)接続に接続されている。
      • 次の要件をすべて満たしている。

        • RSSI が必要とされる RSSI しきい値を上回っているか、接続を介した十分なトラフィックの流れがある(RSSI とトラフィックしきい値については、画面がオンのときのスキャンを参照)。
        • ネットワークが検証済み(インターネットに接続済み)であるか、インターネット アクセスなしの使用がユーザーによって承認されている。
        • ネットワークが定額制である。
    • ネットワーク選択をスキップできる程度にネットワークが良好である場合、それ以上のアクションは実行されません。

    • 接続されている Wi-Fi ネットワークが十分に良好でない場合、またはデバイスがネットワークに接続されていない場合、フレームワークはネットワーク ノミネータを呼び出し、フィルタされたスキャン結果に基づいて接続候補の Wi-Fi ネットワークのリストを生成します。ネットワーク ノミネータは既存の Wi-Fi 構成を検索し、見つからない場合は接続候補となるネットワーク用の新しい構成を作成します。

    • スキャン結果は、エントリ RSSI(config_wifi_framework_wifi_score_entry_rssi_threshold_24GHzconfig_wifi_framework_wifi_score_entry_rssi_threshold_5GHzconfig_wifiFrameworkScoreEntryRssiThreshold6ghz オーバーレイで構成可能)より低い RSSI を持つ BSSID を除外するためにフィルタされます。また、ブロックされている BSSID も除外されます。BSSID は、接続の失敗の繰り返し、接続の頻繁な切断、AP からの明示的なリクエストに基づいて、関連付けを試行しないように一定期間ブロックされます(MBO-OCE)。BSSID のブロックについては、後述の SSID と BSSID のブロックをご覧ください。

    • デバイスが急速に移動したときは、オプションとしてスキャン結果がさらにフィルタされ、RSSI が急激に変化している BSSID(これは BSSID がデバイスの移動と連動していないことを示します)が除外されます。この最適化の有効化と無効化は config_wifiHighMovementNetworkSelectionOptimizationEnabled オーバーレイで構成できます。また、config_wifiHighMovementNetworkSelectionOptimizationScanDelayMs および config_wifiHighMovementNetworkSelectionOptimizationRssiDelta オーバーレイでは、スキャン結果の安定性要件(スキャン結果で十分な時間間隔を置いて RSSI が変化する)を構成できます。

  3. フレームワークは候補スコアラを実行して、各サービスセット識別子(SSID)の候補に対するスコアを生成します。SSID の候補には、複数の基本サービスセット識別子(BSSID)の候補(ネットワーク ノミネータによって生成される)が含まれる場合があります。スコアが最も高い候補が使用される候補になります。

  4. フレームワークはユーザーによる接続選択アルゴリズムを実行します。これにより、候補スコアラに基づく使用される候補の代わりに、ユーザーが選択したネットワークが新たな使用される候補となる場合があります。

  5. フレームワークは、使用される候補が現在接続されているネットワークに一致するかどうかを確認します。一致と見なされるためには、次のいずれかを満たしている必要があります。

    • 使用される候補と接続済み Wi-Fi ネットワークの BSSID が同一である。
    • ファームウェア ローミングが利用可能な場合(BSSID ブロックリスト機能を含む)、使用される候補と接続されたネットワークが同一の SSID とセキュリティ タイプを持つ。

    使用される候補が現在接続されているネットワークと一致する場合、それ以上のアクションは実行されません。使用される候補がネットワークと一致しない場合、そのデバイスは使用される候補に関連付けられます。

アプリが Wi-Fi Network Request API を使用しているとき、自動ネットワーク接続は無効になります。この API は、システムをオーバーライドしてインターネット接続なしの LAN を作成します(ただし、デュアル同時接続ステーションをサポートするデバイスの場合は例外です)。

接続されているネットワークの評価

Android フレームワークまたはファームウェアは、接続されているネットワークの品質を定期的に評価します。このセクションでは、画面がオンの場合とオフの場合それぞれについて、接続されているネットワークの評価方法を説明します。

この評価は、前述のネットワークの選択に加えて行われます。

画面がオン

Android フレームワークは、接続されているネットワークを次の方法で評価します。

  1. Wi-Fi サービスが、RSSI とリンクレイヤの統計情報を 3 秒ごと(config_wifiPollRssiIntervalMilliseconds オーバーレイで構成可能)にポーリングします。
  2. Wi-Fi サービスが、RSSI とリンクレイヤの統計情報に基づいて接続スコアを計算します。
  3. Wi-Fi サービスがスコアを接続サービスに渡します。接続サービスはこのスコアを使用して、Wi-Fi ネットワークに接続するか、モバイル ネットワークなどの利用可能な別のネットワーク タイプに接続するかどうかを決定します。

画面がオフ

接続されているネットワークに対する評価がフレームワークによって開始されることはありませんが、他のコンポーネント(位置情報サービスなど)によってスキャンが開始されると、ネットワークの選択プロセスが発生することがあります。ファームウェアはネットワーク品質を評価し、ネットワーク品質が低い場合はローミングするか、(最終的に)ネットワークとの関連付けを解除して、ホストをスリープ状態から復帰させます。

接続スキャン

デバイスの画面がオンになっているか、オフになっているか、Wi-Fi に接続されているか、画面がオフで Wi-Fi に接続されていないかに基づいてスキャンが実行されます。

画面がオン

画面がオンになっているときは、フレームワークがスキャン決定をトリガーする間隔が長くなります。スキャン決定の間隔は、config_wifiDisconnectedScanIntervalScheduleSecconfig_wifiConnectedScanIntervalScheduleSecconfig_wifiSingleSavedNetworkConnectedScanIntervalScheduleSec オーバーレイ(いずれも整数の配列)で構成されます。デフォルトでは、スキャンは 20 秒、40 秒、80 秒、160 秒の指数バックオフ間隔で発生し、その後のスキャンは 160 秒間隔(上記のオーバーレイのデフォルト値)で実行される可能性があります。

画面の状態が変化する(つまり画面のオンとオフが切り替わる)たびに、スキャンの指数バックオフ間隔はリセットされ、20 秒から再開されます。

(Android 13 以降)実行時にさまざまなスキャン間隔が必要とされる場合、OEM の特権アプリは、WifiManager#setScreenOnScanSchedule(screenOnScanSchedule) API を呼び出して、画面がオンのときのスキャン スケジュールを動的に設定できます。

スキャンを実行するかスキップするかは、現在のネットワーク接続がスキャンをスキップできる程度に良好かどうかによって決まります。次のいずれかの条件を満たす場合、接続はスキャンをスキップできる程度に良好です。

  • デバイスがオンライン登録(OSU)接続に接続されている。
  • 接続を介した十分なトラフィックの流れがある(下記のトラフィックしきい値を参照)。
  • RSSI が必要とされる RSSI しきい値を上回っており(下記の RSSI しきい値を参照)、かつ、ネットワーク選択が最近(デフォルトでは 10 分以内ですが、config_wifiConnectedHighRssiScanMinimumWindowSizeSec オーバーレイで構成できます)実行され、かつ、ネットワークが検証済み(インターネットに接続済み)であるか、インターネット アクセスなしの使用がユーザーによって承認されている。

RSSI とトラフィックのしきい値は次のとおりです。

  • RSSI: 2.4 GHz 帯では -73 dBm 超(config_wifi_framework_wifi_score_low_rssi_threshold_24GHz オーバーレイで構成可能)、5 GHz 帯と 6 GHz 帯では -70 dBm 超(config_wifi_framework_wifi_score_low_rssi_threshold_5GHz および config_wifiFrameworkScoreLowRssiThreshold6ghz オーバーレイで構成可能)
  • トラフィック(送信または受信): 16 パケット毎秒(pps)超(config_wifiFrameworkMinPacketPerSecondActiveTraffic オーバーレイで構成可能)

デバイスが接続済みで画面がオンになっているとき: 接続されたスコアラは、RSSI や転送されたパケット数などのシグナルを確認して、Wi-Fi 品質を定期的にモニタリングします。Wi-Fi 品質が低いと判断された場合(下記参照)、デバイスがデュアル同時接続ステーションをサポートしていれば、スキャンがトリガーされます。config_wifiLowConnectedScoreThresholdToTriggerScanForMbb オーバーレイを使用して、スキャンをトリガーするスコアしきい値を構成できます。config_wifiLowConnectedScoreScanPeriodSeconds オーバーレイを使用して、スキャンの期間を構成できます。

画面がオフで Wi-Fi に接続

画面がオフで、デバイスが Wi-Fi ネットワークに接続されているときは、ファームウェア(Wi-Fi SoC)がローミング スキャンを実行します。画面がオフのとき、フレームワークはスキャンを実行しません。

画面がオフで Wi-Fi に接続されていない(切断状態)

画面がオフで Wi-Fi が切断されているときは、ファームウェアが SSID に対する PNO スキャンを実行します。フレームワークは、スキャンする SSID のリストとスキャンに使用するチャネルのリストでファームウェアを構成します。構成された SSID が見つかると、ファームウェアはフレームワークをスリープ状態から復帰させます。

また、フレームワークは、ファームウェアが PNO スキャンを実行する間隔を構成します。デバイスのモビリティ状態によって、さまざまなスキャン間隔が選択されます。モビリティが低い(デバイスが静止している)状態では、最初の 3 回のスキャンの間隔は 60 秒(config_wifiStationaryPnoScanIntervalMillis オーバーレイで制御)、その後のスキャンの間隔は 180 秒です(オーバーレイの 3 倍に固定)。モビリティが高い状態では、最初の 3 回のスキャンの間隔は 20 秒(config_wifiMovingPnoScanIntervalMillis オーバーレイで制御)、その後のスキャンの間隔は 60 秒です(オーバーレイの 3 倍に固定)。

ネットワーク ノミネータ

ネットワーク ノミネータは、以下のようなネットワークについて構成(WifiConfiguration)を検索または作成します。

  • 現在利用可能なネットワーク(スキャン結果から判断)、または現在接続されているネットワーク(信頼できないスキャン結果の中にない場合がある)。
  • RSSI が最小限のネットワーク。最小限の RSSI は 2.4 GHz 帯では -80 dBm、5 GHz 帯と 6 GHz 帯では -77 dBm で、config_wifi_framework_wifi_score_entry_rssi_threshold_24GHzconfig_wifi_framework_wifi_score_entry_rssi_threshold_5GHzconfig_wifiFrameworkScoreEntryRssiThreshold6ghz オーバーレイで構成可能です。
  • 前回の接続の失敗などが原因でブロックされていない。
  • 使用不可であることをネットワーク自身が明示していない(例: MBO/OCE を使用)。
  • デバイスで使用できる認証情報によりネットワークの関連付けが可能。

使用されるネットワーク ノミネータは次のとおりです。

  • 保存済みネットワーク ノミネータ: すべての保存済みネットワーク(保存済みの Passpoint サブスクリプションを含む)を評価します。
  • 推薦ネットワーク ノミネータ: Suggestion API を使用して、アプリが提供するすべてのネットワーク(推薦される Passpoint サブスクリプションを含む)を評価します。
  • 外部評価済みネットワーク ノミネータ: ネットワーク接続オプションをデバイスに提供する OEM のメカニズム。詳しくは、外部ネットワーク評価プロバイダをご覧ください。

候補スコアラ

候補スコアラは、各候補ネットワークを評価してスコアを計算します。ThroughputScorer(デフォルトのスコアラ)のスコアは以下に基づいて計算されます。

  • 基本スコアは RSSI に基づいて計算されます。RSSI の上限は、2.4 GHz 帯では -73 dBm、5 GHz 帯と 6 GHz 帯では -70 dBm です(config_wifi_framework_wifi_score_low_rssi_threshold_24GHzconfig_wifi_framework_wifi_score_low_rssi_threshold_5GHzconfig_wifiFrameworkScoreLowRssiThreshold6ghz オーバーレイで構成可能)。
  • スコアブーストは、テクノロジー、チャネル周波数、帯域幅、RSSI、チャネル条件、空間ストリームの最大数などのパラメータから得られる推定スループットに基づいて計算されます。スコアブーストは、config_wifiFrameworkThroughputBonusNumerator および config_wifiFrameworkThroughputBonusDenominator オーバーレイで構成可能で、config_wifiFrameworkThroughputBonusLimit オーバーレイで指定される最大値以下に制限されます。
  • ユーザーまたはアプリが最近選択した候補ネットワークは、config_wifiFrameworkLastSelectionMinutes オーバーレイで構成できる期間について高いスコアブーストを獲得します(その期間の間、ユーザー以外が選択するネットワークより優先的に選択されることが保証されます)。
  • 現在のネットワークと一致する候補は、config_wifiFrameworkCurrentNetworkBonusMin および config_wifiFrameworkCurrentNetworkBonusPercent オーバーレイで構成されるスコアブーストを獲得します(RSSI とスループットに基づくスコアの割合に基づいて、構成可能な最小値を下限とする追加ボーナスを獲得します)。
  • セキュアなネットワークには、オープン ネットワークより高いスコアが与えられます。ボーナスは config_wifiFrameworkSecureNetworkBonus オーバーレイで構成されます。
  • 定額制(無料)ネットワークには、従量制(有料)ネットワークより高いスコアが与えられます。ボーナスは config_wifiFrameworkUnmeteredNetworkBonus オーバーレイで構成されます。
  • 保存済みネットワークには、Suggestion API で推薦されるネットワークより高いスコアが与えられます。ボーナスは config_wifiFrameworkSavedNetworkBonus オーバーレイで構成されます。
  • 信頼できないネットワーク(Suggestion API でリクエスト可能)には、他のネットワークより低いスコアが与えられます。
  • 以前インターネットに接続されていないことが検出されたネットワークは、インターネットにアクセスできる別のネットワークに現在デバイスが接続されている場合、スコアが 0 になります。

保存済み / 推薦、定額制 / 従量制のデフォルトのボーナス(つまり、デフォルトのオーバーレイ値)によって、保存済み、推薦、従量制、定額制の厳密な優先順位が次のように決定されます。

  1. 保存済みの定額制ネットワーク
  2. 推薦される定額制ネットワーク
  3. 保存済みの従量制ネットワーク
  4. 推薦される従量制ネットワーク

保存済みの定額制(無料)ネットワークは、常に保存済みの従量制(有料)ネットワークより優先的に選択されます。この厳密な優先順位は、(ユーザーまたはアプリにより)最近選択されたスコアボーナスによってオーバーライドされる場合があります。

フレームワークには複数の候補スコアラがインストールされている場合がありますが、同時にアクティブにできるのは 1 つだけです。他のスコアラは、(代替アルゴリズムを調べるための)指標として使用できます。Android 11 では、デフォルトのスコアラは ThroughputScorer です。

SSID と BSSID のブロック

フレームワークは SSID および / または BSSID をブロックできます。それらがブロックされると、一時的または恒久的に接続で考慮されなくなります。

BSSID のブロック

BSSID のブロックは、特定の失敗タイプ(下記の失敗タイプのリストを参照)ごとに、連続失敗カウンタとストリーク カウンタの 2 つの失敗カウンタを保持することで機能します。失敗が発生すると、次のことが起こります。

  • 対応する失敗タイプのカウンタが加算されます。
  • 失敗タイプの失敗しきい値に達すると、次のことが起こります。
    • BSSID がブロックされます。
    • その失敗のストリーク カウンタが加算されます。

BSSID がブロックされる期間は、(構成可能な)ベース値(config_wifiBssidBlocklistMonitorBaseBlockDurationMs または config_wifiBssidBlocklistMonitorBaseLowRssiBlockDurationMs オーバーレイで RSSI に応じて指定)から開始され、構成可能な上限(config_wifiBssidBlocklistMonitorFailureStreakCap オーバーレイで指定)まで指数関数的に増加します。同じ BSSID で失敗が連続して発生すると、期間が増加します。ブロック期間は、失敗ストリークに応じてベース期間から指数関数的に増加します。つまり、失敗ストリークが 2 の場合、ベース期間の 4 倍になります。

BSSID ブロックのしきい値は失敗の理由によって異なり、各しきい値は以下のオーバーレイを使用してカスタマイズできます。

  • AP が MBO/OCE の「新しい STA を処理できない」コードを使用して関連付けを拒否した: config_wifiBssidBlocklistMonitorApUnableToHandleNewStaThreshold
  • このネットワークのインターネット検証が失敗した: config_wifiBssidBlocklistMonitorNetworkValidationFailureThreshold
  • 間違ったパスワード認証の失敗コード: config_wifiBssidBlocklistMonitorWrongPasswordThreshold
  • EAP ネットワークの EAP 認証失敗の失敗コード: config_wifiBssidBlocklistMonitorEapFailureThreshold
  • 関連付けの拒否、その他の一般的な関連付けの拒否: config_wifiBssidBlocklistMonitorAssociationRejectionThreshold
  • 関連付けがタイムアウトした: config_wifiBssidBlocklistMonitorAssociationTimeoutThreshold
  • 認証失敗、その他の一般的な認証失敗: config_wifiBssidBlocklistMonitorAuthenticationFailureThreshold
  • DHCP 失敗、DHCP のプロビジョニングの失敗: config_wifiBssidBlocklistMonitorDhcpFailureThreshold
  • 異常な切断、デバイスが接続後すぐにネットワークから切断された: config_wifiBssidBlocklistMonitorAbnormalDisconnectThreshold時間枠は config_wifiBssidBlocklistAbnormalDisconnectTimeWindowMs で構成可能です。

BSSID ブロックリストの消去条件

次の場合、BSSID はブロックリストから消去されます。

  • Wi-Fi の切り替え: ブロックリストからすべての BSSID が削除されます。
  • ユーザーが Wi-Fi 選択ツールでネットワークをタップ: ユーザーが選択したネットワークのすべての BSSID がブロックリストから削除されます。
  • タイムアウト: ブロック期間が終了すると、ブロックリストから BSSID が削除されます。
  • 再起動: すべてのブロックリストが消去されます。
  • ネットワークの削除: 削除されたネットワークに関連付けられているすべての BSSID がブロックリストから削除されます。

失敗カウンタとストリーク カウンタのリセット条件は次のとおりです。

  • 再起動: すべての BSSID がリセットされます。
  • ネットワークの削除: 削除されたネットワークに関連付けられている BSSID がリセットされます。
  • L2 接続が成功: 次のエラーコードがリセットされます。

    • REASON_AP_UNABLE_TO_HANDLE_NEW_STA
    • REASON_WRONG_PASSWORD
    • REASON_EAP_FAILURE
    • REASON_ASSOCIATION_REJECTION
    • REASON_ASSOCIATION_TIMEOUT
    • REASON_AUTHENTICATION_FAILURE
    • REASON_ABNORMAL_DISCONNECT(デバイスがこの BSSID に最後に接続してから 3 時間を超えた場合にのみ条件付きで消去)
    • REASON_NONLOCAL_DISCONNECT_CONNECTING
  • ネットワーク検証が成功: 次のエラーコードがリセットされます。

    • REASON_NETWORK_VALIDATION_FAILURE
  • DHCP プロビジョニングが成功: 次のエラーコードがリセットされます。

    • REASON_DHCP_FAILURE

SSID のブロック

SSID のブロックは、BSSID のブロックと同じように動作します。各ネットワークの失敗タイプごとの失敗カウンタは、接続で(失敗タイプの)失敗が発生したときに加算されます。特定のタイプの失敗カウントがしきい値を超えると、構成に基づいて SSID が恒久的または一時的にブロックされます。各失敗タイプの構成は WifiConfiguration.NetworkSelectionStatus.DISABLE_REASON_INFOS でコード化されています。以下に要約を示します。

* ネットワークが一時的に無効化される場合、無効化期間は、ネットワークで連続して発生した接続の失敗の数に応じて動的に変化します。ネットワークが 5 回連続して接続に失敗すると、その後は失敗するたびに無効化期間の長さが以前の 2 倍になります。たとえば、5 回連続して失敗したネットワークが 5 分間無効化される場合、6 回目の失敗後は 10 分間、7 回目の失敗後は 20 分間無効化され、その後は最大で上限の 18 時間にわたって無効化されます。

失敗コード 説明 しきい値 ベース無効化期間* 無効化タイプ
DISABLED_DHCP_FAILURE DHCP のプロビジョニングが失敗 5 5 分 一時的
DISABLED_NO_INTERNET_TEMPORARY ネットワーク検証が失敗したが、失敗してもこのネットワークへの接続を維持する意思をユーザーが示している 1 10 分 一時的
DISABLED_AUTHENTICATION_NO_CREDENTIALS ネットワークに接続するための認証情報が要求元にない 1 N/A 恒久的
DISABLED_NO_INTERNET_PERMANENT ネットワーク検証の失敗のデフォルト 1 N/A 恒久的
DISABLED_BY_WIFI_MANAGER 非推奨および未使用 1 N/A 恒久的
DISABLED_BY_WRONG_PASSWORD パスワードが誤っており、このネットワークへの接続が成功したことがない 1 N/A 恒久的
DISABLED_AUTHENTICATION_NO_SUBSCRIPTION SIM カードが登録されていない EAP 失敗 1 N/A 恒久的
DISABLED_ASSOCIATION_REJECTION 関連付けの拒否の失敗 5 5 分 一時的
DISABLED_AUTHENTICATION_FAILURE その他の認証の失敗(パスワードの誤りと EAP 失敗以外) 5 5 分 一時的
DISABLED_AUTHENTICATION_PRIVATE_EAP_ERROR プロバイダ固有(プライベート)の EAP 失敗。 1 N/A 恒久的
DISABLED_NETWORK_NOT_FOUND フレームワークが接続をリクエストしたネットワーク(ネットワーク機能を含む)に一致するネットワークを、要求元がスキャン結果で見つけることができませんでした。 2 5 分 一時的
DISABLED_CONSECUTIVE_FAILURES ネットワークが連続して 5 回以上接続に失敗しました。これらの機能の失敗タイプには、この表に記載されている失敗タイプが含まれますが、それには限定されません。
5 5 分 一時的

一時的に無効化されたネットワークは、次の場合に再度有効化されます。

  • 無効化期間が終了した。
  • ユーザーが手動でネットワークの接続を選択した。
  • ユーザーが Wi-Fi を切り替えた。
  • システムが再起動された。
  • ネットワークが非常に低い RSSI で無効になったが、その後中程度以上の RSSI で再び検出された。

恒久的に無効化されたネットワークは、次の場合に再度有効化されます。

  • ユーザーが手動でネットワークの接続を選択した。

ネットワークの失敗カウンタは、次の場合にリセットされます。

  • ネットワークが削除された。
  • デバイスがネットワークへの接続に成功した。
  • 無効化期間の終了後、ネットワークが再度有効化された。
  • ユーザーが手動でネットワークの接続を選択した。
  • システムが再起動された。

スコアカード

スコアカードは、Android 10 で導入された、BSSID に関するオンデバイス統計情報を記録する機能です。スコアカードは、IpMemoryStore サービスによって保持されます。

Android 11 では、ネットワークの選択にスコアカードは使用されません。

ユーザーによる接続選択

Android はユーザーによる接続選択のアルゴリズムを備えており、ユーザーが明示的に接続した Wi-Fi ネットワーク(ホーム ネットワークなど)を優先的に選択するプロセスを提供できます。こうしたネットワークはホームデバイスを制御する機能などの追加サービスを提供するため、パブリック ネットワークよりパフォーマンスが低くても、ユーザーによって優先的に選択される場合があります。

ネットワークに対するユーザーの設定は、ユーザーがネットワークを選択する際に、表示されているすべての Wi-Fi 構成とそれらの電波強度にマークを付けることでキャプチャできます。マークを付けられた Wi-Fi 構成のいずれかが自動選択プロセスで選択され、ユーザーが選択したネットワークが利用可能である場合は、以下の条件が満たされていれば、ユーザーによる接続選択アルゴリズムによって、ユーザーが選択したネットワークの選択がオーバーライドされます。

  • ユーザーによる接続選択のネットワークが前回使用されたとき、インターネット アクセスがあった。
  • ユーザーによる接続選択のネットワークの電波強度が、エラーマージンで最初に選択されたときほど悪くない。このエラーマージンは、オーバーレイ config_wifiEstimateRssiErrorMarginDb で構成できます。

ユーザーによる接続選択のネットワークは、再起動後も永続します。ユーザーによる接続選択は、保存済みネットワーク、Passpoint ネットワーク、推薦ネットワークで機能します。

デュアル同時接続ステーション

このセクションでは、デバイスが 2 つの Wi-Fi ネットワークへの同時接続をサポートしている場合の Wi-Fi ネットワーク選択について説明します。

make-before-break

make-before-break 機能が有効になっている場合、デバイスは元のネットワークから切断する前に新しいネットワークへの接続を試みます。make-before-break フローは、break-before-make ネットワーク切り替え(デバイスが新しいネットワークに接続する前に元のネットワークから切断する)と同じネットワーク選択アルゴリズムを使用します。ネットワーク選択アルゴリズムが make-before-break で切り替えられないネットワークを選択した場合、デバイスは自動的に break-before-make にフォールバックします。

制限付き接続とインターネット接続の同時実行

制限付き接続とインターネット接続の同時実行機能が有効になっている場合、デバイスは、デバイス メーカーが構成する特定のアプリのみが使用できるセカンダリ制限付き Wi-Fi ネットワークに接続できます。デバイス メーカーがこれを構成する手順については、制限付き接続とインターネット接続の同時実行をご覧ください。

ネットワーク選択アルゴリズムは、OEM の有料 / プライベート候補に一致するスキャン結果を検出すると、自動的にセカンダリ ネットワークとしてそれに接続します。通常、プライマリ Wi-Fi ネットワーク(一般のアプリにインターネット アクセスを提供するネットワーク)のネットワーク選択は並行して行われます。

よくある質問(FAQ)

  1. セキュアなネットワークは常にオープン ネットワークより優先されるのですか?

    いいえ。ネットワークを評価する主要なカテゴリには、保存済み、推薦、従量制、定額制があります。各カテゴリ内では、セキュアなネットワークはオープン ネットワークより優先されますが、接続の品質のほうがはるかに重視されます。

    その理由は、実際のユーザーデータのセキュリティは、エンドツーエンドの暗号化(TLS など)によって提供されることです。セキュアなネットワークは通信の最初の行程のみを暗号化し、事前共有鍵を使用するネットワークの場合は高度なプライバシーを提供しません。

  2. 保存済みネットワークが推薦ネットワークより優先されるのはなぜですか?

    無料(定額制)ネットワークは無料の推薦ネットワークより優先され、従量制の保存済みネットワークは従量制の推薦ネットワークより優先されます。

    保存済みネットワークが推薦ネットワークより優先されるのは、ユーザーが明示的にデバイスに追加したネットワークであるからです。これは、ユーザーが可能な限りそれらのネットワークに接続したいと望んでいることを示します。

    なお、ユーザーは個々の保存済みネットワークに自動接続する動作を無効にできます。つまり、これらのネットワークが手動でのみ使用され、デバイスによって自動的に考慮されないことを明示できます。

  3. 厳密な優先順位を変更したり、完全に削除したりすることはできますか?

    デバイス メーカーは、上記のセクションに記載されているボーナスのオーバーレイを変更することにより、ネットワーク選択の決定を変更できます。ただし、デフォルト値は複数のユースケースを慎重に考慮したうえで選択されたものであるため、変更することはおすすめしません。