zoukankan      html  css  js  c++  java
  • android 处理网络状态——无网,2g,3g,wifi,ethernet,other

    今天在一位很牛逼的学长的博客里面看到了这段代码后,很是激动啊,于是就“偷”了过来,嘿嘿。。。。为自己也为更多需要它的程序媛

    直接上代码:

    public class GetNetWorkStateActor extends FusionActor {
    
    @Override
    public boolean processFusionMessage(FusionMessage msg) {
    // TODO Auto-generated method stub
    msg.setResponseData(checkNet());
    return false;
    }
    
    private int checkNet() {
    // TODO Auto-generated method stub
    ConnectivityManager connectivityManager = (ConnectivityManager) context
    .getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo mobNetInfoActivity = connectivityManager
    .getActiveNetworkInfo();
    int netFlag = 0;
    if (mobNetInfoActivity != null) {
    
    switch (mobNetInfoActivity.getType()) {
    case ConnectivityManager.TYPE_ETHERNET:
    // ethernet
    netFlag = 1;
    break;
    case ConnectivityManager.TYPE_WIFI:
    // wifi
    netFlag = 2;
    break;
    case ConnectivityManager.TYPE_MOBILE:
    // gprs
    if(isFastMobileNetwork(context)){
    //2g
    netFlag = 3;
    }else{
    //3g
    netFlag = 4;
    }
    break;
    default:
    break;
    }
    } else {
    //no network
    netFlag = 0;
    }
    return netFlag;
    }
    private static boolean isFastMobileNetwork(Context context) {  
           TelephonyManager telephonyManager = (TelephonyManager) context  
                   .getSystemService(Context.TELEPHONY_SERVICE);  
     
           switch (telephonyManager.getNetworkType()) {  
           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_EHRPD:  
               return true; // ~ 1-2 Mbps  
           case TelephonyManager.NETWORK_TYPE_EVDO_B:  
               return true; // ~ 5 Mbps  
           case TelephonyManager.NETWORK_TYPE_HSPAP:  
               return true; // ~ 10-20 Mbps  
           case TelephonyManager.NETWORK_TYPE_IDEN:  
               return false; // ~25 kbps  
           case TelephonyManager.NETWORK_TYPE_LTE:  
               return true; // ~ 10+ Mbps  
           case TelephonyManager.NETWORK_TYPE_UNKNOWN:  
               return false;  
           default:  
               return false;  
           }  
    }
    }

    这段代码我自己还没有在程序里面跑过,由于比较激动就先存储了。。。。。这段代码比我上一篇相关的博文中的代码功能齐全,以后在做开发的时候,就果断用这个了。。。。

  • 相关阅读:
    质量属性的六个常见属性应用场景(淘宝篇)
    软件架构师如何工作?
    寒假学习第十五天
    寒假学习第十四天
    ADMEMS方法体系:3个阶段,一个贯穿环节之Refined Architecture阶段阅读感悟
    《企业应用架构模式》阅读笔记一
    《重构:改善既有代码的设计》阅读笔记三
    大数据分析01——数据爬取
    《重构:改善既有代码的设计》阅读笔记二
    kettle--Trans插件之输出
  • 原文地址:https://www.cnblogs.com/pangblog/p/3249186.html
Copyright © 2011-2022 走看看