最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Android判斷用戶的網(wǎng)絡(luò)類型實(shí)例講解(2/3/4G、wifi)

 更新時間:2015年12月23日 16:38:21   作者:meteoric_cry  
這篇文章主要介紹了Android判斷用戶的網(wǎng)絡(luò)類型實(shí)例,用戶的網(wǎng)絡(luò)類型分為2G、3G、4G、wifi,通過Android如何判斷用戶的網(wǎng)絡(luò)類型,本文為大家揭曉

很多時候需要先判斷當(dāng)前用戶的網(wǎng)絡(luò),才會繼續(xù)之后的一些處理邏輯。但網(wǎng)絡(luò)類型獲取這一塊,我用我自己的的手機(jī)調(diào)試時遇到一些問題,這里記錄一下。

一加手機(jī)一代,移動4G 網(wǎng)絡(luò),得到的subtype類型值為17,我查過Android 5.1的源碼,它最大的值也就為16。

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

小米4,電信4G的測試結(jié)果如下:

魅族MX4,聯(lián)通3G

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

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

而目前測試的情況就是僅一加返回的值為17,這會導(dǎo)致正常的判斷出現(xiàn)問題,無法識別到底使用的是何種網(wǎng)絡(luò)。而我通過logcat的日志,卻很清晰的發(fā)現(xiàn)系統(tǒng)自己是能識別的

最后我根據(jù)網(wǎng)絡(luò)上提供的資料,加了一項(xiàng)比較特殊的判斷,演變成如下的代碼:

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 中國移動 聯(lián)通 電信 三種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;
}

以上就是本文的全部內(nèi)容,希望對大家準(zhǔn)確判斷用戶的網(wǎng)絡(luò)類型有所幫助。

相關(guān)文章

最新評論

当雄县| 台安县| 桐梓县| 万宁市| 车险| 宜君县| 樟树市| 海盐县| 浦北县| 长治市| 连平县| 德钦县| 德兴市| 基隆市| 江川县| 西充县| 报价| 肇州县| 灌南县| 三明市| 红安县| 彭山县| 谢通门县| 洛浦县| 博白县| 新乡市| 溆浦县| 信阳市| 普兰店市| 秦安县| 清涧县| 巫山县| 确山县| 固镇县| 罗城| 中西区| 开平市| 和平区| 古丈县| 张北县| 岐山县|