My application has an indicator that displays the type of network (2G or 3G or 4G), but after receiving the type of network, I will find out in which category of speed it should be?
I know how to determine the type of network:
private TelephonyManager telephonyManager; telephonyManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE); CurrentNetworkType = telephonyManager.getNetworkType();
Given the possible return values:
// public static final int NETWORK_TYPE_1xRTT // Since: API Level 4 // Current network is 1xRTT // Constant Value: 7 (0x00000007) // // public static final int NETWORK_TYPE_CDMA // Since: API Level 4 // Current network is CDMA: Either IS95A or IS95B // Constant Value: 4 (0x00000004) // // public static final int NETWORK_TYPE_EDGE // Since: API Level 1 // Current network is EDGE // Constant Value: 2 (0x00000002) // // public static final int NETWORK_TYPE_EHRPD // Since: API Level 11 // Current network is eHRPD // Constant Value: 14 (0x0000000e) // // public static final int NETWORK_TYPE_EVDO_0 // Since: API Level 4 // Current network is EVDO revision 0 // Constant Value: 5 (0x00000005) // // public static final int NETWORK_TYPE_EVDO_A // Since: API Level 4 // Current network is EVDO revision A // Constant Value: 6 (0x00000006) // // public static final int NETWORK_TYPE_EVDO_B // Since: API Level 9 // Current network is EVDO revision B // Constant Value: 12 (0x0000000c) // // public static final int NETWORK_TYPE_GPRS // Since: API Level 1 // Current network is GPRS // Constant Value: 1 (0x00000001) // // public static final int NETWORK_TYPE_HSDPA // Since: API Level 5 // Current network is HSDPA // Constant Value: 8 (0x00000008) // // public static final int NETWORK_TYPE_HSPA // Since: API Level 5 // Current network is HSPA // Constant Value: 10 (0x0000000a) // // public static final int NETWORK_TYPE_HSPAP // Since: API Level 13 // Current network is HSPA+ // Constant Value: 15 (0x0000000f) // // public static final int NETWORK_TYPE_HSUPA // Since: API Level 5 // Current network is HSUPA // Constant Value: 9 (0x00000009) // // public static final int NETWORK_TYPE_IDEN // Since: API Level 8 // Current network is iDen // Constant Value: 11 (0x0000000b) // // public static final int NETWORK_TYPE_LTE // Since: API Level 11 // Current network is LTE // Constant Value: 13 (0x0000000d) // // public static final int NETWORK_TYPE_UMTS // Since: API Level 1 // Current network is UMTS // Constant Value: 3 (0x00000003) // // public static final int NETWORK_TYPE_UNKNOWN // Since: API Level 1 // Network type is unknown // Constant Value: 0 (0x00000000)
I would consider LTE 4G, but which one is really considered 3G? Everything else I would consider 2G.
So where do you draw the line between 3G or not 3G?
Update: I found another relevant answer at https://stackoverflow.com/a/3/9459/ ... It uses ConnectivityManager () to get the type and subtype, and then classifies the subtype as fast or not. I don't know if using ConnectivityManager () is a better approach than using TelephonyManager (), as both of them can return a network type.
I also found a link that compares wireless data standards at http://en.wikipedia.org/wiki/Comparison_of_wireless_data_standards .
android android-networking 3g 4g
Tary Feb 14 '12 at 20:32 2012-02-14 20:32
source share