Android手机网络NetWorkType对应的常量值

Android手机网络NetWorkType对应的常量值
本篇是为了方便以后使用,无需再百度

这里写图片描述
这是对应的参数类型

/**
* GPRS 2G(2.5) General Packet Radia Service 114kbps
* EDGE 2G(2.75G) Enhanced Data Rate for GSM Evolution 384kbps
* UMTS 3G WCDMA 联通3G Universal MOBILE Telecommunication System 完整的3G移动通信技术标准
* CDMA 2G 电信 Code Division Multiple Access 码分多址
* EVDO_0 3G (EVDO 全程 CDMA2000 1xEV-DO) Evolution - Data Only (Data Optimized) 153.6kps - 2.4mbps 属于3G
* EVDO_A 3G 1.8mbps - 3.1mbps 属于3G过渡,3.5G
* 1xRTT 2G CDMA2000 1xRTT (RTT - 无线电传输技术) 144kbps 2G的过渡,
* HSDPA 3.5G 高速下行分组接入 3.5G WCDMA High Speed Downlink Packet Access 14.4mbps
* HSUPA 3.5G High Speed Uplink Packet Access 高速上行链路分组接入 1.4 - 5.8 mbps
* HSPA 3G (分HSDPA,HSUPA) High Speed Packet Access
* IDEN 2G Integrated Dispatch Enhanced Networks 集成数字增强型网络 (属于2G,来自维基百科)
* EVDO_B 3G EV-DO Rev.B 14.7Mbps 下行 3.5G
* LTE 4G Long Term Evolution FDD-LTE 和 TDD-LTE , 3G过渡,升级版 LTE Advanced 才是4G
* EHRPD 3G CDMA2000向LTE 4G的中间产物 Evolved High Rate Packet Data HRPD的升级
* HSPAP 3G HSPAP 比 HSDPA 快些
*
* @return {@link NetWorkType}
*/
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
自己写的判断网络的工具类

package me.anany.weikandian.utils;

import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.telephony.TelephonyManager;
import android.util.Log;

import java.lang.reflect.Method;

