I'm currently working on a native Android application that will be installed and run on a Google Glass device. One of the requirements of this application is that I actively read frequency and level information of a wifi network.
This is commonly done in Android with the following lines:
this.registerReceiver(BROADCAST_RECEIVER_HERE, new IntentFilter(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION));
((WifiManager) getSystemService(Context.WIFI_SERVICE)).startScan();
When running on a traditional Android device my broadcast receiver (designated by the BROADCAST_RECEIVER_HERE placeholder) receives updated wifi scan results every second. When running the same application on Glass the results still come in once a second but the actual wifi level values only seem to change every 4-5 scan results or 5-6 seconds.
Is this a bug or a conscious decision made for the sake of battery life? Is there anyway for me to configure WifiManager so that it receives updated levels for each and every scan result?
EDIT: Here are some example logs. Each line includes a time stamp and the strength levels that are being reported in the ScanResult objects for two specific wireless networks.
Running on 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
Running on 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