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;  
           }  
    }
    }

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

  • 相关阅读:
    vim可以打开,gvim无法打开
    Ubuntu用apt-get安装时依赖包无法安装
    如何用mm、mmm编译android中的模块
    装饰模式简单的代码
    FileWriter和FileReader简单使用
    TCP/IP、Http、Socket的区别--特别仔细
    surface实例-小球弹起事例
    android中图片的三级缓存cache策略(内存/文件/网络)
    接口回调
    大公司的Java面试题集
  • 原文地址:https://www.cnblogs.com/pangblog/p/3249186.html
Copyright © 2011-2022 走看看