博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
android获取周围AP信息(下)
阅读量:4648 次
发布时间:2019-06-09

本文共 1100 字,大约阅读时间需要 3 分钟。

疑问:

  在上一篇中,还有一个问题未解决:WifiManager的startscan() 方法是立即返回的,也就是说这个方法会调用一个扫描wifi信号的线程,那么这个扫描什么时候结束呢?我们又该什么时候调用WifiManager的getScanResults()获取扫描结果呢?

解答:

  当调用WifiManager的startscan() 方法,扫描结束后,系统会发出WifiManager.SCAN_RESULTS_AVAILABLE_ACTION广播,因此我们只需要定一个BroadcastRecever接受处理这个广播就行。我的手机测试,差不多扫描一次要花1s左右。

 

1、定义一个处理扫描结果的BroadcastRecever,当扫描结束后,会调用onReceive()方法。

注意:WifiManager.SCAN_RESULTS_AVAILABLE_ACTION这个监听,如果有可用的wifi,并且没有连任何wifi的话,会自动触发onReceive()方法,一旦连接成功则不在执行。

1 //wifi扫描结束后的结果处理类 2     private final class WifiReceiver extends BroadcastReceiver{ 3 //当扫描结束后将会触发该方法 4 public void onReceive(Context context, Intent intent){ 5 List
scanList = wm.getScanResults(); 6 for(ScanResult scanResult : scanList){ 7 //对扫描结果的操作 8 9 } 10 } 11 }

2、注册服务,注销服务。建议分别在OnResume()和OnPause()中注册和注销服务。

1     public void onResume(){2         super.onResume(); 3 registerReceiver(wifiReceiver, new IntentFilter(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION)); //注册服务 4 } 5 protected void onPause(){ 6 super.onPause(); 7 unregisterReceiver(wifiReceiver); //取消注册 8 }

转载于:https://www.cnblogs.com/wanghuaijun/p/7776517.html

你可能感兴趣的文章
多媒体音量条显示异常跳动
查看>>
运算符及题目(2017.1.8)
查看>>
React接入Sentry.js
查看>>
ssh自动分发密匙脚本样板
查看>>
转 小辉_Ray CORS(跨域资源共享)
查看>>
Linux安装postgresql
查看>>
MyBatis启动:MapperStatement创建
查看>>
【 全干货 】5 分钟带你看懂 Docker !
查看>>
[转]优化Flash性能
查看>>
popStar手机游戏机机对战程序
查看>>
Java Web项目结构
查看>>
lambda表达式树
查看>>
二次注入原理及防御
查看>>
会话记住已登录功能
查看>>
Linux内核分析——可执行程序的装载
查看>>
儿子和女儿——解释器和编译器的区别与联系
查看>>
第一阶段冲刺3
查看>>
父类引用指向子类对象
查看>>
网页如何实现下载功能
查看>>
IT男专用表白程序
查看>>