Created
December 11, 2017 10:22
-
-
Save andhikayuana/fe2bf9db4c3f0f7e02e1039484d9844e to your computer and use it in GitHub Desktop.
Network Detector
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import android.content.Context; | |
import android.net.ConnectivityManager; | |
import android.net.NetworkInfo; | |
import android.telephony.TelephonyManager; | |
/** | |
* @author yuana <[email protected]> | |
* @since 12/11/17 | |
*/ | |
public class NetworkUtil { | |
public static final String NETWORK_WIFI = "wifi_network"; | |
public static final String NETWORK_4G = "4g_network"; | |
public static final String NETWORK_3G = "3g_network"; | |
public static final String NETWORK_2G = "2g_network"; | |
public static final String NETWORK_UNKNOWN = "unknown_network"; | |
public static final String NETWORK_NO = "no_network"; | |
public static NetworkInfo getNetworkInfo(Context context) { | |
ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); | |
return cm.getActiveNetworkInfo(); | |
} | |
public static boolean isConnected(Context context) { | |
NetworkInfo info = getNetworkInfo(context); | |
return (info != null && info.isConnected()); | |
} | |
public static boolean isConnectedWifi(Context context) { | |
NetworkInfo info = getNetworkInfo(context); | |
return (info != null && info.isConnected() && info.getType() == ConnectivityManager.TYPE_WIFI); | |
} | |
public static boolean isConnectedMobile(Context context) { | |
NetworkInfo info = getNetworkInfo(context); | |
return (info != null && info.isConnected() && info.getType() == ConnectivityManager.TYPE_MOBILE); | |
} | |
public static String getNetworkType(Context context) { | |
if (isConnected(context)) { | |
if (isConnectedWifi(context)) { | |
return NETWORK_WIFI; | |
} else if (isConnectedMobile(context)) { | |
switch (getType(context)) { | |
case TelephonyManager.NETWORK_TYPE_GPRS: | |
case TelephonyManager.NETWORK_TYPE_EDGE: | |
case TelephonyManager.NETWORK_TYPE_CDMA: | |
case TelephonyManager.NETWORK_TYPE_1xRTT: | |
case TelephonyManager.NETWORK_TYPE_IDEN: | |
return NETWORK_2G; | |
case TelephonyManager.NETWORK_TYPE_UMTS: | |
case TelephonyManager.NETWORK_TYPE_EVDO_0: | |
case TelephonyManager.NETWORK_TYPE_EVDO_A: | |
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: | |
return NETWORK_3G; | |
case TelephonyManager.NETWORK_TYPE_LTE: | |
return NETWORK_4G; | |
default: | |
return NETWORK_UNKNOWN; | |
} | |
} | |
} else { | |
return NETWORK_NO; | |
} | |
return NETWORK_UNKNOWN; | |
} | |
private static int getType(Context context) { | |
TelephonyManager mTelephonyManager = (TelephonyManager) | |
context.getSystemService(Context.TELEPHONY_SERVICE); | |
return mTelephonyManager.getNetworkType(); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment