在Android中查找具有特定时间间隔的WIFI结果

时间:2014-07-08 12:35:52

标签: android wifimanager

我正在使用Android应用。我正在使用此代码获取wifi结果:

import java.util.ArrayList;
import java.util.List;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.net.wifi.ScanResult;
import android.net.wifi.WifiManager;
import android.widget.Toast;

public class WirelessNetworks  
{
    private static WifiManager wifi;
    private static List<ScanResult> results;
    private static WifiReceiver receiverWifi;
    private static Context context; 

    public static void Initial(Context cont)
    {
        context=cont;
        wifi = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
        receiverWifi=new WifiReceiver();
        context.registerReceiver(receiverWifi, 
                new IntentFilter(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION));
        results=new ArrayList<ScanResult>();
    }

    public static void FindNetworks() 
    {
        wifi.startScan();
        results.clear();
        results=wifi.getScanResults();      
        int size = results.size()-1;
        while (size >= 0) 
        {
            String ssid=results.get(size).SSID;
            String mac=results.get(size).BSSID;
            int rssi=results.get(size).level;
            int band=results.get(size).frequency;           
            Globals.DB.insert(ssid, mac, rssi+"", band+"");
            size--;             
        } 
    }


    public static class WifiReceiver extends BroadcastReceiver
    {
        @Override
        public void onReceive(Context context, Intent intent) 
        {           

        }
    }
}

此函数“FindNetworks()”每1000毫秒调用一次。 问题是每3或4次结果冗余相同,我认为应该将间隔调用增加到4000毫秒。 但这对我的应用来说是个问题。 有办法立即每1000毫秒获得新的WIFI读数吗?

1 个答案:

答案 0 :(得分:1)

更新:根据Android 4.4和5.0中的测试,连续WiFi扫描之间的间隔似乎不到一秒钟。如果是这种情况,那么您可以使用倒计时器在您首次确定每次扫描之间所需的最短时间后,根据需要随时获取wifi结果。请注意,可能因设备而异,因此请保留一个有意义的时间窗口。您可以使用Android设备查看我的演示以进行RF测量:

https://github.com/panosvas/Measurements

似乎每个WiFi测量基于每个设备大约需要5秒钟。因此,通过更快的结果,几乎可以肯定您将获得相同测量的重复。为了每秒获得测量值,您可能需要更换驱动程序,而我不知道它有多容易。您还可以在以下帖子中查看我的答案:

https://stackoverflow.com/questions/25819271/actively-pulling-wifi-power-information/27014012#27014012

Android Getting WiFi signal strength as it changes