Comment obtenir le nombre correct d'octets envoyés et reçus dans TrafficStats?
Mon application est en train d'essayer de compter le nombre d'octets à envoyer et reçu plus de WiFi/réseau local et les connexions de données mobiles. Pour ce faire, j'ai récupérer les valeurs de TrafficStats
compteurs à un point dans le temps et la déduire de ses valeurs, la prochaine fois que je vérifie.
//get current values of counters
long currentMobileTxBytes = TrafficStats.getMobileTxBytes();
long currentMobileRxBytes = TrafficStats.getMobileRxBytes();
long totalTxBytes = TrafficStats.getTotalTxBytes();
long totalRxBytes = TrafficStats.getTotalRxBytes();
//to get mobile data count, subtract old from current
long currentMobileSent = currentMobileTxBytes - oldMobileTxBytes;
long currentMobileReceived = currentMobileRxBytes - oldMobileRxBytes;
//to get WiFi/LAN data count, subtract total from mobile
long currentNetworkSent = totalTxBytes - currentMobileTxBytes;
long currentNetworkReceived = totalRxBytes - currentMobileRxBytes;
J'ai l'impression que l'algorithme ci-dessus est raisonnable, cependant, je ne suis pas sûr de la façon de vérifier l'exactitude de ces compteurs. Par exemple, quand j'ai essayé de téléchargement d'une 2.7 MB fichier vers Dropbox via le WiFi, la currentMobileSent
valeur que j'ai eu était d'environ 10 MO. Et même sans en surfant sur le web jusqu'à la prochaine case, j'obtiens une valeur non-nulle indiquant que je n'ai reçu quelques octets de données au cours de la période d'attente.
Est-il un moyen pour moi de vérifier comment TrafficStats
arrive à ces chiffres? Je suis conscient qu'en plus de mon navigateur, il pourrait y avoir d'autres applications en cours d'exécution en arrière-plan qui se connectent à l'internet, mais 2,7 MO à 10 MO semble juste comme un énorme saut-je encore "reçu" à 90 MO une fois sans rien faire. Ou est-il quelque chose de mal avec la façon dont je suis l'informatique les octets envoyés et reçus?
source d'informationauteur Matt Quiros
Vous devez vous connecter pour publier un commentaire.
De TechRepublic:
Créer un nouveau projet Android dans Eclipse. N'oubliez pas d'utiliser le TrafficStats classe vous devez cibler l'API pour Android 2.2 (Froyo) ou
plus élevé.
Dans le
/res/layout
dossier, nous allons créer un activity_main.xml de la ressource. Pour ce projet, nous sommes juste à l'aide d'une série de texte des vues à la verticaleempilés linéaire de la mise en page.
activity_main.xml
Avec notre mise en place, on peut passer à l' /dossier src. Créer
MainActivity.java par l'extension de l'Activité/AppCompatActivity classe. Nous allons aussi aller de l'avant et
déclarer trois variables de classe.
MainActivity.java
Nous allons utiliser la substitution de créer pour initialiser notre privé
les variables, ainsi que de programmer un rappel sur le thread d'INTERFACE utilisateur. Faire un
note de la vérification de l'enum TrafficStats.Non pris en charge. Alors que mon
expérience avec le TrafficStats classe a été sans accroc, l'
officiel de Google documentation indique que certains appareils peuvent ne pas supporter
ce type de reportage et lorsque c'est le cas, l'appel renvoie la
susmentionnés valeur. Pour cette raison, il est une bonne idée d'écrire votre
code de manière défensive, comme je l'ai démontré ici.
MainActivity.java
Dernier mais non le moindre, nous devons mettre à jour notre affichage et de reporter la
praticable.
MainActivity.java