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

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

  • 相关阅读:
    【软件工程Ⅱ】作业二 |分布式版本控制系统Git的安装与使用
    【软件工程Ⅱ】作业一 |走进计算机
    字符串、文件操作,英文词频统计预处理
    了解大数据的特点、来源与数据呈现方式
    作业五:结对项目-“四则运算”之升级版
    第四次作业:小学四则运算“软件”之初版
    阅读《构建之法》1-5章的感想
    作业二/Git的安装以及使用
    大三学习软件工程感想
    爬取全部的校园新闻
  • 原文地址:https://www.cnblogs.com/pangblog/p/3249186.html
Copyright © 2020-2023  润新知