私は現在、Google Glass デバイスにインストールして実行するネイティブ Android アプリケーションに取り組んでいます。このアプリケーションの要件の 1 つは、wifi ネットワークの周波数とレベルの情報を積極的に読み取ることです。
これは通常、Android では次の行で行われます。
this.registerReceiver(BROADCAST_RECEIVER_HERE, new IntentFilter(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION));
((WifiManager) getSystemService(Context.WIFI_SERVICE)).startScan();
従来の Android デバイスで実行している場合、ブロードキャスト レシーバー (BROADCAST_RECEIVER_HERE プレースホルダーで指定) は、更新された Wi-Fi スキャン結果を毎秒受信します。Glass で同じアプリケーションを実行すると、結果は 1 秒に 1 回表示されますが、実際の Wi-Fi レベルの値は 4 ~ 5 回のスキャン結果または 5 ~ 6 秒ごとにしか変化しないようです。
これはバグですか、それともバッテリー寿命のために意図的に行われた決定ですか? スキャン結果ごとに更新されたレベルを受け取るように WifiManager を構成する方法はありますか?
編集: ログの例をいくつか示します。各行には、2 つの特定のワイヤレス ネットワークの ScanResult オブジェクトで報告されているタイム スタンプと強度レベルが含まれています。
Android での実行
16:01:05.864: -43.0 -46.0
16:01:07.185: -43.0 -45.0
16:01:08.520: -49.0 -50.0
16:01:09.841: -48.0 -53.0
16:01:11.161: -48.0 -53.0
16:01:12.489: -47.0 -45.0
16:01:13.810: -45.0 -52.0
16:01:15.192: -51.0 -51.0
16:01:16.497: -45.0 -46.0
16:01:17.833: -45.0 -46.0
Glass での実行
16:04:14.089: -42.0 -41.0
16:04:15.097: -42.0 -41.0
16:04:16.097: -42.0 -39.0
16:04:17.152: -42.0 -39.0
16:04:18.183: -42.0 -39.0
16:04:19.222: -42.0 -39.0
16:04:20.238: -42.0 -39.0
16:04:21.246: -42.0 -42.0
16:04:22.253: -43.0 -41.0
16:04:23.253: -43.0 -41.0