重复的SSID在扫描无线网络结果(duplicate SSID in scanning wifi r

2019-08-31 15:08发布

我试图做,它可以创建可用的WiFi接入点的列表中的应用程序。 下面是我使用的代码的一部分:

x = new BroadcastReceiver()
        {
            @Override
            public void onReceive(Context c, Intent intent) 
            {
                results = wifi.getScanResults();
                size = results.size();
                if (results != null) {
                    for (int i=0; i<size; i++){
                        ScanResult scanresult = wifi.getScanResults().get(i);
                        String ssid = scanresult.SSID;
                        int rssi = scanresult.level;
                        String rssiString = String.valueOf(rssi);
                        textStatus.append(ssid + "," + rssiString);
                        textStatus.append("\n");
                    }
                    unregisterReceiver(x); //stops the continuous scan
                    textState.setText("Scanning complete!");
                } else {
                    unregisterReceiver(x); 
                    textState.setText("Nothing is found. Please make sure you are under any wifi coverage");
                }
            }
        };

既textStatus和textState是一个TextView。 我能得到这个工作,但有时结果显示重复的SSID,但不同的信号电平,在单次扫描。 可能有3-4相同的SSID,但不同的信号电平。

是不是真的不同的SSID,并有什么不同呢? 任何人都可以解释一下吗?

Answer 1:

你是否具有相同的网络路由器的几个调制解调器? 例如:某公司有与安装在几个地方所以每个房间都有无线上网的路由器的多个调制解调器大的无线网络。 如果你这样做,扫描你会得到很多结果具有相同的SSID,但不同的存取权限点,因此不同的信号电平。

编辑:根据沃尔特的评论也可以有多个结果,尽管只有一个接入点,如果你的调制解调器是双频。



Answer 2:

使用下面的代码来删除重复的SSID与信号强度最大

public void onReceive(Context c, Intent intent) {
    ArrayList<ScanResult> mItems = new ArrayList<>();
    List<ScanResult> results = wifiManager.getScanResults();
    wifiListAdapter = new WifiListAdapter(ConnectToInternetActivity.this, mItems);
    lv.setAdapter(wifiListAdapter);
    int size = results.size();
    HashMap<String, Integer> signalStrength = new HashMap<String, Integer>();
    try {
        for (int i = 0; i < size; i++) {
            ScanResult result = results.get(i);
            if (!result.SSID.isEmpty()) {
                String key = result.SSID + " "
                        + result.capabilities;
                if (!signalStrength.containsKey(key)) {
                    signalStrength.put(key, i);
                    mItems.add(result);
                    wifiListAdapter.notifyDataSetChanged();
                } else {
                    int position = signalStrength.get(key);
                    ScanResult updateItem = mItems.get(position);
                    if (calculateSignalStength(wifiManager, updateItem.level) >
                            calculateSignalStength(wifiManager, result.level)) {
                        mItems.set(position, updateItem);
                        wifiListAdapter.notifyDataSetChanged();
                    }
                }
            }
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
}


文章来源: duplicate SSID in scanning wifi result