Android中的有源wifi监视器

时间:2012-09-27 15:06:19

标签: android wifi wifimanager

我正在开发一款应该连接到网络并监控信号强度的Android应用。我已经实现了连接和看到力量,但我不知道如何积极“听到”并展示力量。这是我的监控方法:

public void search(View v) {

        // Turn on wifi
        if (!wifi.isWifiEnabled()) {
            if (wifi.getWifiState() != WifiManager.WIFI_STATE_ENABLING) {
                wifi.setWifiEnabled(true);
            }
        }

        // Register the desired network
        int nId = wifi.addNetwork(netConfig);

        // create the BroadcastReciever
        if (wifiReciever == null) {
            wifiReciever = new BroadcastReceiver() {

                @Override
                public void onReceive(Context context, Intent intent) {
                    final String action = intent.getAction();
                    if (action
                            .equals(WifiManager.SUPPLICANT_CONNECTION_CHANGE_ACTION)) {
                        if (intent.getBooleanExtra(
                                WifiManager.EXTRA_SUPPLICANT_CONNECTED, false)) {
                            message.setText("Connected: "
                                    + wifi.getConnectionInfo().getRssi());
                        } else {
                            message.setText("Disconnected...");
                        }
                    } else if (action.equals(WifiManager.RSSI_CHANGED_ACTION)) {
                        message.setText("Connected: "
                                + wifi.getConnectionInfo().getRssi());
                    }
                }
            };
        }
        IntentFilter intentFilter = new IntentFilter();
        intentFilter.addAction(WifiManager.SUPPLICANT_CONNECTION_CHANGE_ACTION);
        intentFilter.addAction(WifiManager.RSSI_CHANGED_ACTION);
        registerReceiver(wifiReciever, intentFilter);

        // intentamos conectarnos
        wifi.enableNetwork(nId, true);

    }

此代码有时会起作用,但它不会经常更新强度。是否有API或任何其他方法/隐藏的api来做我想做的事情?

任何帮助都会很棒!

1 个答案:

答案 0 :(得分:1)

Wifi信号强度(如当前网络活动或CPU使用率)不是可以在不轮询传感器的情况下收听的数量。其他wifi监控应用程序只是以用户定义的间隔轮询。 wifi信号测量中存在大量噪声和波动,因此您不能等待它改变。据我所知,只有在信号强度发生重大变化时才会广播该意图,因此不适合现场监视器。