Skip to content

Instantly share code, notes, and snippets.

@luongvo
Created March 17, 2017 04:53
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save luongvo/db95b25933aba5b381a7ca3192fb21a1 to your computer and use it in GitHub Desktop.
Save luongvo/db95b25933aba5b381a7ca3192fb21a1 to your computer and use it in GitHub Desktop.
Get mobile network info
import android.content.Context;
import android.telephony.TelephonyManager;
/**
* @author luongvo.
*/
public class ConnectivityUtils {
public static String getMobileNetworkType(Context context) {
TelephonyManager telephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
int networkType = telephonyManager.getNetworkType();
switch (networkType) {
case TelephonyManager.NETWORK_TYPE_1xRTT:
return "1xRTT";
case TelephonyManager.NETWORK_TYPE_CDMA:
return "CDMA";
case TelephonyManager.NETWORK_TYPE_EDGE:
return "EDGE";
case TelephonyManager.NETWORK_TYPE_EHRPD:
return "eHRPD";
case TelephonyManager.NETWORK_TYPE_EVDO_0:
return "EVDO rev. 0";
case TelephonyManager.NETWORK_TYPE_EVDO_A:
return "EVDO rev. A";
case TelephonyManager.NETWORK_TYPE_EVDO_B:
return "EVDO rev. B";
case TelephonyManager.NETWORK_TYPE_GPRS:
return "GPRS";
case TelephonyManager.NETWORK_TYPE_HSDPA:
return "HSDPA";
case TelephonyManager.NETWORK_TYPE_HSPA:
return "HSPA";
case TelephonyManager.NETWORK_TYPE_HSPAP:
return "HSPA+";
case TelephonyManager.NETWORK_TYPE_HSUPA:
return "HSUPA";
case TelephonyManager.NETWORK_TYPE_IDEN:
return "iDen";
case TelephonyManager.NETWORK_TYPE_LTE:
return "LTE";
case TelephonyManager.NETWORK_TYPE_UMTS:
return "UMTS";
case TelephonyManager.NETWORK_TYPE_UNKNOWN:
return "Unknown";
}
return "New type of network";
}
/**
* To get device consuming netowkr type is 2g,3g,4g
*
* @return "2g","3g","4g" as a String based on the network type
*/
public static String getMobileNetworkClass(Context context) {
TelephonyManager telephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
int networkType = telephonyManager.getNetworkType();
switch (networkType) {
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 "2g";
case TelephonyManager.NETWORK_TYPE_UMTS:
case TelephonyManager.NETWORK_TYPE_EVDO_0:
case TelephonyManager.NETWORK_TYPE_EVDO_A:
/*
From this link https://goo.gl/R2HOjR ..NETWORK_TYPE_EVDO_0 & NETWORK_TYPE_EVDO_A
EV-DO is an evolution of the CDMA2000 (IS-2000) standard that supports high data rates.
Where CDMA2000 https://goo.gl/1y10WI .CDMA2000 is a family of 3G[1] mobile technology standards for sending voice,
data, and signaling data between mobile phones and cell sites.
*/
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:
/*
For 3g HSDPA , HSPAP(HSPA+) are main networktype which are under 3g Network
But from other constants also it will 3g like HSPA,HSDPA etc which are in 3g case.
Some cases are added after testing(real) in device with 3g enable data
and speed also matters to decide 3g network type
http://goo.gl/bhtVT
*/
return "3g";
case TelephonyManager.NETWORK_TYPE_LTE:
/*
No specification for the 4g but from wiki
I found(LTE (Long-Term Evolution, commonly marketed as 4G LTE))
https://goo.gl/9t7yrR
*/
return "4g";
default:
return "Notfound";
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment