加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

Android 判断用户2G/3G/4G移动数据网络

发布时间:2020-12-15 03:14:45 所属栏目:Java 来源:网络整理
导读:今天PHP站长网 52php.cn把收集自互联网的代码分享给大家,仅供参考。 Android 判断用户2G/3G/4G移动数据网络 /** Network type is unknown */public static final int NETWORK_TYPE_UNKNOWN = 0;/** Current network is G

以下代码由PHP站长网 52php.cn收集自互联网

现在PHP站长网小编把它分享给大家,仅供参考

Android 判断用户2G/3G/4G移动数据网络

/** Network type is unknown */
public static final int NETWORK_TYPE_UNKNOWN = 0;
/** Current network is GPRS */
public static final int NETWORK_TYPE_GPRS = 1;
/** Current network is EDGE */
public static final int NETWORK_TYPE_EDGE = 2;
/** Current network is UMTS */
public static final int NETWORK_TYPE_UMTS = 3;
/** Current network is CDMA: Either IS95A or IS95B*/
public static final int NETWORK_TYPE_CDMA = 4;
/** Current network is EVDO revision 0*/
public static final int NETWORK_TYPE_EVDO_0 = 5;
/** Current network is EVDO revision A*/
public static final int NETWORK_TYPE_EVDO_A = 6;
/** Current network is 1xRTT*/
public static final int NETWORK_TYPE_1xRTT = 7;
/** Current network is HSDPA */
public static final int NETWORK_TYPE_HSDPA = 8;
/** Current network is HSUPA */
public static final int NETWORK_TYPE_HSUPA = 9;
/** Current network is HSPA */
public static final int NETWORK_TYPE_HSPA = 10;
/** Current network is iDen */
public static final int NETWORK_TYPE_IDEN = 11;
/** Current network is EVDO revision B*/
public static final int NETWORK_TYPE_EVDO_B = 12;
/** Current network is LTE */
public static final int NETWORK_TYPE_LTE = 13;
/** Current network is eHRPD */
public static final int NETWORK_TYPE_EHRPD = 14;
/** Current network is HSPA+ */
public static final int NETWORK_TYPE_HSPAP = 15;

