Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> 我的Android進階之旅------)Android檢測wifi連接狀態

我的Android進階之旅------)Android檢測wifi連接狀態

編輯:關於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


 

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved