|
分享給大家一篇技術文章,還有很多不足之處,歡迎吐槽!期待各位android愛好者,加入android學習交流群:278744577,加群請驗證:eec,共同探討!
直接上代碼:
- 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;
- }
- }
- }
復制代碼
|
|