I've found a few similar questions to the one I'm about to pose, but I'm too much of a noob in this field to apply the answers to my particular question.
I have an area of roughly 40,000 sq ft. that is covered by 22 AP's which host 6 WiFi channels a piece. I'm using WiFi RSSI information to estimate a user's location within this 40,000 sq ft. One of the issues I'm currently fighting is the RSSI scan refresh rate... It SEEMS to take nearly 4 or more seconds to refresh the RSSI information. This is simply unacceptable for my application since a user can move significantly in that time span.
I'm working with an Android device and would prefer a solution that would be generic to all android users. What can I do to improve this scan rate?
I've read that the reason it takes 4+ seconds is because it really just takes that long...However, for my application, my phone is able to easily process other things in-between this 4 second window. For example, a click-counter on a button can be spammed and then randomly all at once the scan results refresh.
The following code is used to get RSSI scan:
Context context = getApplicationContext();
WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
wifiManager.startScan();
List<ScanResult> scan = wifiManager.getScanResults();
Thank you
You could either try modifying the device at a driver level, or install iw and use that to conduct finer scans.
However, scanning for less than 150ms would result in possibly skipping beacon frames, rendering your approach inaccurate. Additionally, most consumer routers these days are configured to detect beacon transmission collisions on their channel and either back off, or switch to another channel