Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to check whether a particular device supports 4G networks in Android?

Tags:

android

4g

I want to check if a particular device has hardware support for 4G networks.

I will elaborate the issue...
In the application we have a settings page where user can make selection and allow application to run only in selected networks. Eg. User can select that app will run only in WiFi network or only in 3G network etc.

There are CheckBox preferences for all networks WiFi, 2G, 3G 4G etc. Now if the device doesn't have the support for 4G network, I want to hide the 4G selection checkbox.
All the remaining functionality is complete. I am struck on just this issue that how to detect if device support 4G or not?
Please note that I want to detect hardware support for 4G on the device and NOT the 4G connection is connected or so.
Any help is greatly appreciated.

like image 353
Udayan Avatar asked Oct 25 '11 10:10

Udayan


2 Answers

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());
   }

Use this piece of code and get all available options on the device. I think you should be able to get all capabilities of the device.

and network type info is present in http://developer.android.com/reference/android/telephony/TelephonyManager.html.

I think network types added from API level 11 are for 4g. Check it yourself.

like image 190
user550925 Avatar answered Sep 19 '22 22:09

user550925


This might work. It should check for WiMax 4g:

    private boolean is4gavailable() {
    ConnectivityManager connec = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo mobileInfo = connec.getNetworkInfo(0);
    NetworkInfo wifiInfo = connec.getNetworkInfo(1);
    NetworkInfo wimaxInfo = connec.getNetworkInfo(6);


    if (wimaxInfo!=null) {
    return mobileInfo.isConnectedOrConnecting() || wifiInfo.isConnectedOrConnecting() || wimaxInfo.isConnectedOrConnecting();
    }
    else {
    return mobileInfo.isConnectedOrConnecting() || wifiInfo.isConnectedOrConnecting();
    }
}

Try looking at this for a little more clarification.

like image 37
Nick Avatar answered Sep 21 '22 22:09

Nick