5

デバイスに接続されているこの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<ScanResult> 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));

このコードも試しました。しかし、これもうまくいきません。

    int numberOfLevels = 5;
    WifiInfo wifiInfo = wifiManager.getConnectionInfo();
    int level = WifiManager.calculateSignalLevel(wifiInfo.getRssi(), numberOfLevels);
4

2 に答える 2

14

それがうまくいくことを願っています..

public void onReceive(WifiManager wifiManager) {
                      int numberOfLevels=5;
                      WifiInfo wifiInfo = wifiManager.getConnectionInfo();
                      int level=WifiManager.calculateSignalLevel(wifiInfo.getRssi(), numberOfLevels);
                      System.out.println("Bars =" +level);
                }
于 2013-12-28T18:27:21.423 に答える