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); 
 | 
    } 
 | 
  
 | 
} 
 |