Aug 19, 2010
I have a simple app that just initiates a wifi scan every two seconds and then logs the results. I am observing some strange behaviour, and was wondering if anyone could shed some light. When I start scanning, if the phone (Nexus One running latest Froyo OTA release) is just sitting on my desk (screen on or off, it doesn't matter), I receive the wifi scan results about 800ms after initiating the scan, fairly consistently. At most, it takes a second and a half to receive the results. However, if I get up and start to walk around the building that I'm in, the time between initiating the scan and receiving the result begins to vary greatly. What is interesting is that I start to see a pattern where it will take about 40 seconds to receive results, then I will get three or four results two seconds apart, then it takes 40 seconds to receive the next set of results, then I get three or four results two seconds apart, etc.
View 2 Replies
I've tried obtaining a wifilock, both the FULL and SCAN ones, and that doesn't help. Same with a partial wakelock. I've also tried setting up a thread that pings the supplicant every second and reports when it is unreachable, and it appears to always be responsive (ie., I never see the report). I thought that maybe the problem was that I am unable to receive the result of scans when I am switching between base stations (which might happen when I move around), but if I manually switch between two different networks, it does not cause a delay in my scans (ie., I can still get the results with only a one second delay while it's associating with the new network). Anyway, for my application, it would be incredibly useful to get wifi results at a fairly consistent rate, and so I was hoping that someone on this list might have some suggestions as to how I can achieve this.