2

我正在编写一个 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

}
4

3 回答 3

2

每单位时间可以进行多少次扫描是有限制的。接入点大约每 100 毫秒广播一次信标,因此您需要等待一段时间才能确保检测到它。有 12 个频道,因此您必须花费至少 100ms*12 = 1.2s 才能确保您拥有所有接入点。低于此值的任何内容都是不准确的。

于 2012-03-30T02:13:07.967 回答
1

我还尝试通过 wifi 指纹确定用户位置。

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

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

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

于 2011-11-10T06:01:03.980 回答
0

此代码可以通过 WIFI + GPS 找到位置(仅 GPS 很慢):

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

但另一方面,您可以考虑此处列出的其他选项:

Android:我如何以编程方式获取当前位置

于 2011-11-01T16:30:16.593 回答