首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >扫描接入点(WifiManager)

扫描接入点(WifiManager)
EN

Stack Overflow用户
提问于 2012-10-31 01:37:30
回答 2查看 1K关注 0票数 3

我正在尝试使用类WifiManager (StartScan)扫描一些访问点,这种扫描发生在触摸事件中,但它在每次触摸中只进行一次扫描。问题是,我需要将这个过程设置为10、20或我想要的数字的倍数;但是我不知道如何做到这一点。因为我认为有一个for cycle就足够了,但是这个方法对我不起作用。

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

代码语言:javascript
复制
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循环,但不起作用。

代码语言:javascript
复制
for(int i=1;i <= 10;i++){ 
w.startScan();
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-10-31 02:32:45

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

代码语言:javascript
复制
        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次。

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

票数 1
EN

Stack Overflow用户

发布于 2012-10-31 02:21:01

扫描是一个需要很长时间才能完成的命令。在扫描时,忽略其他扫描命令。

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

为什么需要连续执行10次扫描?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13144629

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档