[Android实例] 判断网络是否连接,然后选择网络类型(比如wifi等)来连接网络

public class Networks()

在平时上网的时候,需要判断网络是否连接,如果没有连接网络,就应该选择网络类型来连接网络 如wifi,移动来连接网络。
使用ConnectivityManager来管理网络,比如判断网络是否连接 public static boolean isConnected(Context context){}

public static boolean isConnected(Context context) {
                ConnectivityManager connectivity = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
                if (connectivity == null) {
                        return false;
                } else {
                        NetworkInfo[] info = connectivity.getAllNetworkInfo();
                        if (info != null) {
                                for (int i = 0; i < info.length; i++) {
                                        if (info.getState() == NetworkInfo.State.CONNECTED) {
                                                return true;
                                        }
                                }
                        }
                }
                return false;
        }
判断是否某种类型的连接

        public static boolean isConnectionType(Context context, int type) {
                ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
                NetworkInfo active = cm.getActiveNetworkInfo();
                return (active != null && active.getType() == type);
        }
         
        /**
         * 是否WIFI连接
         * @param context
         * @return
         */
        public static boolean isWIFI(Context context) {
                return isConnectionType(context, ConnectivityManager.TYPE_WIFI);
        }
         
        public static boolean is2GNetWork(Context context) {
                        ConnectivityManager connectivity = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
                        if (connectivity == null) {
                                return false;
                        } else {
                                ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
                                NetworkInfo net = cm.getActiveNetworkInfo();
                            if (net.getState() == NetworkInfo.State.CONNECTED) {
                                        int type    = net.getType();
                                        int subtype = net.getSubtype();
                                                         
                                        return !isConnectionFast(type, subtype);
                                }
                        }
                        return false;
        }
public static boolean isConnectionFast(int type, int subType){
        if(type==ConnectivityManager.TYPE_WIFI){
            return true;
        }else if(type==ConnectivityManager.TYPE_MOBILE){
            switch(subType){
            case TelephonyManager.NETWORK_TYPE_1xRTT:
                return false; // ~ 50-100 kbps
            case TelephonyManager.NETWORK_TYPE_CDMA:
                return false; // ~ 14-64 kbps
            case TelephonyManager.NETWORK_TYPE_EDGE:
                return false; // ~ 50-100 kbps
            case TelephonyManager.NETWORK_TYPE_EVDO_0:
                return true; // ~ 400-1000 kbps
            case TelephonyManager.NETWORK_TYPE_EVDO_A:
                return true; // ~ 600-1400 kbps
            case TelephonyManager.NETWORK_TYPE_GPRS:
                return false; // ~ 100 kbps
            case TelephonyManager.NETWORK_TYPE_HSDPA:
                return true; // ~ 2-14 Mbps
            case TelephonyManager.NETWORK_TYPE_HSPA:
                return true; // ~ 700-1700 kbps
            case TelephonyManager.NETWORK_TYPE_HSUPA:
                return true; // ~ 1-23 Mbps
            case TelephonyManager.NETWORK_TYPE_UMTS:
                return true; // ~ 400-7000 kbps
 case TelephonyManager.NETWORK_TYPE_UNKNOWN:
                return false;
            default:
                return false;
            }
        }else{
            return false;
        }
    }


你可能感兴趣的:(Android)