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 には、WifiManager
に setDeviceMobilityState()
という名前の 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()
メソッドを呼び出します。