展会信息港展会大全

android 处理网络状态——无网,2g,3g,wifi,ethernet,other
来源:互联网   发布日期:2015-09-28 16:06:55   浏览:1763次  

导读:今天在一位很牛逼的学长的博客里面看到了这段代码后,很是激动啊,于是就“偷”了过来,嘿嘿。。。。为自己也为更多需要它的程序媛直接上代码:瀀甀戀氀椀挀 class GetNetWorkSt...

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

直接上代码:

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;

}

}

}

赞助本站

人工智能实验室

相关热词: android开发 教程

AiLab云推荐
展开

热门栏目HotCates

Copyright © 2010-2024 AiLab Team. 人工智能实验室 版权所有    关于我们 | 联系我们 | 广告服务 | 公司动态 | 免责声明 | 隐私条款 | 工作机会 | 展会港