2016-08-08 1 views
7

Dans mon application, je veux que lorsque je clique sur un bouton, il me montre la vitesse exacte de l'Internet. J'avais lu toutes les réponses à propos de cette question qui a déjà été posée dans ce liens determining internet speed in android, Calculating Internet Speed in android, Internet Speed in android programming et ainsi de suite. Mais je n'ai pas trouvé ma réponse exactement. J'ai utilisé ceci:comment puis-je déterminer la vitesse Internet dans mon application Android

WifiInfo.getLinkSpeed ​​()

mais il montre la vitesse maximale. et aussi j'utiliser les codes de ceci:

TrafficStats

mais cela n'a pas fonctionné pour moi. J'ai besoin de montrer ma vitesse de réseau (c'est-à-dire 100 kbps). Comment puis-je faire ceci? S'il vous plaît aidez-moi. WifiInfo.getLinkSpeed ​​vous donnera la vitesse maximale de votre réseau Wi-Fi actuel.

Répondre

3

Pour déterminer la vitesse Internet dans une application android, vous devez d'abord télécharger un fichier à partir du serveur onlineserver. Pourquoi avons-nous besoin de télécharger le fichier? pour vérifier la moyenne de la vitesse de téléchargement d'Internet.

pour que vous devez coder comme celui-ci

private class InternetSpeedTest 
     extends AsyncTask<String, Void, String> { 

    long startTime; 
    long endTime; 
    private long takenTime; 

    @Override 
    protected String doInBackground(String... paramVarArgs) { 

     startTime = System.currentTimeMillis(); 
     Log.d(TAG, "doInBackground: StartTime" + startTime); 

     Bitmap bmp = null; 
     try { 
      URL ulrn = new URL(paramVarArgs[0]); 
      HttpURLConnection con = (HttpURLConnection) ulrn.openConnection(); 
      InputStream is = con.getInputStream(); 
      bmp = BitmapFactory.decodeStream(is); 

      Bitmap bitmap = bmp; 
      ByteArrayOutputStream stream = new ByteArrayOutputStream(); 
      bitmap.compress(Bitmap.CompressFormat.JPEG, 99, stream); 
      byte[] imageInByte = stream.toByteArray(); 
      long lengthbmp = imageInByte.length; 

      if (null != bmp) { 
       endTime = System.currentTimeMillis(); 
       Log.d(TAG, "doInBackground: EndTIme" + endTime); 
       return lengthbmp + ""; 
      } 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
     return null; 

    } 

    protected void onPostExecute(String result) { 

     if (result != null) { 
      long dataSize = Integer.parseInt(result)/1024; 
      takenTime = endTime - startTime; 
      double s = (double) takenTime/1000; 
      double speed = dataSize/s; 
      Log.d(TAG, "onPostExecute: " + "" + new DecimalFormat("##.##").format(speed) + "kb/second"); 
     } 
    } 

Dans ce code téléchargera une photo de Here

En doInBackground vous calculerez la taille de l'image après le téléchargement terminé ici

Bitmap bitmap = bmp; 
     ByteArrayOutputStream stream = new ByteArrayOutputStream(); 
     bitmap.compress(Bitmap.CompressFormat.JPEG, 99, stream); 
     byte[] imageInByte = stream.toByteArray(); 
     long lengthbmp = imageInByte.length 

et la dernière chose est de calculer le temps de prise en soustrayant l'heure de début du formulaire de fin et la vitesse est (size/takenTime)Je souhaite que cela fonctionne pour vous

+1

ça marche pour moi merci –

+1

c'est ce que j'ai cherché merci beaucoup –

0

Votre vitesse wifi réelle sera inférieure à cette valeur, en fonction de votre distance au point d'accès, des obstacles, des interférences, ... C'est votre vitesse au sein de votre réseau wifi. Si vous accédez à un périphérique dans votre réseau, le transfert sera le minimum entre votre vitesse et la vitesse de l'autre périphérique. Si vous accédez à Internet, votre réseau wifi est connecté à Internet et votre vitesse dépendra de la technologie utilisée (ADSL, câble, 4G, satellite, ...) et de la capacité de votre fournisseur d'accès Internet (qui est: http://www.youtube.com/watch de l'autre côté de votre connexion). Les deux valeurs changent généralement dans le temps, car elles dépendent des habitudes d'utilisation (nombre d'utilisateurs simultanés, capacité du réseau, ..)

Gardez également à l'esprit que lorsque vous êtes connecté à Internet, vous faites des demandes à un autre périphérique (la plupart du temps à un serveur). La vitesse de transfert que vous obtenez sera le minimum entre votre vitesse & celle du serveur que vous contactez. Dans l'ensemble, il y a trop d'éléments inconnus pour prédire votre vitesse Internet.

Cependant, vous pouvez toujours le calculer, il vous suffit de faire des requêtes, de mesurer le nombre de kilo-octets (ou kilo-octets) que vous obtenez, de calculer le temps nécessaire et de les diviser. Ce sera votre vitesse actuelle pour cette connexion particulière.

Si vous voulez des valeurs plus stables/fiables, vous devez répéter cette opération un certain nombre de fois et utiliser la moyenne. C'est ce que font les services de testeurs de vitesse (www.speedtest.net, testmy.net, ...).

+0

Merci beaucoup. mais, pouvez-vous me dire comment faire des demandes et mesurer combien de kilo je reçois, comment calculer le temps? Comment puis je faire ça? pourriez-vous s'il vous plaît m'aider avec un code? –

0

Pour vérifier la qualité de la connexion internet qualité et trafic. Cette bibliothèque peut vous aider ..

Facebook - Network Connection Class

Classe de connexion réseau est une bibliothèque Android qui vous permet de déterminer la qualité de la connexion Internet de l'utilisateur actuel. La connexion est classée dans plusieurs "classes de connexion" qui le rendent facile à développer. La bibliothèque le fait en écoutant le trafic Internet existant effectué par votre application et en vous avertissant lorsque la qualité de la connexion de l'utilisateur change. Les développeurs peuvent ensuite utiliser ces informations de classe de connexion et ajuster le comportement de l'application (demander des images ou des vidéos de qualité inférieure, type d'accélérateur, etc.).

+0

merci cher, mais pourriez-vous m'aider comment puis-je utiliser cette bibliothèque? si c'est possible s'il vous plaît me montrer dans le code. –

+0

Veuillez visiter la page github, suivez les instructions données sur cette page. Pour inclure la bibliothèque - vous devez ajouter cette ligne dans votre dépendance de grad à vous app.'Compile 'com.facebook.network.connectionclass: connectionclass: 1.0.1''. – Sathiamour