public static int getNetworkClass(int networkType) {
switch (networkType) {
case NETWORK_TYPE_GPRS:
case NETWORK_TYPE_EDGE:
case NETWORK_TYPE_CDMA:
case NETWORK_TYPE_1xRTT:
case NETWORK_TYPE_IDEN:
return NETWORK_CLASS_2_G;
case NETWORK_TYPE_UMTS:
case NETWORK_TYPE_EVDO_0:
case NETWORK_TYPE_EVDO_A:
case NETWORK_TYPE_HSDPA:
case NETWORK_TYPE_HSUPA:
case NETWORK_TYPE_HSPA:
case NETWORK_TYPE_EVDO_B:
case NETWORK_TYPE_EHRPD:
case NETWORK_TYPE_HSPAP:
return NETWORK_CLASS_3_G;
case NETWORK_TYPE_LTE:
return NETWORK_CLASS_4_G;
default:
return NETWORK_CLASS_UNKNOWN;
}
}
/** Unknown network class. {@hide} */
public static final int NETWORK_CLASS_UNKNOWN = 0;
/** Class of broadly defined "2G" networks. {@hide} */
public static final int NETWORK_CLASS_2_G = 1;
/** Class of broadly defined "3G" networks. {@hide} */
public static final int NETWORK_CLASS_3_G = 2;
/** Class of broadly defined "4G" networks. {@hide} */
public static final int NETWORK_CLASS_4_G = 3;
    import java.io.BufferedReader;  
    import java.io.InputStreamReader;  
    import java.text.DecimalFormat;  
    import java.util.List;  
      
    import android.content.Context;  
    import android.net.ConnectivityManager;  
    import android.net.NetworkInfo;  
    import android.net.wifi.WifiInfo;  
    import android.net.wifi.WifiManager;  
    import android.telephony.NeighboringCellInfo;  
    import android.telephony.TelephonyManager;  
    import android.telephony.cdma.CdmaCellLocation;  
    import android.telephony.gsm.GsmCellLocation;  
    import android.util.Log;  
      
    public class NetWorkUtil {  
      
        public static boolean isWifiAvailable() {  
            ConnectivityManager connectivityManager = (ConnectivityManager) ConfigManager  
                    .getContext().getSystemService(Context.CONNECTIVITY_SERVICE);  
            NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();  
            return (networkInfo != null && networkInfo.isConnected() && networkInfo  
                    .getType() == ConnectivityManager.TYPE_WIFI);  
        }  
      
        /** 
         * 获取MAC地址 
         *  
         * @param context 
         * @return 
         */  
        public static String getMacAddress(Context context) {  
            if (context == null) {  
                return "";  
            }  
      
            String localMac = null;  
            if (isWifiAvailable()) {  
                localMac = getWifiMacAddress(context);  
            }  
      
            if (localMac != null && localMac.length() > 0) {  
                localMac = localMac.replace(":","-").toLowerCase();  
                return localMac;  
            }  
      
            localMac = getMacFromCallCmd();  
            if (localMac != null) {  
                localMac = localMac.replace(":","-").toLowerCase();  
            }  
      
            return localMac;  
        }  
      
        private static String getWifiMacAddress(Context context) {  
            String localMac = null;  
            try {  
                WifiManager wifi = (WifiManager) context  
                        .getSystemService(Context.WIFI_SERVICE);  
                WifiInfo info = wifi.getConnectionInfo();  
                if (wifi.isWifiEnabled()) {  
                    localMac = info.getMacAddress();  
                    if (localMac != null) {  
                        localMac = localMac.replace(":","-").toLowerCase();  
                        return localMac;  
                    }  
                }  
      
            } catch (Exception e) {  
                e.printStackTrace();  
            }  
      
            return null;  
        }  
      
        /** 
         * 通过callCmd("busybox ifconfig","HWaddr")获取mac地址 
         *  
         * @attention 需要设备装有busybox工具 
         * @return Mac Address 
         */  
        private static String getMacFromCallCmd() {  
            String result = "";  
            result = callCmd("busybox ifconfig","HWaddr");  
      
            if (result == null || result.length() <= 0) {  
                return null;  
            }  
      
            DebugLog.v("tag","cmd result : " + result);  
      
            // 对该行数据进行解析  
            // 例如:eth0 Link encap:Ethernet HWaddr 00:16:E8:3E:DF:67  
            if (result.length() > 0 && result.contains("HWaddr") == true) {  
                String Mac = result.substring(result.indexOf("HWaddr") + 6,result.length() - 1);  
                if (Mac.length() > 1) {  
                    result = Mac.replaceAll(" ","");  
                }  
            }  
      
            return result;  
        }  
      
        public static String callCmd(String cmd,String filter) {  
            String result = "";  
            String line = "";  
            try {  
                Process proc = Runtime.getRuntime().exec(cmd);  
                InputStreamReader is = new InputStreamReader(proc.getInputStream());  
                BufferedReader br = new BufferedReader(is);  
      
                // 执行命令cmd,只取结果中含有filter的这一行  
                while ((line = br.readLine()) != null  
                        && line.contains(filter) == false) {  
                }  
      
                result = line;  
            } catch (Exception e) {  
                e.printStackTrace();  
            }  
            return result;  
        }  
      
        /** 
         * 网络是否可用 
         *  
         * @param context 
         * @return 
         */  
        public static boolean IsNetWorkEnable(Context context) {  
            try {  
                ConnectivityManager connectivity = (ConnectivityManager) context  
                        .getSystemService(Context.CONNECTIVITY_SERVICE);  
                if (connectivity == null) {  
                    ToastUtil.showMessage(context,"无法连接网络");  
                    return false;  
                }  
      
                NetworkInfo info = connectivity.getActiveNetworkInfo();  
                if (info != null && info.isConnected()) {  
                    // 判断当前网络是否已经连接  
                    if (info.getState() == NetworkInfo.State.CONNECTED) {  
                        return true;  
                    }  
                }  
      
            } catch (Exception e) {  
                e.printStackTrace();  
            }  
            ToastUtil.showMessage(context,"无法连接网络");  
            return false;  
        }  
      
        private static final int NETWORK_TYPE_UNAVAILABLE = -1;  
        // private static final int NETWORK_TYPE_MOBILE = -100;  
        private static final int NETWORK_TYPE_WIFI = -101;  
      
        private static final int NETWORK_CLASS_WIFI = -101;  
        private static final int NETWORK_CLASS_UNAVAILABLE = -1;  
        /** Unknown network class. */  
        private static final int NETWORK_CLASS_UNKNOWN = 0;  
        /** Class of broadly defined "2G" networks. */  
        private static final int NETWORK_CLASS_2_G = 1;  
        /** Class of broadly defined "3G" networks. */  
        private static final int NETWORK_CLASS_3_G = 2;  
        /** Class of broadly defined "4G" networks. */  
        private static final int NETWORK_CLASS_4_G = 3;  
      
        private static DecimalFormat df = new DecimalFormat("#.##");  
      
        // 适配低版本手机  
        /** Network type is unknown */  
        public static final int NETWORK_TYPE_UNKNOWN = 0;  
        /** Current network is GPRS */  
        public static final int NETWORK_TYPE_GPRS = 1;  
        /** Current network is EDGE */  
        public static final int NETWORK_TYPE_EDGE = 2;  
        /** Current network is UMTS */  
        public static final int NETWORK_TYPE_UMTS = 3;  
        /** Current network is CDMA: Either IS95A or IS95B */  
        public static final int NETWORK_TYPE_CDMA = 4;  
        /** Current network is EVDO revision 0 */  
        public static final int NETWORK_TYPE_EVDO_0 = 5;  
        /** Current network is EVDO revision A */  
        public static final int NETWORK_TYPE_EVDO_A = 6;  
        /** Current network is 1xRTT */  
        public static final int NETWORK_TYPE_1xRTT = 7;  
        /** Current network is HSDPA */  
        public static final int NETWORK_TYPE_HSDPA = 8;  
        /** Current network is HSUPA */  
        public static final int NETWORK_TYPE_HSUPA = 9;  
        /** Current network is HSPA */  
        public static final int NETWORK_TYPE_HSPA = 10;  
        /** Current network is iDen */  
        public static final int NETWORK_TYPE_IDEN = 11;  
        /** Current network is EVDO revision B */  
        public static final int NETWORK_TYPE_EVDO_B = 12;  
        /** Current network is LTE */  
        public static final int NETWORK_TYPE_LTE = 13;  
        /** Current network is eHRPD */  
        public static final int NETWORK_TYPE_EHRPD = 14;  
        /** Current network is HSPA+ */  
        public static final int NETWORK_TYPE_HSPAP = 15;  
      
        /** 
         * 格式化大小 
         *  
         * @param size 
         * @return 
         */  
        public static String formatSize(long size) {  
            String unit = "B";  
            float len = size;  
            if (len > 900) {  
                len /= 1024f;  
                unit = "KB";  
            }  
            if (len > 900) {  
                len /= 1024f;  
                unit = "MB";  
            }  
            if (len > 900) {  
                len /= 1024f;  
                unit = "GB";  
            }  
            if (len > 900) {  
                len /= 1024f;  
                unit = "TB";  
            }  
            return df.format(len) + unit;  
        }  
      
        public static String formatSizeBySecond(long size) {  
            String unit = "B";  
            float len = size;  
            if (len > 900) {  
                len /= 1024f;  
                unit = "KB";  
            }  
            if (len > 900) {  
                len /= 1024f;  
                unit = "MB";  
            }  
            if (len > 900) {  
                len /= 1024f;  
                unit = "GB";  
            }  
            if (len > 900) {  
                len /= 1024f;  
                unit = "TB";  
            }  
            return df.format(len) + unit + "/s";  
        }  
      
        public static String format(long size) {  
            String unit = "B";  
            float len = size;  
            if (len > 1000) {  
                len /= 1024f;  
                unit = "KB";  
                if (len > 1000) {  
                    len /= 1024f;  
                    unit = "MB";  
                    if (len > 1000) {  
                        len /= 1024f;  
                        unit = "GB";  
                    }  
                }  
            }  
            return df.format(len) + "n" + unit + "/s";  
        }  
      
        /** 
         * 获取运营商 
         *  
         * @return 
         */  
        public static String getProvider() {  
            String provider = "未知";  
            try {  
                TelephonyManager telephonyManager = (TelephonyManager) ConfigManager  
                        .getContext().getSystemService(Context.TELEPHONY_SERVICE);  
                String IMSI = telephonyManager.getSubscriberId();  
                Log.v("tag","getProvider.IMSI:" + IMSI);  
                if (IMSI == null) {  
                    if (TelephonyManager.SIM_STATE_READY == telephonyManager  
                            .getSimState()) {  
                        String operator = telephonyManager.getSimOperator();  
                        Log.v("tag","getProvider.operator:" + operator);  
                        if (operator != null) {  
                            if (operator.equals("46000")  
                                    || operator.equals("46002")  
                                    || operator.equals("46007")) {  
                                provider = "中国移动";  
                            } else if (operator.equals("46001")) {  
                                provider = "中国联通";  
                            } else if (operator.equals("46003")) {  
                                provider = "中国电信";  
                            }  
                        }  
                    }  
                } else {  
                    if (IMSI.startsWith("46000") || IMSI.startsWith("46002")  
                            || IMSI.startsWith("46007")) {  
                        provider = "中国移动";  
                    } else if (IMSI.startsWith("46001")) {  
                        provider = "中国联通";  
                    } else if (IMSI.startsWith("46003")) {  
                        provider = "中国电信";  
                    }  
                }  
            } catch (Exception e) {  
                e.printStackTrace();  
            }  
            return provider;  
        }  
      
        /** 
         * 获取网络类型 
         *  
         * @return 
         */  
        public static String getCurrentNetworkType() {  
            int networkClass = getNetworkClass();  
            String type = "未知";  
            switch (networkClass) {  
            case NETWORK_CLASS_UNAVAILABLE:  
                type = "无";  
                break;  
            case NETWORK_CLASS_WIFI:  
                type = "Wi-Fi";  
                break;  
            case NETWORK_CLASS_2_G:  
                type = "2G";  
                break;  
            case NETWORK_CLASS_3_G:  
                type = "3G";  
                break;  
            case NETWORK_CLASS_4_G:  
                type = "4G";  
                break;  
            case NETWORK_CLASS_UNKNOWN:  
                type = "未知";  
                break;  
            }  
            return type;  
        }  
      
        private static int getNetworkClassByType(int networkType) {  
            switch (networkType) {  
            case NETWORK_TYPE_UNAVAILABLE:  
                return NETWORK_CLASS_UNAVAILABLE;  
            case NETWORK_TYPE_WIFI:  
                return NETWORK_CLASS_WIFI;  
            case NETWORK_TYPE_GPRS:  
            case NETWORK_TYPE_EDGE:  
            case NETWORK_TYPE_CDMA:  
            case NETWORK_TYPE_1xRTT:  
            case NETWORK_TYPE_IDEN:  
                return NETWORK_CLASS_2_G;  
            case NETWORK_TYPE_UMTS:  
            case NETWORK_TYPE_EVDO_0:  
            case NETWORK_TYPE_EVDO_A:  
            case NETWORK_TYPE_HSDPA:  
            case NETWORK_TYPE_HSUPA:  
            case NETWORK_TYPE_HSPA:  
            case NETWORK_TYPE_EVDO_B:  
            case NETWORK_TYPE_EHRPD:  
            case NETWORK_TYPE_HSPAP:  
                return NETWORK_CLASS_3_G;  
            case NETWORK_TYPE_LTE:  
                return NETWORK_CLASS_4_G;  
            default:  
                return NETWORK_CLASS_UNKNOWN;  
            }  
        }  
      
        private static int getNetworkClass() {  
            int networkType = NETWORK_TYPE_UNKNOWN;  
            try {  
                final NetworkInfo network = ((ConnectivityManager) ConfigManager  
                        .getContext()  
                        .getSystemService(Context.CONNECTIVITY_SERVICE))  
                        .getActiveNetworkInfo();  
                if (network != null && network.isAvailable()  
                        && network.isConnected()) {  
                    int type = network.getType();  
                    if (type == ConnectivityManager.TYPE_WIFI) {  
                        networkType = NETWORK_TYPE_WIFI;  
                    } else if (type == ConnectivityManager.TYPE_MOBILE) {  
                        TelephonyManager telephonyManager = (TelephonyManager) ConfigManager  
                                .getContext().getSystemService(  
                                        Context.TELEPHONY_SERVICE);  
                        networkType = telephonyManager.getNetworkType();  
                    }  
                } else {  
                    networkType = NETWORK_TYPE_UNAVAILABLE;  
                }  
      
            } catch (Exception ex) {  
                ex.printStackTrace();  
            }  
            return getNetworkClassByType(networkType);  
      
        }  
      
        public static String getWifiRssi() {  
            int asu = 85;  
            try {  
                final NetworkInfo network = ((ConnectivityManager) ConfigManager  
                        .getContext()  
                        .getSystemService(Context.CONNECTIVITY_SERVICE))  
                        .getActiveNetworkInfo();  
                if (network != null && network.isAvailable()  
                        && network.isConnected()) {  
                    int type = network.getType();  
                    if (type == ConnectivityManager.TYPE_WIFI) {  
                        WifiManager wifiManager = (WifiManager) ConfigManager  
                                .getContext()  
                                .getSystemService(Context.WIFI_SERVICE);  
      
                        WifiInfo wifiInfo = wifiManager.getConnectionInfo();  
                        if (wifiInfo != null) {  
                            asu = wifiInfo.getRssi();  
                        }  
                    }  
                }  
            } catch (Exception e) {  
                e.printStackTrace();  
            }  
            return asu + "dBm";  
        }  
      
        public static String getWifiSsid() {  
            String ssid = "";  
            try {  
                final NetworkInfo network = ((ConnectivityManager) ConfigManager  
                        .getContext()  
                        .getSystemService(Context.CONNECTIVITY_SERVICE))  
                        .getActiveNetworkInfo();  
                if (network != null && network.isAvailable()  
                        && network.isConnected()) {  
                    int type = network.getType();  
                    if (type == ConnectivityManager.TYPE_WIFI) {  
                        WifiManager wifiManager = (WifiManager) ConfigManager  
                                .getContext()  
                                .getSystemService(Context.WIFI_SERVICE);  
      
                        WifiInfo wifiInfo = wifiManager.getConnectionInfo();  
                        if (wifiInfo != null) {  
                            ssid = wifiInfo.getSSID();  
                            if (ssid == null) {  
                                ssid = "";  
                            }  
                            ssid = ssid.replaceAll(""","");  
                        }  
                    }  
                }  
            } catch (Exception e) {  
                e.printStackTrace();  
            }  
            return ssid;  
        }  
      
        /** 
         * 检查sim卡状态 
         *  
         * @param ctx 
         * @return 
         */  
        public static boolean checkSimState() {  
            TelephonyManager tm = (TelephonyManager) ConfigManager.getContext()  
                    .getSystemService(Context.TELEPHONY_SERVICE);  
            if (tm.getSimState() == TelephonyManager.SIM_STATE_ABSENT  
                    || tm.getSimState() == TelephonyManager.SIM_STATE_UNKNOWN) {  
                return false;  
            }  
      
            return true;  
        }  
      
        /** 
         * 获取imei 
         */  
        public static String getImei() {  
            TelephonyManager mTelephonyMgr = (TelephonyManager) ConfigManager  
                    .getContext().getSystemService(Context.TELEPHONY_SERVICE);  
            String imei = mTelephonyMgr.getDeviceId();  
            if (imei == null) {  
                imei = "000000000000000";  
            }  
            return imei;  
        }  
      
        public static String getPhoneImsi() {  
            TelephonyManager mTelephonyMgr = (TelephonyManager) ConfigManager  
                    .getContext().getSystemService(Context.TELEPHONY_SERVICE);  
            return mTelephonyMgr.getSubscriberId();  
        }  
      
        public static CellInfo getNetInfo() {  
            CellInfo info = new CellInfo();  
            try {  
                TelephonyManager mTelephonyManager = (TelephonyManager) ConfigManager  
                        .getContext().getSystemService(Context.TELEPHONY_SERVICE);  
                String operator = mTelephonyManager.getNetworkOperator();  
                if (operator != null) {  
                    /** 通过operator获取 MCC 和MNC */  
                    if (operator.length() > 3) {  
                        String mcc = operator.substring(0,3);  
                        String mnc = operator.substring(3);  
                        info.setMcc(mcc);  
                        info.setMnc(mnc);  
                    }  
                }  
      
                int lac = 0;  
                int cellId = 0;  
                int phoneType = mTelephonyManager.getPhoneType();  
                if (phoneType == TelephonyManager.PHONE_TYPE_GSM) {  
                    GsmCellLocation location = (GsmCellLocation) mTelephonyManager  
                            .getCellLocation();  
                    /** 通过GsmCellLocation获取中国移动和联通 LAC 和cellID */  
                    lac = location.getLac();  
                    cellId = location.getCid();  
                } else if (phoneType == TelephonyManager.PHONE_TYPE_CDMA) {  
                    CdmaCellLocation location = (CdmaCellLocation) mTelephonyManager  
                            .getCellLocation();  
                    lac = location.getNetworkId();  
                    cellId = location.getBaseStationId();  
                    cellId /= 16;  
                }  
                if (lac == 0 || cellId == 0) {  
                    List<NeighboringCellInfo> infos = mTelephonyManager  
                            .getNeighboringCellInfo();  
                    int lc = 0;  
                    int ci = 0;  
                    int rssi = 0;  
                    for (NeighboringCellInfo cell : infos) {  
                        // 根据邻区总数进行循环  
                        if (lc == 0 || ci == 0) {  
                            lc = cell.getLac();  
                            ci = cell.getCid();  
                            rssi = cell.getRssi();  
                        }  
                        // sb.append(" LAC : " + info.getLac());  
                        // // 取出当前邻区的LAC  
                        // sb.append(" CID : " + info.getCid());  
                        // // 取出当前邻区的CID  
                        // sb.append(" BSSS : " + (-113 + 2 * info.getRssi()) +  
                        // "n"); // 获取邻区基站信号强度  
                    }  
                    rssi = -113 + 2 * rssi;  
                }  
            } catch (Exception e) {  
                e.printStackTrace();  
            }  
            return info;  
        }  
      
    }  

以上内容由PHP站长网【52php.cn】收集整理供大家参考研究

如果以上内容对您有帮助,欢迎收藏、点赞、推荐、分享。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读