更新可用网络列表 - BroadcastReceiver
Update list of available networks - BroadcastReceiver
我有一个广播接收器来扫描可用网络,使用您可以在 Whosebug 上轻松找到的普通代码。
我正在为每个可用网络在我的布局中放置一个图标,问题是当一个网络被删除时,它仍然显示它。
问题是对于这个广播接收器,它正在监听的 action/intent 是 SCAN_RESULTS_AVAILABLE_ACTION 。一开始我可以调用 startScan(),但之后就不会再进行扫描了。它仅在我手动进入 phone.
上的 wifi 设置时进行扫描
可能的解决方案是什么?它应该自动删除不再可用的网络,但为了做到这一点,它必须再次扫描,但我不知道我应该如何 "trigger" 再次扫描。
我的代码是:
public class WifiReceiver extends BroadcastReceiver {
private Vector<String> keywords;
public void onReceive(Context c, Intent intent) {
System.out.println("TOU AQUI NO WIFI RECEIVER !! ");
List<ScanResult> connResults=wifimanager.getScanResults();
List<String> scanResultsSSID = new ArrayList<>() ;
for(int i=0;i<connResults.size();i++){
String ssid=connResults.get(i).SSID;
scanResultsSSID.add(ssid);
if(ssid.contains("teste")){
System.out.println("Estou no : " + connResults.get(i).toString());
radarTextView.addKeyWord(ssid);
}
}
keywords=radarTextView.getKeyWords();
for(int j=0;j<keywords.size();j++){
String tmp=keywords.get(j);
System.out.println("this is one of the keyword : "+ tmp);
if(!scanResultsSSID.contains(tmp)){
radarTextView.removeKeyWord(tmp);
System.out.println("removed this : "+tmp);
}
}
radarTextView.show();
}
}
我知道我只是添加了一个名称为 "teste" 的网络,但这是我正在测试的 phone 之一上的 wifi 名称。如果我关闭它,它不会从另一个 phone.
中删除
使用 TimerTask
像这样
Timer timer = new Timer();
int DELAY=0;
int INTERVAL=10000;
timer.scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
connResults = wifimanager.getScanResults();
}
},DELAY,INTERVAL);
我有一个广播接收器来扫描可用网络,使用您可以在 Whosebug 上轻松找到的普通代码。
我正在为每个可用网络在我的布局中放置一个图标,问题是当一个网络被删除时,它仍然显示它。
问题是对于这个广播接收器,它正在监听的 action/intent 是 SCAN_RESULTS_AVAILABLE_ACTION 。一开始我可以调用 startScan(),但之后就不会再进行扫描了。它仅在我手动进入 phone.
上的 wifi 设置时进行扫描可能的解决方案是什么?它应该自动删除不再可用的网络,但为了做到这一点,它必须再次扫描,但我不知道我应该如何 "trigger" 再次扫描。
我的代码是:
public class WifiReceiver extends BroadcastReceiver {
private Vector<String> keywords;
public void onReceive(Context c, Intent intent) {
System.out.println("TOU AQUI NO WIFI RECEIVER !! ");
List<ScanResult> connResults=wifimanager.getScanResults();
List<String> scanResultsSSID = new ArrayList<>() ;
for(int i=0;i<connResults.size();i++){
String ssid=connResults.get(i).SSID;
scanResultsSSID.add(ssid);
if(ssid.contains("teste")){
System.out.println("Estou no : " + connResults.get(i).toString());
radarTextView.addKeyWord(ssid);
}
}
keywords=radarTextView.getKeyWords();
for(int j=0;j<keywords.size();j++){
String tmp=keywords.get(j);
System.out.println("this is one of the keyword : "+ tmp);
if(!scanResultsSSID.contains(tmp)){
radarTextView.removeKeyWord(tmp);
System.out.println("removed this : "+tmp);
}
}
radarTextView.show();
}
}
我知道我只是添加了一个名称为 "teste" 的网络,但这是我正在测试的 phone 之一上的 wifi 名称。如果我关闭它,它不会从另一个 phone.
中删除使用 TimerTask
像这样
Timer timer = new Timer();
int DELAY=0;
int INTERVAL=10000;
timer.scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
connResults = wifimanager.getScanResults();
}
},DELAY,INTERVAL);