国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

Android判斷用戶的網絡類型實例講解(2/3/4G、wifi)

2020-04-11 11:08:13
字體:
來源:轉載
供稿:網友

很多時候需要先判斷當前用戶的網絡,才會繼續之后的一些處理邏輯。但網絡類型獲取這一塊,我用我自己的的手機調試時遇到一些問題,這里記錄一下。

一加手機一代,移動4G 網絡,得到的subtype類型值為17,我查過Android 5.1的源碼,它最大的值也就為16。

 我拿魅族的移動4G測試的結果如下:

小米4,電信4G的測試結果如下:

魅族MX4,聯通3G

還測試了其它華為移動3G/4G的情況,就我自己的手機一加返回的值有點奇怪,之后我查了一下它的參數:

當然,其它廠商:華為、小米、魅族與上面顯示的網絡類型基本上是一致的。都是3G:TD-SCDMA、WCDMA等 

而目前測試的情況就是僅一加返回的值為17,這會導致正常的判斷出現問題,無法識別到底使用的是何種網絡。而我通過logcat的日志,卻很清晰的發現系統自己是能識別的

最后我根據網絡上提供的資料,加了一項比較特殊的判斷,演變成如下的代碼:

public static String GetNetworkType(){  String strNetworkType = "";    NetworkInfo networkInfo = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE).getActiveNetworkInfo();  if (networkInfo != null && networkInfo.isConnected())  {    if (networkInfo.getType() == ConnectivityManager.TYPE_WIFI)    {      strNetworkType = "WIFI";    }    else if (networkInfo.getType() == ConnectivityManager.TYPE_MOBILE)    {      String _strSubTypeName = networkInfo.getSubtypeName();            Log.e("cocos2d-x", "Network getSubtypeName : " + _strSubTypeName);            // TD-SCDMA  networkType is 17      int networkType = networkInfo.getSubtype();      switch (networkType) {        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: //api<8 : replace by 11          strNetworkType = "2G";          break;        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: //api<9 : replace by 14        case TelephonyManager.NETWORK_TYPE_EHRPD: //api<11 : replace by 12        case TelephonyManager.NETWORK_TYPE_HSPAP: //api<13 : replace by 15          strNetworkType = "3G";          break;        case TelephonyManager.NETWORK_TYPE_LTE:  //api<11 : replace by 13          strNetworkType = "4G";          break;        default:          // http://baike.baidu.com/item/TD-SCDMA 中國移動 聯通 電信 三種3G制式          if (_strSubTypeName.equalsIgnoreCase("TD-SCDMA") || _strSubTypeName.equalsIgnoreCase("WCDMA") || _strSubTypeName.equalsIgnoreCase("CDMA2000"))           {            strNetworkType = "3G";          }          else          {            strNetworkType = _strSubTypeName;          }                    break;       }             Log.e("cocos2d-x", "Network getSubtype : " + Integer.valueOf(networkType).toString());    }  }    Log.e("cocos2d-x", "Network Type : " + strNetworkType);    return strNetworkType;}

以上就是本文的全部內容,希望對大家準確判斷用戶的網絡類型有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 伊宁市| 基隆市| 虞城县| 孙吴县| 华池县| 磐石市| 比如县| 怀远县| 增城市| 大埔县| 高雄县| 格尔木市| 香港| 清徐县| 专栏| 岳阳县| 开鲁县| 桦南县| 海丰县| 绍兴市| 楚雄市| 瓦房店市| 新龙县| 龙川县| 新绛县| 台前县| 泰兴市| 辽中县| 岫岩| 射洪县| 阿巴嘎旗| 化州市| 临漳县| 城口县| 宿松县| 南川市| 泽普县| 乾安县| 清流县| 客服| 会泽县|