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