zoukankan      html  css  js  c++  java
  • android获取周围AP信息(下)

    疑问:

      在上一篇中,还有一个问题未解决: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<ScanResult> 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     }
    复制代码
  • 相关阅读:
    Html禁止粘贴 复制 剪切
    表单标签
    自构BeanHandler(用BeansUtils)
    spring配置中引入properties
    How Subcontracting Cockpit ME2ON creates SD delivery?
    cascadia code一款很好看的微软字体
    How condition value calculated in sap
    Code in SAP query
    SO Pricing not updated for partial billing items
    Javascript learning
  • 原文地址:https://www.cnblogs.com/wanghuaijun/p/7776517.html
Copyright © 2011-2022 走看看