content: package com.wm.remusic.net;
  
  /**
   * Created by wm on 2016/5/15.
   */
  
  import android.content.Context;
  import android.net.ConnectivityManager;
  import android.net.NetworkInfo;
  
  import java.net.InetAddress;
  import java.net.NetworkInterface;
  import java.net.SocketException;
  import java.util.Enumeration;
  
  
  public class NetworkUtils {
      public static final String NET_TYPE_WIFI = "WIFI";
      public static final String NET_TYPE_MOBILE = "MOBILE";
      public static final String NET_TYPE_NO_NETWORK = "no_network";
  
      private Context mContext = null;
  
      public NetworkUtils(Context pContext) {
          this.mContext = pContext;
      }
  
      public static final String IP_DEFAULT = "0.0.0.0";
  
      public static boolean isConnectInternet(final Context pContext) {
          final ConnectivityManager conManager = (ConnectivityManager) pContext.getSystemService(Context.CONNECTIVITY_SERVICE);
          final NetworkInfo networkInfo = conManager.getActiveNetworkInfo();
  
          if (networkInfo != null) {
              return networkInfo.isAvailable();
          }
  
          return false;
      }
  
      public static boolean isConnectWifi(final Context pContext) {
          ConnectivityManager mConnectivity = (ConnectivityManager) pContext.getSystemService(Context.CONNECTIVITY_SERVICE);
          NetworkInfo info = mConnectivity.getActiveNetworkInfo();
          //判断网络连接类型，只有在3G或wifi里进行一些数据更新。
          int netType = -1;
          if (info != null) {
              netType = info.getType();
          }
          if (netType == ConnectivityManager.TYPE_WIFI) {
              return info.isConnected();
          } else {
              return false;
          }
      }
  
      public static String getNetTypeName(final int pNetType) {
          switch (pNetType) {
              case 0:
                  return "unknown";
              case 1:
                  return "GPRS";
              case 2:
                  return "EDGE";
              case 3:
                  return "UMTS";
              case 4:
                  return "CDMA: Either IS95A or IS95B";
              case 5:
                  return "EVDO revision 0";
              case 6:
                  return "EVDO revision A";
              case 7:
                  return "1xRTT";
              case 8:
                  return "HSDPA";
              case 9:
                  return "HSUPA";
              case 10:
                  return "HSPA";
              case 11:
                  return "iDen";
              case 12:
                  return "EVDO revision B";
              case 13:
                  return "LTE";
              case 14:
                  return "eHRPD";
              case 15:
                  return "HSPA+";
              default:
                  return "unknown";
          }
      }
  
      public static String getIPAddress() {
          try {
              final Enumeration<NetworkInterface> networkInterfaceEnumeration = NetworkInterface.getNetworkInterfaces();
  
              while (networkInterfaceEnumeration.hasMoreElements()) {
                  final NetworkInterface networkInterface = networkInterfaceEnumeration.nextElement();
  
                  final Enumeration<InetAddress> inetAddressEnumeration = networkInterface.getInetAddresses();
  
                  while (inetAddressEnumeration.hasMoreElements()) {
                      final InetAddress inetAddress = inetAddressEnumeration.nextElement();
  
                      if (!inetAddress.isLoopbackAddress()) {
                          return inetAddress.getHostAddress();
                      }
                  }
              }
  
              return NetworkUtils.IP_DEFAULT;
          } catch (final SocketException e) {
              return NetworkUtils.IP_DEFAULT;
          }
      }
  
      public String getConnTypeName() {
          ConnectivityManager connectivityManager = (ConnectivityManager) this.mContext.getSystemService(Context.CONNECTIVITY_SERVICE);
          NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();
          if (networkInfo == null) {
              return NET_TYPE_NO_NETWORK;
          } else {
              return networkInfo.getTypeName();
          }
      }
  }