J'ai un indicateur sur mon application pour afficher le type de réseau (2G ou 3G ou 4G) mais après avoir obtenu le type de réseau, comment puis-je savoir dans quelle catégorie de vitesse il devrait être ?
Je sais comment détecter le type de réseau :
private TelephonyManager telephonyManager;
telephonyManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
CurrentNetworkType = telephonyManager.getNetworkType();
Compte tenu des valeurs de retour possibles :
// 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)
Je considérerais le LTE comme de la 4G, mais quels sont ceux qui sont réellement considérés comme de la 3G ? Tout le reste est considéré comme de la 2G.
Où se situe donc la limite entre 3G et non 3G ?
Mise à jour : J'ai trouvé une autre réponse pertinente à l'adresse suivante https://stackoverflow.com/a/8548926/949577 Il utilise ConnectivityManager() pour obtenir le type et le sous-type, puis classe le sous-type comme rapide ou non. Je ne sais pas si l'utilisation de ConnectivityManager() est une meilleure approche que celle de TelephonyManager () puisqu'ils semblent tous deux capables de renvoyer le type de réseau.
J'ai également trouvé un lien qui compare les normes de données sans fil à l'adresse suivante http://en.wikipedia.org/wiki/Comparison_of_wireless_data_standards .
0 votes
Duplication possible de Détecter le type de connexion réseau sur Android