Сокращение задержки между двумя сканированиями Wi-Fi - PullRequest
2 голосов
/ 01 ноября 2011

Я пишу приложение для Android, которое нацелено на определение местоположения пользователя с помощью отпечатка пальца Wi-Fi, и для этого мне нужно очень часто (как можно чаще) сканировать существующие сети, но я нашелвременные ограничения для этого.

На самом деле, несмотря ни на что, я могу ежеминутно получать новое сканирование, и мне было интересно, может ли быть способ ускорить процесс.

Прошлоевопросы по теме (как этот 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

}

Ответы [ 3 ]

2 голосов
/ 30 марта 2012

Существует ограничение на количество сканирований, которые вы можете получить за единицу времени. Точка доступа передает радиобуй примерно каждые 100 мс, поэтому вам нужно подождать, чтобы его обнаружить. Существует 12 частотных каналов, поэтому вам нужно потратить не менее 100 мс * 12 = 1,2 с, чтобы убедиться, что у вас есть все точки доступа. Все, что ниже, будет неточным.

1 голос
/ 10 ноября 2011

Я также пытаюсь определить положение пользователя по отпечатку Wi-Fi.

На моем устройстве (Galaxy S2) я могу получить один результат сканирования в течение шести секунд.Я использовал активное сканирование, но нет никакого изменения интервала между двумя сканированиями Wi-Fi.Но на устройстве моего друга (HTC Desire) я могу получать один результат сканирования каждую секунду (используя тот же код)

Я думаю, что скорость сканирования зависит от устройства.

Если вы можете получить результат сканированиячасто, пожалуйста, скажите мне.

0 голосов
/ 01 ноября 2011

Этот код может найти местоположение через WIFI + GPS (только GPS работает медленно):

Поиск текущего местоположения работает при использовании Wi-Fi, но не работает при использовании GPS

Но, с другой стороны, вы можете рассмотреть другой вариант, перечисленный здесь:

Android: как можно получить текущее местоположение программно

...