/**
*
* @author cj 判斷網絡工具類
*
*/
public class NetUtil {
/**
* 沒有連接網絡
*/
private static final int NETWORK_NONE = -1;
/**
* 移動網絡
*/
private static final int NETWORK_MOBILE = 0;
/**
* 無線網絡
*/
private static final int NETWORK_WIFI = 1;
/**
* 2G網絡
*/
public static final int NETWORK_2G = 2;
/**
* 3G網絡
*/
public static final int NETWORK_3G = 3;
/**
* 4G網絡
*/
public static final int NETWORK_4G = 4;
/**
* 未知
*/
public static final int NETWORK_UNKNOW = -2;
/**
* 定義電話管理器對象
*/
public static TelephonyManager mTelephonyManager;
/**
* 定義連接管理器對象
*/
public static ConnectivityManager mConnectivityManager;
/**
* 定義網絡信息對象
*/
public static NetworkInfo mNetworkInfo;
/**
* 得到網絡類型
*
* @param context
* @return 網絡類型
*/
public static int getNetWrokState(Context context) {
// 得到連接管理器對象
mConnectivityManager = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
mNetworkInfo = mConnectivityManager.getActiveNetworkInfo();
if (mNetworkInfo != null && mNetworkInfo.isConnected()) {
if (mNetworkInfo.getType() == (ConnectivityManager.TYPE_WIFI)) {
return NETWORK_WIFI;
} else if (mNetworkInfo.getType() == (ConnectivityManager.TYPE_MOBILE)) {
return getMobileNetType(context);
}
}
return NETWORK_NONE;
}
/**
* 判斷是否連接上
*
* @return
*/
public static final boolean isNetConnected() {
if (mNetworkInfo != null && mNetworkInfo.isConnected()) {
return true;
}
return false;
}
/**
* 獲取移動網絡的類型
*
* @param context
* @return 移動網絡類型
*/
public static final int getMobileNetType(Context context) {
mTelephonyManager = (TelephonyManager) context
.getSystemService(Context.TELEPHONY_SERVICE);
int networkType = mTelephonyManager.getNetworkType();
return getNetworkClass(networkType);
}
/**
* 判斷移動網絡的類型
*
* @param networkType
* @return 移動網絡類型
*/
private static final int getNetworkClass(int networkType) {
switch (networkType) {
case TelephonyManager.NETWORK_TYPE_GPRS:
case TelephonyManager.NETWORK_TYPE_EDGE:
case TelephonyManager.NETWORK_TYPE_CDMA:
case TelephonyManager.NETWORK_TYPE_1xRTT:
case TelephonyManager.NETWORK_TYPE_IDEN:
return NETWORK_2G;
case TelephonyManager.NETWORK_TYPE_UMTS:
case TelephonyManager.NETWORK_TYPE_EVDO_0:
case TelephonyManager.NETWORK_TYPE_EVDO_A:
case TelephonyManager.NETWORK_TYPE_HSDPA:
case TelephonyManager.NETWORK_TYPE_HSUPA:
case TelephonyManager.NETWORK_TYPE_HSPA:
case TelephonyManager.NETWORK_TYPE_EVDO_B:
case TelephonyManager.NETWORK_TYPE_EHRPD:
case TelephonyManager.NETWORK_TYPE_HSPAP:
return NETWORK_3G;
case TelephonyManager.NETWORK_TYPE_LTE:
return NETWORK_4G;
default:
return NETWORK_UNKNOW;
}
}
}
Android 判斷網絡類型 wifi,2G,3G,4G
我之前寫了一篇關於事實監測網絡的文章,用到過這個工具類。這幾天又需要詳細的判斷網絡的類型,把這個工具類給完善一下。
這個工具類我是用的小米移動卡測試的沒有問題,電信和聯通,沒有測試所以有沒有bug也不清楚,如果有需要的同志的們,看一下,如果測試出有bug希望告知一下,共同進步
看圖。。沒有動態的。。。是截屏。紅字是發生變化的。上一篇的效果
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.