Wi-Fi 優先ネットワーク オフロード スキャン

Wi-Fi 優先ネットワーク オフロード(PNO)スキャンは、Wi-Fi 接続が解除されて画面がオフのときに定期的に実行される低電力 Wi-Fi スキャンです。PNO スキャンは、保存されたネットワークを検索して接続するために行われます。このスキャンは、フレームワークにより NL80211_CMD_START_SCHED_SCAN コマンドを使用してスケジュールされます。詳しくは、nl80211.h をご覧ください。

デバイスのモバイル情報を利用した消費電力の最適化

Android 9 以前のデバイスでは、デバイスの Wi-Fi 接続が解除されて画面がオフになっている場合、最初の 3 回のスキャンでは 20 秒間隔で PNO スキャンが実行され、その後はすべてのスキャンにおいて 60 秒ごとに 1 回の頻度までスキャン回数が減ります。保存されたネットワークが検出されるか、画面がオンになると、PNO スキャンは停止します。

Android 10 には、WifiManagersetDeviceMobilityState() という名前の API メソッドがオプションで導入されており、デバイスのモビリティ状態に基づいて PNO スキャンの間隔を広げて、消費電力を削減します。

モビリティ状態には次のものがあります。

  • DEVICE_MOBILITY_STATE_UNKNOWN: 不明なモビリティ
  • DEVICE_MOBILITY_STATE_HIGH_MVMT: 自転車または自動車
  • DEVICE_MOBILITY_STATE_LOW_MVMT: ウォーキングまたはランニング
  • DEVICE_MOBILITY_STATE_STATIONARY: 移動なし

デバイスが移動していない場合、Android フレームワークは PNO スキャンの間隔を 60 秒から 180 秒に延長して、電力消費を抑えます。このような最適化を行う理由は、デバイスが移動していないときに PNO スキャンをしても、新しいネットワークを発見できる可能性は低いためです。

デバイスが他のモビリティ状態にある場合、またはメソッドが呼び出されない場合、デフォルトの PNO スキャン動作を実行します。

実装

Android 10 以降を搭載するデバイスにこの電力最適化機能を実装するには、デバイスのモビリティ情報を取得して、カスタム システムアプリから setDeviceMobilityState() メソッドを呼び出します。