扫描访问点(WifiManager)

时间:2012-10-30 17:37:30

标签: android

我正在尝试使用类WifiManager(StartScan)扫描某些接入点,此扫描发生在触摸事件中,但它只是在每次触摸中进行一次扫描。问题是我需要制作这个过程10,20或我想要的次数;但我不知道怎么做到这一点。因为我认为只用一个循环就足够了,但这种方法对我不起作用。

这是我的onTouch方法,我需要每次触摸屏幕时重复10次

public boolean onTouch(View v, MotionEvent event) { 
// TODO Auto-generated method stub 
WifiManager w = (WifiManager) getSystemService(Context.WIFI_SERVICE);
texto.setLength(0); 
switch (event.getAction()){ 
case MotionEvent.ACTION_DOWN:
texto.append("down"; posx:(double) event.getX(); posy:(double) event.getY();    
w.startScan(); 
break;
}
return false; 
}

我尝试了下一个循环,但没有工作

for(int i=1;i <= 10;i++){ 
w.startScan();
}

2 个答案:

答案 0 :(得分:1)

您需要请求扫描,然后在BroadcastReceiver中等待结果,如下所示:

        BroadcastReceiver receiver_aps = new BroadcastReceiver()
        {
            @Override
            public void onReceive(Context c, Intent intent) 
            {
               List<WifiConfiguration> results = wifiManager.getConfiguredNetworks();
               List<ScanResult> scanResults = wifiManager.getScanResults();   
            }
        };

        IntentFilter filter = new IntentFilter();
        filter.addAction(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION);
        registerReceiver(receiver_aps,filter);  

扫描完成后,您可以再次请求扫描(在BroadcastReceiver中)保留一个计数器以确保您只执行十次。

您当前的代码在完成初始扫描所需的时间内请求10次扫描,因此忽略所有后续扫描请求。

答案 1 :(得分:0)

扫描是一项需要很长时间才能完成的命令。扫描其他扫描命令时会被忽略。

扫描发送探测并等待所有2.4GHz和5GHz频道(一次一个)的答案 为什么需要连续10次发出扫描?