package android.marshon.likequanmintv.librarys.utils;
import android.content.Context;
import android.marshon.likequanmintv.base.APP;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
/**
* Created by Marshon.Chen on 2016/6/2.
* DESC:
*/
public class NetUtil {
/**
* 检测当的网络(WLAN、3G/2G)状态
* @param context Context
* @return true 表示网络可用
*/
public static void netWorkType(Context context, NetWorkStatusCallBack callback) {
// if (callback!=null) {
// callback.strongNetWork();
// return;
// }
ConnectivityManager connectivity = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
if (connectivity != null) {
NetworkInfo info = connectivity.getActiveNetworkInfo();
//网络不可用就算了
if (info==null||!info.isConnected()){
if (callback!=null)
callback.noNetWork();
return;
}
int type = info.getType();
LogUtil.d("type:"+type);
if (type== ConnectivityManager.TYPE_WIFI){
if (callback!=null) {
callback.strongNetWork();
}
}else if (type== ConnectivityManager.TYPE_MOBILE){
int subtype = info.getSubtype();
if (subtype<=12){
if (callback!=null){
callback.thinNetWork();
}
}else if (subtype>12){
if (callback!=null){
callback.strongNetWork();
}
}
/*switch (subtype) {
case TelephonyManager.NETWORK_TYPE_GPRS: // 2g
case TelephonyManager.NETWORK_TYPE_CDMA: // 2g
case TelephonyManager.NETWORK_TYPE_EDGE: // 2g
case TelephonyManager.NETWORK_TYPE_1xRTT:
case TelephonyManager.NETWORK_TYPE_IDEN:
if (callback!=null)
callback.thinNetWork();
break;
case TelephonyManager.NETWORK_TYPE_EVDO_A: // 3g
case TelephonyManager.NETWORK_TYPE_UMTS:
case TelephonyManager.NETWORK_TYPE_EVDO_0:
case TelephonyManager.NETWORK_TYPE_HSDPA:
case TelephonyManager.NETWORK_TYPE_HSUPA:
case TelephonyManager.NETWORK_TYPE_HSPA:
case TelephonyManager.NETWORK_TYPE_EVDO_B:
case TelephonyManager.NETWORK_TYPE_EHRPD:
case TelephonyManager.NETWORK_TYPE_HSPAP:
if (callback!=null)
callback.thinNetWork();
break;
case TelephonyManager.NETWORK_TYPE_LTE:
case 19: //TelephonyManager.NETWORK_TYPE_LTE_CA
if (callback!=null)
callback.strongNetWork();
break;
}*/
}else{
if (callback!=null)
callback.strongNetWork();
}
}
}
public static boolean isNetWorkConnectted(){
ConnectivityManager connectivity = (ConnectivityManager) APP.getContext()
.getSystemService(Context.CONNECTIVITY_SERVICE);
if (connectivity != null) {
NetworkInfo info = connectivity.getActiveNetworkInfo();
if (info!=null&&info.isConnected()) {
return true;
}else{
NetworkInfo[] allNetworkInfo = connectivity.getAllNetworkInfo();
if (allNetworkInfo != null) {
int length = allNetworkInfo.length;
for (int i = 0; i < length; i++) {
// 判断获得的网络状态是否是处于连接状态
if (allNetworkInfo[i].getState() == NetworkInfo.State.CONNECTED) {
return true;
}
}
}
return false;
}
}
return false;
}
public interface NetWorkStatusCallBack{
void strongNetWork();
void thinNetWork();
void noNetWork();
}
}