package com.yixia.camera.demo.utils; import java.net.InetAddress; import java.net.NetworkInterface; import java.util.Collections; import java.util.List; import org.apache.http.conn.util.InetAddressUtils; import android.content.Context; import android.net.ConnectivityManager; import android.net.NetworkInfo; import android.telephony.TelephonyManager; public class NetworkUtils { public static boolean isWifiAvailable(Context ctx) { ConnectivityManager manager = (ConnectivityManager) ctx .getSystemService(Context.CONNECTIVITY_SERVICE); return manager.getNetworkInfo(ConnectivityManager.TYPE_WIFI) .isConnected(); } /** * 检测网络连接是否可用 * * @param ctx * @return true 可用; false 不可用 */ public static boolean isNetworkAvailable(Context ctx) { ConnectivityManager cm = (ConnectivityManager) ctx .getSystemService(Context.CONNECTIVITY_SERVICE); if (cm == null) { return false; } try { NetworkInfo[] netinfo = cm.getAllNetworkInfo(); if (netinfo == null) { return false; } for (NetworkInfo element : netinfo) { if (element.isConnected()) { return true; } } } catch (Exception ex) { } return false; } /** * Get IP address from first non-localhost interface * * @param ipv4 * true=return ipv4, false=return ipv6 * @return address or empty string */ public static String getIPAddress(boolean useIPv4) { try { List<NetworkInterface> interfaces = Collections .list(NetworkInterface.getNetworkInterfaces()); for (NetworkInterface intf : interfaces) { List<InetAddress> addrs = Collections.list(intf .getInetAddresses()); for (InetAddress addr : addrs) { if (!addr.isLoopbackAddress()) { String sAddr = addr.getHostAddress().toUpperCase(); boolean isIPv4 = InetAddressUtils.isIPv4Address(sAddr); if (useIPv4) { if (isIPv4) return sAddr; } else { if (!isIPv4) { int delim = sAddr.indexOf('%'); // drop ip6 port // suffix return delim < 0 ? sAddr : sAddr.substring(0, delim); } } } } } } catch (Exception ex) { } // for now eat exceptions return ""; } public static String getNetworkTypeName(Context context) { if (context != null) { ConnectivityManager connectMgr = (ConnectivityManager) context .getSystemService(Context.CONNECTIVITY_SERVICE); if (connectMgr != null) { NetworkInfo info = connectMgr.getActiveNetworkInfo(); if (info != null) { switch (info.getType()) { case ConnectivityManager.TYPE_WIFI: return "WIFI"; case ConnectivityManager.TYPE_MOBILE: return getNetworkTypeName(info.getSubtype()); } } } } return getNetworkTypeName(TelephonyManager.NETWORK_TYPE_UNKNOWN); } public static String getNetworkTypeName(int type) { switch (type) { case TelephonyManager.NETWORK_TYPE_GPRS: return "GPRS"; case TelephonyManager.NETWORK_TYPE_EDGE: return "EDGE"; case TelephonyManager.NETWORK_TYPE_UMTS: return "UMTS"; case TelephonyManager.NETWORK_TYPE_HSDPA: return "HSDPA"; case TelephonyManager.NETWORK_TYPE_HSUPA: return "HSUPA"; case TelephonyManager.NETWORK_TYPE_HSPA: return "HSPA"; case TelephonyManager.NETWORK_TYPE_CDMA: return "CDMA"; case TelephonyManager.NETWORK_TYPE_EVDO_0: return "CDMA - EvDo rev. 0"; case TelephonyManager.NETWORK_TYPE_EVDO_A: return "CDMA - EvDo rev. A"; case TelephonyManager.NETWORK_TYPE_EVDO_B: return "CDMA - EvDo rev. B"; case TelephonyManager.NETWORK_TYPE_1xRTT: return "CDMA - 1xRTT"; case TelephonyManager.NETWORK_TYPE_LTE: return "LTE"; case TelephonyManager.NETWORK_TYPE_EHRPD: return "CDMA - eHRPD"; case TelephonyManager.NETWORK_TYPE_IDEN: return "iDEN"; case TelephonyManager.NETWORK_TYPE_HSPAP: return "HSPA+"; default: return "UNKNOWN"; } } }