Android 扫描访问点(WifiManager)

Android 扫描访问点(WifiManager),android,Android,我试图用WifiManager类(StartScan)扫描一些接入点,这种扫描发生在触摸事件中,但每次触摸只进行一次扫描。问题是我需要将这个过程设置为10、20或我想要的次数;然而,我不知道我如何才能做到这一点。因为我认为用一个循环就足够了,但这种方法对我不起作用 这是我的onTouch方法,我需要每次触摸屏幕都重复10次 public boolean onTouch(View v, MotionEvent event) { // TODO Auto-generated method stub

我试图用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();
}

for(int i=1;iScan是一个需要很长时间才能完成的命令。扫描时忽略其他扫描命令

扫描发送探头,并在所有2.4GHz和5GHz通道中等待应答(一次一个)。

为什么您需要连续发出扫描10次?

您需要请求扫描,然后在广播接收器中等待结果,如下所示:

        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\u aps=new BroadcastReceiver()
{
@凌驾
接收时公共无效(上下文c,意图)
{
List results=wifiManager.getConfiguredNetworks();
List scanResults=wifiManager.getScanResults();
}
};
IntentFilter=newintentfilter();
filter.addAction(WifiManager.SCAN\u RESULTS\u AVAILABLE\u ACTION);
寄存器接收器(接收器、滤波器);
扫描完成后,您可以再次请求扫描(在BroadcastReceiver中),并保留一个计数器,以确保只扫描十次


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

非常感谢,您的回答非常有用,现在我可以继续使用我的应用程序。