• 热门专题

Android进阶 Android检测wifi连接状态

Tag标签:Android  进阶  Android  
  •  

    今天要实现监听系统Wifi连接状态,下面代码简化后提取出来的,以备后用。

    step1. 编写BroadcastReceiver

    import android.content.BroadcastReceiver;
    import android.content.Context;
    import android.content.Intent;
    import android.net.ConnectivityManager;
    import android.net.NetworkInfo;
    import android.net.NetworkInfo.State;
    import android.net.wifi.WifiInfo;
    import android.net.wifi.WifiManager;
    import android.text.format.Formatter;
    import android.util.Log;
    
    import com.canplay.systemui.QuickSettings;
    /**
     * @author ouyangpeng
     * @link http://blog.csdn.net/ouyang_peng
     */
    public class NetworkReceiver extends BroadcastReceiver {
    	@Override
    	public void onReceive(Context context, Intent intent) {
    		ConnectivityManager connectivityManager = (ConnectivityManager) context
    				.getSystemService(Context.CONNECTIVITY_SERVICE);
    
    		NetworkInfo net = connectivityManager.getActiveNetworkInfo();
    		if (net == null) {
    			Log.i("@@@@@@@@@@@@NetworkReceiver", "无网络连接");
    		} else {
    			Log.i("@@@@@@@@@@@@NetworkReceiver", "网络连接类型为" + net.getTypeName());
    		}
    		// wifi连接状态
    		State wifi = connectivityManager.getNetworkInfo(
    				ConnectivityManager.TYPE_WIFI).getState();
    		if (wifi == State.CONNECTED || wifi == State.CONNECTING) {
    			Log.i("@@@@@@@@@@@@NetworkReceiver", "连接wifi");
    			// wifi管理
    			WifiManager wifiManager = (WifiManager) context
    					.getSystemService(Context.WIFI_SERVICE);
    			WifiInfo wifiInfo = wifiManager.getConnectionInfo();
    			StringBuffer sb = new StringBuffer();
    			sb.append("
    获取BSSID属性(所连接的WIFI设备的MAC地址):" + wifiInfo.getBSSID());
    			// sb.append("getDetailedStateOf()  获取客户端的连通性:");
    			sb.append("
    
    获取SSID 是否被隐藏:" + wifiInfo.getHiddenSSID());
    			// IP地址转化为字符串格式
    			sb.append("
    
    获取IP 地址:" +  Formatter.formatIpAddress(wifiInfo.getIpAddress()));
    			sb.append("
    
    获取连接的速度:" + wifiInfo.getLinkSpeed());
    			sb.append("
    
    获取Mac 地址(手机本身网卡的MAC地址):" + wifiInfo.getMacAddress()==null?"No Wifi Device":wifiInfo.getMacAddress());
    			sb.append("
    
    获取802.11n 网络的信号:" + wifiInfo.getRssi());
    			sb.append("
    
    获取SSID(所连接的WIFI的网络名称):" + wifiInfo.getSSID());
    			sb.append("
    
    获取具体客户端状态的信息:" + wifiInfo.getSupplicantState());
    			Log.i("@@@@@@@@@@@@NetworkReceiver", "连接wifi的信息:
    "+sb.toString());
    			
    		} else if (wifi == State.DISCONNECTED || wifi == State.DISCONNECTING) {
    			Log.i("@@@@@@@@@@@@NetworkReceiver", "断开wifi");
    		}		
    		
    	}
    }
    

    step2. 配置BroadcastReceiver和相关权限

     

        
        

            
            
                
                    
                
                   
                  
                      
                  
            


    下面是通过logcat打印出来的信息

    当wifi连接上时候的信息:

     

    I/@@@@@@@@@@@@NetworkReceiver( 1653): 网络连接类型为WIFI
    I/@@@@@@@@@@@@NetworkReceiver( 1653): 连接wifi
    I/@@@@@@@@@@@@NetworkReceiver( 1653): 连接wifi的信息:
    I/@@@@@@@@@@@@NetworkReceiver( 1653): 
    I/@@@@@@@@@@@@NetworkReceiver( 1653): 获取BSSID属性(所连接的WIFI设备的MAC地址):20:dc:e6:71:10:e6
    I/@@@@@@@@@@@@NetworkReceiver( 1653): 
    I/@@@@@@@@@@@@NetworkReceiver( 1653): 获取SSID 是否被隐藏:false
    I/@@@@@@@@@@@@NetworkReceiver( 1653): 
    I/@@@@@@@@@@@@NetworkReceiver( 1653): 获取IP 地址:192.168.1.115
    I/@@@@@@@@@@@@NetworkReceiver( 1653): 
    I/@@@@@@@@@@@@NetworkReceiver( 1653): 获取连接的速度:48cc:b2:55:58:f2:02
    I/@@@@@@@@@@@@NetworkReceiver( 1653): 
    I/@@@@@@@@@@@@NetworkReceiver( 1653): 获取802.11n 网络的信号:-49
    I/@@@@@@@@@@@@NetworkReceiver( 1653): 
    I/@@@@@@@@@@@@NetworkReceiver( 1653): 获取SSID(所连接的WIFI的网络名称):FORMIKE
    I/@@@@@@@@@@@@NetworkReceiver( 1653): 
    I/@@@@@@@@@@@@NetworkReceiver( 1653): 获取具体客户端状态的信息:COMPLETED
    

    当wifi断开时候的信息:

     

     

    I/@@@@@@@@@@@@NetworkReceiver( 1653): 无网络连接
    I/@@@@@@@@@@@@NetworkReceiver( 1653): 断开wifi
    

About IT165 - 广告服务 - 隐私声明 - 版权申明 - 免责条款 - 网站地图 - 网友投稿 - 联系方式
本站内容来自于互联网,仅供用于网络技术学习,学习中请遵循相关法律法规