【问题标题】:Scanning for wifi signals only in 2.4Ghz band仅在 2.4Ghz 频段扫描 wifi 信号
【发布时间】:2013-06-27 14:23:40
【问题描述】:

我需要扫描可用的 Wi-Fi 信号及其强度。我正在使用wifiManager.startScan(); 和异步wifiManager.getScanResult();。

在不支持 5GHz 频段的设备上大约需要 500 毫秒才能获得结果,在支持 5GHz 频段的设备上大约需要 2 秒,这对我来说太长了。我猜 1.5s 的延迟是在搜索整个 5GHz 频段。

有什么方法可以让设备仅在 2.4GHz 频段进行扫描,或者有什么其他方法可以更快地获得结果(例如通过 NDK)?我搜索了整个网络,一无所获,所以我想这是唯一的方法。

谢谢。

【问题讨论】:

    标签: android wifi wifimanager


    【解决方案1】:

    有什么方法可以让设备仅在 2.4GHz 下进行扫描 乐队

    我认为没有办法实现它。

    您所能做的就是致电startScan() 并等待结果。然后您可以根据频率过滤结果,尤其是每个 AP(接入点)的 2.4Ghz 频率应低于 2500 Mhz。

    【讨论】:

    • 对于 5 Ghz,我得到的频率值低于 2500。
    【解决方案2】:

    注意:这些 api 已从 Android Nogut 版本中删除。适用于棉花糖

    /**
     * Auto settings in the driver. The driver could choose to operate on both
     * 2.4 GHz and 5 GHz or make a dynamic decision on selecting the band.
     * @hide
     */
    public static final int WIFI_FREQUENCY_BAND_AUTO = 0;
    
    /**
     * Operation on 5 GHz alone
     * @hide
     */
    public static final int WIFI_FREQUENCY_BAND_5GHZ = 1;
    
    /**
     * Operation on 2.4 GHz alone
     * @hide
     */
    public static final int WIFI_FREQUENCY_BAND_2GHZ = 2;
    

    使用 WifiManager.java 的上述常量部分,设置所需的频段。 我们可以使用 API setFrequencyBand(int mode, boolean persist) 设置频率。 这些是隐藏的 API。

    代码sn-p:

    WifiManager wm = (WifiManager)getSystemService(Context.WIFI_SERVICE);
    
    // To scan only 2.4 GHz Frequency band
    
    // true, if this needs to be remembered
    
    wm.setFrequencyBand(2, false);
    
    // Start scan.
    
    wm.startScan();
    
    // To get the frequency band used.
    
    int band = wm.getFrequncyBand();
    

    【讨论】:

    • 这将是完美的,只是这些函数被隐藏并且无法引用。
    • 我没有看到我的 wifi 管理器对 setFrequencyBand 或 getFrequencyBand 的任何引用。我知道这是一个隐藏的 API,但它被完全删除了吗?
    • 这些 api 已从 Android Nogut 中删除。
    【解决方案3】:

    请求方配置文件提供选项来显式声明要扫描可用网络的通道范围。如果您的设备使用 wpa_supplicant,那么您可以在配置文件中定义扫描频率,如下所示。

    scan_freq:要扫描的频率列表

    有关更多信息,请在下面提到的链接中查找上述文本。

    访问http://hostap.epitest.fi/gitweb/gitweb.cgi?p=hostap.git;a=blob_plain;f=wpa_supplicant/wpa_supplicant.conf。

    【讨论】:

    • 链接已损坏。它下载一个 gitweb.cgi 文件。如果我打开它,它会显示一些 xml 或 html。另外,我在此文件中找不到 scan_freq。
    【解决方案4】:
        final WifiManager wifiManager = (WifiManager)
    
    
    
    context.getApplicationContext().getSystemService(Context.WIFI_SERVICE);                
    
    wifiManager.getScanResults().get(0).frequency >= 2500
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-26
      • 2011-01-31
      • 2015-12-06
      • 1970-01-01
      相关资源
      最近更新 更多