Est-il un moyen de détecter le réseau cellulaire est utilisé sur Android?
Mon application mettra en vedette des flux vidéo en direct. Je voudrais savoir si il existe un moyen de détecter si l'utilisateur a 2G, 3G ou 4G sur leurs appareils, et si la catégorie à laquelle la connexion actuelle appartient? Ma question est spécifiquement sur les appareils Android.
Je vois qu'il a très types NETWORK_TYPE_UNKNOWN NETWORK_TYPE_GPRS NETWORK_TYPE_EDGE NETWORK_TYPE_UMTS NETWORK_TYPE_HSDPA NETWORK_TYPE_HSUPA NETWORK_TYPE_HSPA NETWORK_TYPE_CDMA NETWORK_TYPE_EVDO_0 NETWORK_TYPE_EVDO_A NETWORK_TYPE_EVDO_B NETWORK_TYPE_1xRTT NETWORK_TYPE_IDEN NETWORK_TYPE_LTE NETWORK_TYPE_EHRPD NETWORK_TYPE_HSPAP
Voici une semblable réponse à la question stackoverflow.com/questions/9283765/...
dupliqué question avec des réponses qui peut être trouvé ici: stackoverflow.com/questions/2802472/...
Je ne pense pas qu'il a été entièrement résolu, comment utiliser le manager de le réduire à la 2G, 3G ou 4G. Si je pense que l'utilisateur a un 3G quand ils sont vraiment 2G qui a des conséquences pour l'expérience, je suis en train de créer.
Voici une semblable réponse à la question stackoverflow.com/questions/9283765/...
dupliqué question avec des réponses qui peut être trouvé ici: stackoverflow.com/questions/2802472/...
Je ne pense pas qu'il a été entièrement résolu, comment utiliser le manager de le réduire à la 2G, 3G ou 4G. Si je pense que l'utilisateur a un 3G quand ils sont vraiment 2G qui a des conséquences pour l'expérience, je suis en train de créer.
OriginalL'auteur Android Developer | 2012-12-06
Vous devez vous connecter pour publier un commentaire.
Je ne suis pas au courant d'une façon d'interroger les capacités matérielles de l'appareil (qui radios sont présentes), mais si vous vous demandez comment faire pour détecter le type de connexion de données cellulaires, de regarder
TelephonyManager.getNetworkType()
, qui "renvoie une constante indiquant la technologie radio (type de réseau) actuellement en cours d'utilisation sur l'appareil pour la transmission de données".Je considère les valeurs
NETWORK_TYPE_LTE
etNETWORK_TYPE_HSPAP
indique une connexion 4G. Depuis la ligne entre la 3G et la 4G est flou, et depuis l'ensemble des technologies plus anciennes est fixés de façon efficace (nous ne sommes pas en train d'inventer de nouveaux réseaux 2G), une meilleure stratégie consiste à identifier les technologies de réseau qui sont pas suffisant et affiche un avertissement si la connexion est en utilisant une lenteur de la technologie (par exemple, EDGE).Également garder à l'esprit que la technologie de réseau à lui seul n'est pas forcément synonyme d'une certaine vitesse de connexion. Même une connexion 4G peut fonctionner à des vitesses qui sont insuffisantes pour le streaming vidéo en fonction de nombreux facteurs, dont certains sont externes à l'appareil (température, force du signal, le dispositif de niveau de la batterie, de la bande passante disponible à la tour de téléphonie cellulaire, etc.)
D'autres mises en garde:
Vous devriez d'abord vérifier si la connexion réseau est active une connexion cellulaire. Pour ce faire,
ConnectivityManager.getActiveNetworkInfo()
et d'examiner l'objetgetType()
. Cela indique que les actifs de réseau Wi-Fi ou cellulaire. Gardez à l'esprit qu'il y a peut-être pas de réseau actif (null
sera retourné).Vous devriez également vérifier
ConnectivityManager.isActiveNetworkMetered()
un indice quant à savoir si la connexion réseau en cours a un données de restriction. Si oui, vous devez avertir l'utilisateur avant de procéder à forte intensité de données, peu importe le type de connexion.Vous aurez brièvement la recherche de divers types de réseaux pour déterminer la génération et la vitesse théorique maximale de chacun d'eux; cependant, je vous recommandons d'identifier uniquement les types de réseau qui ne sont certainement pas approprié (2G ou plus tôt) et de la décision. Vous ne pouvez pas différencier efficacement entre la 3G et la 4G connexion avec cette approche.
Je suis l'espoir pour un peu plus de commentaires, pour voir si quelqu'un a distingué les différents types de réseau et classés en leur vitesse. Ce sera, nous l'espérons enregistrer moi-même et les autres beaucoup de temps.
Je suis à l'aide de ces codes sur mes applications. J'ai aussi trouvé quelque part sur le web j'ai juste ne peux pas me rappeler où.
1xRTT - (de 50 à 100 kbits / s), CDMA (14-64 kbit / s) BORD (de 50 à 100 kbit / s) EVDO - (400-1000 kbps) EVDO_A - (600-1400 kbps) GPRS (100 kbits / s) HSDPA - (de 2 à 14 Mbit / s) HSPA - (700 à 1700 kbps) HSUPA - (1-23 Mbps) UMTS (400-7000 kbps) EHRPD - (1 à 2 Mbit / s) EVDO_B - (5 Mbps) HSPAP - (de 10 à 20 Mbit / s) IDEN - (25 kbps ) LTE (+de 10 Mbit / s)
OriginalL'auteur quietmint
Ici est un L'essentiel de la classe, de sorte que vous pouvez fourche et l'a édité.
Aussi assurez-vous d'ajouter cette autorisation pour vous AndroidManifest.xml
Pour toutes inférieure ou égale à 100kbps vitesse, le réseau est considéré comme la 2G.
Pour tous les plus de 100kbps & moins de 1 mbps de vitesse, le réseau est considéré comme la 3G.
Et pour tous les plus de 1 mbps de vitesse, le réseau est considéré comme la 4G.
Sources pour des vitesses de réseau, notamment wikipédia http://en.wikipedia.org/wiki/Comparison_of_wireless_data_standards
Ultime de la classe, Il est très utile
bravo, le meilleur que j'ai vu sur. +1
Peut-être utile de préciser que Emil Davtyan a écrit la classe en tant que votre réponse est écrit, il ressemble à vous il a écrit.
OriginalL'auteur Vivek Bansal