android 处理网络状态——无网,2g,3g,wifi,ethernet,other

来源:互联网 发布:知金教育集团 编辑:程序博客网 时间:2024/05/16 06:07

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

直接上代码:

public class GetNetWorkStateActor extends FusionActor {@Overridepublic boolean processFusionMessage(FusionMessage msg) {// TODO Auto-generated method stubmsg.setResponseData(checkNet());return false;}private int checkNet() {// TODO Auto-generated method stubConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);NetworkInfo mobNetInfoActivity = connectivityManager.getActiveNetworkInfo();int netFlag = 0;if (mobNetInfoActivity != null) {switch (mobNetInfoActivity.getType()) {case ConnectivityManager.TYPE_ETHERNET:// ethernetnetFlag = 1;break;case ConnectivityManager.TYPE_WIFI:// wifinetFlag = 2;break;case ConnectivityManager.TYPE_MOBILE:// gprsif(isFastMobileNetwork(context)){//2gnetFlag = 3;}else{//3gnetFlag = 4;}break;default:break;}} else {//no networknetFlag = 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;         }  }}
这段代码我自己还没有在程序里面跑过,由于比较激动就先存储了。。。。。这段代码比我上一篇相关的博文中的代码功能齐全,以后在做开发的时候,就果断用这个了。。。。

原创粉丝点击