編輯:關於Android編程
今天在一位很牛逼的學長的博客裡面看到了這段代碼後,很是激動啊,於是就“偷”了過來,嘿嘿。。。。為自己也為更多需要它的程序媛
直接上代碼:
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;
}
}
}
AndroidAnnnotations注入框架使用之Injection標簽詳解(十)
(一).前言:前面我們已經對於AndroidAnnotations框架的注入組件的方式做了講解,今天我們開始具體學習一下Injection標簽使用
JPush接入指南for Android
一. 接入須知:(JPush基本概念)1. 消息形式 JPush提供四種消息形式:通知,自定義消息,富媒體和本地通知。a. 通知 或者說 Push Notificatio
OpenglES2.0 for Android:來畫個球吧
理解球坐標系首先看下球的坐標系 ,如圖 : (圖來自百度百科 ) 設球上有一點 A ,球心為O ,OA在 xOy上的投影與X軸夾角為φ (范圍
Smalidea+IntelliJ IDEA/Android Studio動態調試安卓app教程
smalidea smalidea是一個IntelliJ IDEA/Android Studio smali語言插件,可實現動態調試smali代碼。 github地址