0

I am learning Android development to my own and wandering to know if my device has the hardware that can support the LTE network.

I am trying the below, but I think it is giving me wrong data

ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
   NetworkInfo[] info = cm.getAllNetworkInfo();
   for(int i=0; i <info.length; i++){
       Log.i("netinfo"+i, info[i].getType()+"");
       Log.i("netinfo"+i, info[i].getTypeName());
       Log.i("netinfo"+i, info[i].getSubtype()+"");
       Log.i("netinfo"+i, info[i].getSubtypeName());

So in short I just want to know if my device supports LTE data network or only 3g or 4g networks.

Thanks in Advance

Java Nerd
  • 137
  • 1
  • 4
  • 17
  • The easyest way is to check the ping towards a well known site like 8.8.8.8, given HSPA has latency in the order of 100ms and LTE of 40ms it's pretty esy to tell thet if latency is under 50ms you're surely under LTE. Also please don't call HSPA 4G: it isn't, it's a 3G tech, say 3,5G. – DDS Jul 15 '21 at 14:22

1 Answers1

1

I'd go with:

int TelephonyManager.getDataNetworkType()

compare the value with the (defined) constants:

NETWORK_TYPE_UNKNOWN, NETWORK_TYPE_GPRS, NETWORK_TYPE_EDGE,  
NETWORK_TYPE_UMTS, NETWORK_TYPE_CDMA, NETWORK_TYPE_EVDO_0,  
NETWORK_TYPE_EVDO_A, NETWORK_TYPE_1xRTT, NETWORK_TYPE_HSDPA,  
NETWORK_TYPE_HSUPA, NETWORK_TYPE_HSPA, NETWORK_TYPE_IDEN,  
NETWORK_TYPE_EVDO_B, NETWORK_TYPE_LTE, NETWORK_TYPE_EHRPD,  
NETWORK_TYPE_HSPAP, NETWORK_TYPE_GSM, NETWORK_TYPE_TD_SCDMA,  
NETWORK_TYPE_IWLAN, or NETWORK_TYPE_NR  

NETWORK_TYPE_GSM is 2G

NETWORK_TYPE_GPRS, NETWORK_TYPE_EDGE is 2,5G

NETWORK_TYPE_UMTS is 3G

NETWORK_TYPE_HSDPA, NETWORK_TYPE_HSUPA, NETWORK_TYPE_HSPA, NETWORK_TYPE_HSPAP are 3,5G

NETWORK_TYPE_LTE is 4G

NETWORK_TYPE_NR is 5G

This is the API reference

DDS
  • 2,340
  • 16
  • 34