1

私の目的は、Wi-Fiネットワークの変更をスキャンできるようにすることです(主に、使用可能なネットワークを確認するため)。私が受信者を登録することによってそれをしていることを正しく知っています:

registerReceiver(wifiReceiver, new IntentFilter(WifiManager.RSSI_CHANGED_ACTION));

私のはどこWifiReceiverですかBroadcastReceiver

問題は、電話がオンになっているときにのみ機能することです。スリープモードになると(電源ボタンを押すか、しばらくすると)、受信機は受信を停止します。メインクラスのonCreateでウェイクロックを取得し、onDestroyでリリースしました(これは部分的なウェイクロックです)。さらに、私はこれを試しました:

Settings.System.putInt(getContentResolver(),Settings.System.WIFI_SLEEP_POLICY, Settings.System.WIFI_SLEEP_POLICY_NEVER);

Wi-Fiがスリープ状態にならないようにします。残念ながら、それは役に立ちませんでした。

電話がスリープ状態の場合でも、ネットワークの変更をスキャンする可能性はありますか?どのネットワークが範囲内にあるかを(SSIDで)確認できるようにしたい。多分私は別のアクションを使用する必要がありますか?

あなたの助けに感謝。

4

2 に答える 2

1

文字通り、いいえ、ハードウェアは通常、アプリケーション CPU がスリープ モードのときに Wi-Fi が動作できるように設計されておらず、低レベル ドライバーも作成されていません。電話などのプッシュ イベントを受信することを目的としたモバイル ネットワーク インターフェイスの場合とは異なります。 SMS、およびGmailの「くすぐり」。

したがって、あなたの選択は、デバイスがスリープ状態にならないように管理するか (さようならバッテリー)、またはアラームを使用して定期的にウェイクアップし、wifi をアクティブにして、状況をポーリングすることです (バッテリー寿命にはまだ良くありませんが、それほど劇的ではありません)。 .

于 2011-07-21T19:32:33.493 に答える