How to get the connection strength of Wifi access points?

前端 未结 5 1951
谎友^
谎友^ 2020-12-05 01:09

I am building an application reading the signal strength of each available Wifi access point.

I\'ve written code like:

    wifi = (WifiManager) getS         


        
5条回答
  •  情歌与酒
    2020-12-05 01:46

    below code will help to get bar of wifi:

    registerReceiver(new BroadcastReceiver() {
    
            @Override
            public void onReceive(Context context, Intent intent) {
                final WifiManager wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE);
                int state = wifi.getWifiState();
                if(state == WifiManager.WIFI_STATE_ENABLED) {
                    List results = wifi.getScanResults();
    
                    for (ScanResult result : results) {
                        if(result.BSSID.equals(wifi.getConnectionInfo().getBSSID())) {
                            int level = WifiManager.calculateSignalLevel(wifi.getConnectionInfo().getRssi(),
                                    result.level);
                            int difference = level * 100 / result.level;
                            int signalStrangth= 0;
                            if(difference >= 100)
                                signalStrangth = 4;
                            else if(difference >= 75)
                                signalStrangth = 3;
                            else if(difference >= 50)
                                signalStrangth = 2;
                            else if(difference >= 25)
                                signalStrangth = 1;
                            tv.setText(tv.getText() + "\nDifference :" + difference + " signal state:" + signalStrangth);
    
                        }
    
                    }
                }
            }
        }, new IntentFilter(WifiManager.RSSI_CHANGED_ACTION));
    

提交回复
热议问题