/**
* Created by houshuai
*


* Email:[email protected]
*/
public class NetworkUtil {

private static final String TAG = NetworkUtil.class.getSimpleName();

/**
 * 获取ConnectivityManager
 */
public static ConnectivityManager getConnectivityManager(Context context) {
    return (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
}

/**
 * 获取ConnectivityManager
 */
public static TelephonyManager getTelephonyManager(Context context) {
    return (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
}
//
//public enum NetSubType {
//    NONE(1),
//    MOBILE(2),
//    WIFI(4),
//    OTHER(8);
//
//    NetType(int value) {
//        this.value = value;
//    }
//
//    public int value;
//}

/**
 * 判断网络连接是否有效(此时可传输数据)。
 *
 * @return boolean 不管wifi,还是mobile net,只有当前在连接状态(可有效传输数据)才返回true,反之false。
 */
public static boolean isConnected(Context context) {
    NetworkInfo net = getConnectivityManager(context).getActiveNetworkInfo();
    return net != null && net.isConnected();
}

/**
 * 判断有无网络正在连接中(查找网络、校验、获取IP等)。
 *
 * @return boolean 不管wifi,还是mobile net,只有当前在连接状态(可有效传输数据)才返回true,反之false。
 */
public static boolean isConnectedOrConnecting(Context context) {
    NetworkInfo[] nets = getConnectivityManager(context).getAllNetworkInfo();
    if (nets != null) {
        for (NetworkInfo net : nets) {
            if (net.isConnectedOrConnecting()) {
                return true;
            }
        }
    }
    return false;
}

public static NetType getConnectedType(Context context) {
    NetworkInfo net = getConnectivityManager(context).getActiveNetworkInfo();
    if (net != null) {
        switch (net.getType()) {
            case ConnectivityManager.TYPE_WIFI:
                return NetType.WIFI;
            case ConnectivityManager.TYPE_MOBILE:
                return NetType.MOBILE;
            default:
                return NetType.OTHER;
        }
    }
    return NetType.NONE;
}

/**
 * 是否存在有效的WIFI连接
 */
public static boolean isWifiConnected(Context context) {
    NetworkInfo net = getConnectivityManager(context).getActiveNetworkInfo();
    return net != null && net.getType() == ConnectivityManager.TYPE_WIFI && net.isConnected();
}

/**
 * 是否存在有效的移动连接
 *
 * @return boolean
 */
public static boolean isMobileConnected(Context context) {
    NetworkInfo net = getConnectivityManager(context).getActiveNetworkInfo();
    return net != null && net.getType() == ConnectivityManager.TYPE_MOBILE && net.isConnected();
}

/**
 * 检测网络是否为可用状态
 */
public static boolean isAvailable(Context context) {
    return isWifiAvailable(context) || (isMobileAvailable(context) && isMobileEnabled(context));
}

/**
 * 判断是否有可用状态的Wifi,以下情况返回false:
 * 1. 设备wifi开关关掉;
 * 2. 已经打开飞行模式;
 * 3. 设备所在区域没有信号覆盖;
 * 4. 设备在漫游区域,且关闭了网络漫游。
 *
 * @return boolean wifi为可用状态(不一定成功连接,即Connected)即返回ture
 */
public static boolean isWifiAvailable(Context context) {
    NetworkInfo[] nets = getConnectivityManager(context).getAllNetworkInfo();
    if (nets != null) {
        for (NetworkInfo net : nets) {
            if (net.getType() == ConnectivityManager.TYPE_WIFI) {
                return net.isAvailable();
            }
        }
    }
    return false;
}

/**
 * 判断有无可用状态的移动网络,注意关掉设备移动网络直接不影响此函数。
 * 也就是即使关掉移动网络,那么移动网络也可能是可用的(彩信等服务),即返回true。
 * 以下情况它是不可用的,将返回false:
 * 1. 设备打开飞行模式;
 * 2. 设备所在区域没有信号覆盖;
 * 3. 设备在漫游区域,且关闭了网络漫游。
 *
 * @return boolean
 */
public static boolean isMobileAvailable(Context context) {
    NetworkInfo[] nets = getConnectivityManager(context).getAllNetworkInfo();
    if (nets != null) {
        for (NetworkInfo net : nets) {
            if (net.getType() == ConnectivityManager.TYPE_MOBILE) {
                return net.isAvailable();
            }
        }
    }
    return false;
}

/**
 * 设备是否打开移动网络开关
 *
 * @return boolean 打开移动网络返回true,反之false
 */
public static boolean isMobileEnabled(Context context) {
    try {
        Method getMobileDataEnabledMethod = ConnectivityManager.class.getDeclaredMethod("getMobileDataEnabled");
        getMobileDataEnabledMethod.setAccessible(true);
        return (Boolean) getMobileDataEnabledMethod.invoke(getConnectivityManager(context));
    } catch (Exception e) {
        e.printStackTrace();
    }
    // 反射失败,默认开启
    return true;
}

/**
 * 打印当前各种网络状态
 *
 * @return boolean
 */
public static boolean printNetworkInfo(Context context) {
    ConnectivityManager connectivity = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
    if (connectivity != null) {
        NetworkInfo in = connectivity.getActiveNetworkInfo();
        Log.i(TAG, "-------------$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$-------------");
        Log.i(TAG, "getActiveNetworkInfo: " + in);
        NetworkInfo[] info = connectivity.getAllNetworkInfo();
        if (info != null) {
            for (int i = 0; i < info.length; i++) {
                // if (info[i].getType() == ConnectivityManager.TYPE_WIFI) {
                Log.i(TAG, "NetworkInfo[" + i + "]isAvailable : " + info[i].isAvailable());
                Log.i(TAG, "NetworkInfo[" + i + "]isConnected : " + info[i].isConnected());
                Log.i(TAG, "NetworkInfo[" + i + "]isConnectedOrConnecting : " + info[i].isConnectedOrConnecting());
                Log.i(TAG, "NetworkInfo[" + i + "]: " + info[i]);
                // }
            }
            Log.i(TAG, "\n");
        } else {
            Log.i(TAG, "getAllNetworkInfo is null");
        }
    }
    return false;
}

/**
 * get connected network type by {@link ConnectivityManager}
 * <p>
 * such as WIFI, MOBILE, ETHERNET, BLUETOOTH, etc.
 *
 * @return {@link ConnectivityManager#TYPE_WIFI}, {@link ConnectivityManager#TYPE_MOBILE},
 * {@link ConnectivityManager#TYPE_ETHERNET}...
 */
public static int getConnectedTypeINT(Context context) {
    NetworkInfo net = getConnectivityManager(context).getActiveNetworkInfo();
    if (net != null) {
        Log.i(TAG, "NetworkInfo: " + net.toString());
        return net.getType();
    }
    return -1;
}

/**
 * get network type by {@link TelephonyManager}
 * <p>
 * such as 2G, 3G, 4G, etc.
 *
 * @return {@link TelephonyManager#NETWORK_TYPE_CDMA}, {@link TelephonyManager#NETWORK_TYPE_GPRS},
 * {@link TelephonyManager#NETWORK_TYPE_LTE}...
 */
public static int getTelNetworkTypeINT(Context context) {
    return getTelephonyManager(context).getNetworkType();
}

/**
 * GPRS    2G(2.5) General Packet Radia Service 114kbps
 * EDGE    2G(2.75G) Enhanced Data Rate for GSM Evolution 384kbps
 * UMTS    3G WCDMA 联通3G Universal MOBILE Telecommunication System 完整的3G移动通信技术标准
 * CDMA    2G 电信 Code Division Multiple Access 码分多址
 * EVDO_0  3G (EVDO 全程 CDMA2000 1xEV-DO) Evolution - Data Only (Data Optimized) 153.6kps - 2.4mbps 属于3G
 * EVDO_A  3G 1.8mbps - 3.1mbps 属于3G过渡,3.5G
 * 1xRTT   2G CDMA2000 1xRTT (RTT - 无线电传输技术) 144kbps 2G的过渡,
 * HSDPA   3.5G 高速下行分组接入 3.5G WCDMA High Speed Downlink Packet Access 14.4mbps
 * HSUPA   3.5G High Speed Uplink Packet Access 高速上行链路分组接入 1.4 - 5.8 mbps
 * HSPA    3G (分HSDPA,HSUPA) High Speed Packet Access
 * IDEN    2G Integrated Dispatch Enhanced Networks 集成数字增强型网络 (属于2G,来自维基百科)
 * EVDO_B  3G EV-DO Rev.B 14.7Mbps 下行 3.5G
 * LTE     4G Long Term Evolution FDD-LTE 和 TDD-LTE , 3G过渡,升级版 LTE Advanced 才是4G
 * EHRPD   3G CDMA2000向LTE 4G的中间产物 Evolved High Rate Packet Data HRPD的升级
 * HSPAP   3G HSPAP 比 HSDPA 快些
 *
 * @return {@link  NetWorkType}
 */
public static NetWorkType getNetworkType(Context context) {
    int type = getConnectedTypeINT(context);
    switch (type) {
        case ConnectivityManager.TYPE_WIFI:
            return NetWorkType.WIFI;
        case ConnectivityManager.TYPE_MOBILE:
        case ConnectivityManager.TYPE_MOBILE_DUN:
        case ConnectivityManager.TYPE_MOBILE_HIPRI:
        case ConnectivityManager.TYPE_MOBILE_MMS:
        case ConnectivityManager.TYPE_MOBILE_SUPL:
            int teleType = getTelephonyManager(context).getNetworkType();
            switch (teleType) {
                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 NetWorkType.NET_2_G;
                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 NetWorkType.NET_3_G;
                case TelephonyManager.NETWORK_TYPE_LTE:
                    return NetWorkType.NET_4_G;
                default:
                    return NetWorkType.UN_KNOWN;
            }
        default:
            return NetWorkType.UN_KNOWN;
    }
}

public enum NetType {
    NONE(1),
    MOBILE(2),
    WIFI(4),
    OTHER(8);

    public int value;

    NetType(int value) {
        this.value = value;
    }
}

public enum NetWorkType {
    UN_KNOWN(-1),
    WIFI(1),
    NET_2_G(2),
    NET_3_G(3),
    NET_4_G(4);

    public int value;

    NetWorkType(int value) {
        this.value = value;
    }
}

}

猜你喜欢

转载自blog.csdn.net/qq_20172379/article/details/79216862