我正在开发一款应该连接到网络并监控信号强度的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来做我想做的事情?
任何帮助都会很棒!
答案 0 :(得分:1)
Wifi信号强度(如当前网络活动或CPU使用率)不是可以在不轮询传感器的情况下收听的数量。其他wifi监控应用程序只是以用户定义的间隔轮询。 wifi信号测量中存在大量噪声和波动,因此您不能等待它改变。据我所知,只有在信号强度发生重大变化时才会广播该意图,因此不适合现场监视器。