• android开发获取网络状态,wifi,wap,2g,3g.工具类(一)


    android开发获取网络状态整理:

     1 package com.gzcivil.utils;
     2 
     3 import android.content.Context;
     4 import android.net.ConnectivityManager;
     5 import android.net.NetworkInfo;
     6 import android.telephony.TelephonyManager;
     7 import android.text.TextUtils;
     8 
     9 public class NetworkUtils {
    10 
    11     /** 没有网络 */
    12     public static final int NETWORKTYPE_INVALID = 0;
    13     /** wap网络 */
    14     public static final int NETWORKTYPE_WAP = 1;
    15     /** 2G网络 */
    16     public static final int NETWORKTYPE_2G = 2;
    17     /** 3G和3G以上网络,或统称为快速网络 */
    18     public static final int NETWORKTYPE_3G = 3;
    19     /** USB网络 */
    20     public static final int NETWORKTYPE_USB = 4;
    21     /** wifi网络 */
    22     public static final int NETWORKTYPE_WIFI = 5;
    23 
    24     /**
    25      * 获取网络状态,wifi,wap,2g,3g.
    26      * 
    27      * @param context
    28      *            上下文
    29      * @return int 网络状态 {@link #NETWORKTYPE_2G},{@link #NETWORKTYPE_3G}, *
    30      *         {@link #NETWORKTYPE_INVALID},{@link #NETWORKTYPE_WAP}*
    31      *         <p>
    32      *         {@link #NETWORKTYPE_WIFI}
    33      */
    34     public static int getNetWorkType(Context context) {
    35         ConnectivityManager manager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
    36         NetworkInfo networkInfo = manager.getActiveNetworkInfo();
    37         int mNetWorkType = 0;
    38         if (networkInfo != null && networkInfo.isConnected()) {
    39             String type = networkInfo.getTypeName();
    40             if (type.equalsIgnoreCase("WIFI")) {
    41                 mNetWorkType = NETWORKTYPE_WIFI;
    42             } else if (type.equalsIgnoreCase("usb")) {
    43                 mNetWorkType = NETWORKTYPE_USB;
    44             } else if (type.equalsIgnoreCase("MOBILE")) {
    45                 @SuppressWarnings("deprecation")
    46                 String proxyHost = android.net.Proxy.getDefaultHost();
    47                 mNetWorkType = TextUtils.isEmpty(proxyHost) ? (isFastMobileNetwork(context) ? NETWORKTYPE_3G : NETWORKTYPE_2G) : NETWORKTYPE_WAP;
    48             }
    49         } else {
    50             mNetWorkType = NETWORKTYPE_INVALID;
    51         }
    52         return mNetWorkType;
    53     }
    54     
    55     private static boolean isFastMobileNetwork(Context context) {
    56         TelephonyManager telephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
    57         switch (telephonyManager.getNetworkType()) {
    58         case TelephonyManager.NETWORK_TYPE_1xRTT:
    59             return false; // ~ 50-100 kbps
    60         case TelephonyManager.NETWORK_TYPE_CDMA:
    61             return false; // ~ 14-64 kbps
    62         case TelephonyManager.NETWORK_TYPE_EDGE:
    63             return false; // ~ 50-100 kbps
    64         case TelephonyManager.NETWORK_TYPE_EVDO_0:
    65             return true; // ~ 400-1000 kbps
    66         case TelephonyManager.NETWORK_TYPE_EVDO_A:
    67             return true; // ~ 600-1400 kbps
    68         case TelephonyManager.NETWORK_TYPE_GPRS:
    69             return false; // ~ 100 kbps
    70         case TelephonyManager.NETWORK_TYPE_HSDPA:
    71             return true; // ~ 2-14 Mbps
    72         case TelephonyManager.NETWORK_TYPE_HSPA:
    73             return true; // ~ 700-1700 kbps
    74         case TelephonyManager.NETWORK_TYPE_HSUPA:
    75             return true; // ~ 1-23 Mbps
    76         case TelephonyManager.NETWORK_TYPE_UMTS:
    77             return true; // ~ 400-7000 kbps
    78         case TelephonyManager.NETWORK_TYPE_EHRPD:
    79             return true; // ~ 1-2 Mbps
    80         case TelephonyManager.NETWORK_TYPE_EVDO_B:
    81             return true; // ~ 5 Mbps
    82         case TelephonyManager.NETWORK_TYPE_HSPAP:
    83             return true; // ~ 10-20 Mbps
    84         case TelephonyManager.NETWORK_TYPE_IDEN:
    85             return false; // ~25 kbps
    86         case TelephonyManager.NETWORK_TYPE_LTE:
    87             return true; // ~ 10+ Mbps
    88         case TelephonyManager.NETWORK_TYPE_UNKNOWN:
    89             return false;
    90         default:
    91             return false;
    92         }
    93     }
    94 }
  • 相关阅读:
    oracl遇到的问题
    Ubuntu安装pyucharm的专业版本
    android adb logcat详解(三)
    android monkey压力测试(二)
    android adb常用命令(一)
    python *args 与 **kwargs
    python中带有下划线的变量和函数
    如何区分Python package
    Python Importlib.import_module动态导入模块
    python os.path.dirname(__file__)
  • 原文地址:https://www.cnblogs.com/lijinlun0825/p/5174749.html
Copyright © 2020-2023  润新知