Get Internet Connection Speed in Android
Posted By : Prince Bhardwaj | 10-Apr-2017
To check internet connection speed slow or fast in your android project, firstly you have to compile facebook connection library in your app gradle.build as a dependency -
dependencies { compile 'com.facebook.network.connectionclass:connectionclass:1.0.1' .... }
This library is used to get internet connection state if android device is connected with wifi.
After adding this library, you have to use this class to get internet connection state in your application-
public class NetworkState { public static NetworkInfo getNetworkInfo(Context context) { ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); return cm.getActiveNetworkInfo(); } public static boolean isConnectionAvailable(Context context) { ConnectivityManager localConnectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo activeNetwork = localConnectivityManager.getActiveNetworkInfo(); if ((activeNetwork == null) || (!activeNetwork.isAvailable()) || (!activeNetwork.isConnectedOrConnecting())) return false; else if (isConnectedFast(context)) { return true; } return true; } public static boolean isWifiAvailable(Context context) { ConnectivityManager localConnectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo mWifi = localConnectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI); if (mWifi.isConnected()) return true; else return false; } /** * Check if there is any connectivity * * @param context * @return */ public static boolean isConnected(Context context) { NetworkInfo info = NetworkUtilities.getNetworkInfo(context); return (info != null && info.isConnected()); } /** * Check if there is any connectivity to a Wifi network * * @param context * @return * @paramtype */ public static boolean isConnectedWifi(Context context) { NetworkInfo info = NetworkUtilities.getNetworkInfo(context); return (info != null && info.isConnected() && info.getType() == ConnectivityManager.TYPE_WIFI); } /** * Check if there is any connectivity to a mobile network * * @param context * @return * @paramtype */ public static boolean isConnectedMobile(Context context) { NetworkInfo info = NetworkUtilities.getNetworkInfo(context); return (info != null && info.isConnected() && info.getType() == ConnectivityManager.TYPE_MOBILE); } /** * Check if there is fast connectivity * * @param context * @return */ public static boolean isConnectedFast(Context context) { NetworkInfo info = NetworkUtilities.getNetworkInfo(context); return (info != null && info.isConnected() && NetworkUtilities.isConnectionFast(info.getType(), info.getSubtype())); } /** * Check if the connection is fast * * @param type * @param subType * @return */ public static boolean isConnectionFast(int type, int subType) { if (type == ConnectivityManager.TYPE_WIFI) { return true; } else if (type == ConnectivityManager.TYPE_MOBILE) { switch (subType) { case TelephonyManager.NETWORK_TYPE_1xRTT: return true; // ~ 50-100 kbps case TelephonyManager.NETWORK_TYPE_CDMA: return true; // ~ 14-64 kbps case TelephonyManager.NETWORK_TYPE_EDGE: return true; // ~ 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 true; // ~ 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 /* * Above API level 7, make sure to set android:targetSdkVersion * to appropriate level to use these */ case TelephonyManager.NETWORK_TYPE_EHRPD: // API level 11 return true; // ~ 1-2 Mbps case TelephonyManager.NETWORK_TYPE_EVDO_B: // API level 9 return true; // ~ 5 Mbps case TelephonyManager.NETWORK_TYPE_HSPAP: // API level 13 return true; // ~ 10-20 Mbps case TelephonyManager.NETWORK_TYPE_IDEN: // API level 8 return true; // ~25 kbps case TelephonyManager.NETWORK_TYPE_LTE: // API level 11 return true; // ~ 10+ Mbps case TelephonyManager.NETWORK_TYPE_UNKNOWN: return true; default: return true; } } else { return true; } } }
After adding this class in you project, write this line to get internet connection state in your project-
NetworkState.isConnectionAvailable(context); // returns Boolean
Cookies are important to the proper functioning of a site. To improve your experience, we use cookies to remember log-in details and provide secure log-in, collect statistics to optimize site functionality, and deliver content tailored to your interests. Click Agree and Proceed to accept cookies and go directly to the site or click on View Cookie Settings to see detailed descriptions of the types of cookies and choose whether to accept certain cookies while on the site.
About Author
Prince Bhardwaj
Prince Bhardwaj is having Talent as Application Developer, he is an enthusiastic team player in Oodles Technologies.