package com.todayinfo.controller; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.net.ConnectivityManager; import android.net.NetworkInfo; import com.todayinfo.ui.api.RetryNetwork; /** * 网络状态监听中心 * @author longtao.li * */ public class NetWorkCenter { public ConnectionChangeReceiver mConnectionChangeReceiver; private static RetryNetwork mRetry; /** * 判断当前网络是否是wifi网络 * * @param context * @return boolean */ public static boolean isWifi(Context context) { ConnectivityManager connectivityManager = (ConnectivityManager) context .getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo activeNetInfo = connectivityManager.getActiveNetworkInfo(); if (activeNetInfo != null && activeNetInfo.getType() == ConnectivityManager.TYPE_WIFI) { return true; } return false; } /** * 判断当前网络是否是3G网络 * * @param context * @return boolean */ public static boolean is3G(Context context) { ConnectivityManager connectivityManager = (ConnectivityManager) context .getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo activeNetInfo = connectivityManager.getActiveNetworkInfo(); if (activeNetInfo != null && activeNetInfo.getType() == ConnectivityManager.TYPE_MOBILE) { return true; } return false; } /** * 判断是否有网络链接 * @param context * @return */ public static boolean isNetworkConnected(Context context) { if (context != null) { ConnectivityManager mConnectivityManager = (ConnectivityManager) context .getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo mNetworkInfo = mConnectivityManager .getActiveNetworkInfo(); if (mNetworkInfo != null) { return mNetworkInfo.isAvailable(); } } return false; } public ConnectionChangeReceiver getConnectionChangeReceiver(){ if( mConnectionChangeReceiver == null ){ mConnectionChangeReceiver = new ConnectionChangeReceiver(); } return mConnectionChangeReceiver; } public void setRetryNetwork(RetryNetwork r){ mRetry = r; } public void removeRetry(){ mRetry = null; } public static class ConnectionChangeReceiver extends BroadcastReceiver { public boolean isNetworkConnected = true; @Override public void onReceive(Context context, Intent intent) { ConnectivityManager connectivityManager = (ConnectivityManager) context .getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo activeNetInfo = connectivityManager .getActiveNetworkInfo(); // NetworkInfo mobNetInfo = // connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE); if (activeNetInfo != null) { if (!isNetworkConnected) { if (mRetry != null) { mRetry.retry(); } } isNetworkConnected = true; } else { isNetworkConnected = false; if(mRetry != null){ mRetry.netError(); } } } } }