减少两次wifi扫描之间的延迟



我正在编写一个android应用程序,其目的是通过wifi指纹确定用户的位置,为了做到这一点,我需要得到真正频繁的(尽可能频繁)扫描当前的网络,但我发现时间限制,这样做。

事实上,无论如何,我可以得到一个新的扫描大约每秒,我想知道是否有一种方法可以加快速度。

过去关于这个话题的问题(比如这个Android, wifi主动扫描)并不是真的有用。

代码如下:

public class WiFiScanReceiver extends BroadcastReceiver {
    private static final String TAG = "WiFiScanReceiver";
    private Main parent;
    private ScanResult storedBest;
    private String actualFileName;
    private int nOfScans;
    private long initialTime;
    private FileSaver fs;
    public WiFiScanReceiver(Main wifiDemo) {
        super();
        this.parent = wifiDemo;
        storedBest = null;
        actualFileName ="";
        nOfScans = 0;
        fs = new FileSaver(parent);
    }
    @Override
    public void onReceive(Context c, Intent intent) {
        List<ScanResult> results = parent.getWifiManager().getScanResults();
        ScanResult bestSignal = null;
        if(parent.isRecording()&& actualFileName!=""){
        //Getting the fingerprint
        }
        if (parent.isRecording()) nOfScans ++;
        parent.getWifiManager().startScan();
        Log.d(TAG, "onReceive() message: " + message);
    }
    //VARIOUS GETTERs AND SETTERs
}

每单位时间可以进行多少次扫描是有限制的。接入点大约每100毫秒广播一个信标,所以这是您需要等待的时间,以确保检测到它。有12个频率通道,所以你必须花费至少100ms*12 = 1.2s,以确保你有所有的接入点。

我也尝试通过wifi指纹来确定用户的位置。

在我的设备(Galaxy S2)上,我可以每6秒获得一个扫描结果。我用的是主动扫描,但是两次wifi扫描的间隔没有变化。但在我朋友的设备(HTC Desire)上,我每秒可以得到一个扫描结果。(使用相同代码)

我认为扫描速度取决于设备。

如果你能经常得到扫描结果,请告诉我。

此代码可以通过WIFI + GPS(单独使用GPS很慢)找到位置:

使用Wifi时查找当前位置有效,但使用GPS时失败

但另一方面,你可以考虑这里列出的其他选项:

Android:如何通过编程方式获取当前位置

最新更新