package com.doumee.lib_coremodel.http.utils;
|
|
import android.content.Context;
|
import android.net.ConnectivityManager;
|
import android.net.NetworkInfo;
|
import android.telephony.TelephonyManager;
|
|
import java.io.IOException;
|
import java.net.HttpURLConnection;
|
import java.net.InetAddress;
|
import java.net.NetworkInterface;
|
import java.net.SocketException;
|
import java.net.URL;
|
import java.util.Enumeration;
|
|
public class NetworkUtil {
|
public static String url = "http://www.baidu.com";
|
public static int NET_CNNT_BAIDU_OK = 1; // NetworkAvailable
|
public static int NET_CNNT_BAIDU_TIMEOUT = 2; // no NetworkAvailable
|
public static int NET_NOT_PREPARE = 3; // Net no ready
|
public static int NET_ERROR = 4; //net error
|
private static int TIMEOUT = 3000; // TIMEOUT
|
|
|
/**
|
* check NetworkAvailable
|
* @param context
|
* @return
|
*/
|
public static boolean isNetworkAvailable(Context context) {
|
ConnectivityManager manager = (ConnectivityManager) context.getApplicationContext().getSystemService(
|
Context.CONNECTIVITY_SERVICE);
|
if (null == manager) {
|
return false;
|
}
|
NetworkInfo info = manager.getActiveNetworkInfo();
|
if (null == info || !info.isAvailable()) {
|
return false;
|
}
|
return true;
|
}
|
|
/**
|
* getLocalIpAddress
|
* @return
|
*/
|
public static String getLocalIpAddress() {
|
String ret = "";
|
try {
|
for (Enumeration<NetworkInterface> en = NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) {
|
NetworkInterface intf = en.nextElement();
|
for (Enumeration<InetAddress> enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements();) {
|
InetAddress inetAddress = enumIpAddr.nextElement();
|
if (!inetAddress.isLoopbackAddress()) {
|
ret = inetAddress.getHostAddress().toString();
|
}
|
}
|
}
|
} catch (SocketException ex) {
|
ex.printStackTrace();
|
}
|
return ret;
|
}
|
|
/**
|
* 返回当前网络状态
|
*
|
* @param context
|
* @return
|
*/
|
public static int getNetState(Context context) {
|
try {
|
ConnectivityManager connectivity = (ConnectivityManager) context
|
.getSystemService(Context.CONNECTIVITY_SERVICE);
|
if (connectivity != null) {
|
NetworkInfo networkinfo = connectivity.getActiveNetworkInfo();
|
if (networkinfo != null) {
|
if (networkinfo.isAvailable() && networkinfo.isConnected()) {
|
if (!connectionNetwork()) {
|
return NET_CNNT_BAIDU_TIMEOUT;
|
} else {
|
return NET_CNNT_BAIDU_OK;
|
}
|
} else {
|
return NET_NOT_PREPARE;
|
}
|
}
|
}
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
return NET_ERROR;
|
}
|
|
/**
|
*ping "http://www.baidu.com"
|
* @return
|
*/
|
static private boolean connectionNetwork() {
|
boolean result = false;
|
HttpURLConnection httpUrl = null;
|
try {
|
httpUrl = (HttpURLConnection) new URL(url)
|
.openConnection();
|
httpUrl.setConnectTimeout(TIMEOUT);
|
httpUrl.connect();
|
result = true;
|
} catch (IOException e) {
|
} finally {
|
if (null != httpUrl) {
|
httpUrl.disconnect();
|
}
|
httpUrl = null;
|
}
|
return result;
|
}
|
|
/**
|
* check is3G
|
* @param context
|
* @return boolean
|
*/
|
public static boolean is3G(Context context) {
|
ConnectivityManager connectivityManager = (ConnectivityManager) context
|
.getSystemService(Context.CONNECTIVITY_SERVICE);
|
NetworkInfo activeNetInfo = connectivityManager.getActiveNetworkInfo();
|
if (activeNetInfo != null
|
&& activeNetInfo.getType() == ConnectivityManager.TYPE_MOBILE) {
|
return true;
|
}
|
return false;
|
}
|
|
/**
|
* isWifi
|
* @param context
|
* @return boolean
|
*/
|
public static boolean isWifi(Context context) {
|
ConnectivityManager connectivityManager = (ConnectivityManager) context
|
.getSystemService(Context.CONNECTIVITY_SERVICE);
|
NetworkInfo activeNetInfo = connectivityManager.getActiveNetworkInfo();
|
if (activeNetInfo != null
|
&& activeNetInfo.getType() == ConnectivityManager.TYPE_WIFI) {
|
return true;
|
}
|
return false;
|
}
|
|
/**
|
* is2G
|
* @param context
|
* @return boolean
|
*/
|
public static boolean is2G(Context context) {
|
ConnectivityManager connectivityManager = (ConnectivityManager) context
|
.getSystemService(Context.CONNECTIVITY_SERVICE);
|
NetworkInfo activeNetInfo = connectivityManager.getActiveNetworkInfo();
|
if (activeNetInfo != null
|
&& (activeNetInfo.getSubtype() == TelephonyManager.NETWORK_TYPE_EDGE
|
|| activeNetInfo.getSubtype() == TelephonyManager.NETWORK_TYPE_GPRS || activeNetInfo
|
.getSubtype() == TelephonyManager.NETWORK_TYPE_CDMA)) {
|
return true;
|
}
|
return false;
|
}
|
|
/**
|
* is wifi on
|
*/
|
public static boolean isWifiEnabled(Context context) {
|
ConnectivityManager mgrConn = (ConnectivityManager) context
|
.getSystemService(Context.CONNECTIVITY_SERVICE);
|
TelephonyManager mgrTel = (TelephonyManager) context
|
.getSystemService(Context.TELEPHONY_SERVICE);
|
return ((mgrConn.getActiveNetworkInfo() != null && mgrConn
|
.getActiveNetworkInfo().getState() == NetworkInfo.State.CONNECTED) || mgrTel
|
.getNetworkType() == TelephonyManager.NETWORK_TYPE_UMTS);
|
}
|
|
}
|