TrafficStats Api android et le calcul des données quotidiennes d'utilisation
Avoir une confusion sur l'une des deux méthodes suivantes de TrafficStats de Android:
getUidTxBytes(int uid) et getUidRxBytes(int uid) ,
Ces deux méthodes renvoient le nombre d'octets transmis et reçus via le réseau pour cet UID. Mais qu'est-ce que l'unité de temps, est-ce par seconde?
Si je veux calculer les données transmises et reçues par jour et par application, que dois-je faire. J'ai pensé à une façon, pour stocker des données en sql et de maintenir sur l'ajout de données à la table. Est-ce la bonne manière?
Avez-vous essayé de faire juste quelques traces et de voir si/quand les compteurs réinitialisés? Je suppose que les compteurs de démarrer à chaque fois que le processus est créé et réinitialiser lorsque le processus est terminé (c'est à dire le téléphone s'éteint).
Thankx pour votre réponse. Son compteur à zéro après le téléphone éteint. Maintenant, je vais passer à la prochaine étape de calcul de données d'utilisation en fonction de la disponibilité
Thankx pour votre réponse. Son compteur à zéro après le téléphone éteint. Maintenant, je vais passer à la prochaine étape de calcul de données d'utilisation en fonction de la disponibilité
OriginalL'auteur Naba | 2011-10-03
Vous devez vous connecter pour publier un commentaire.
Ces compteurs "depuis l'interface est allé jusqu'à" ou "depuis l'application avec ce UID a commencé". Donc, dire si votre téléphone passe en "mode Avion" et puis sur le dos, les compteurs peuvent commencer à partir de zéro à nouveau. Si vous avez besoin par seconde valeurs, vous aurez besoin d'appeler ces fonctions à chaque seconde, et ensuite utiliser le delta depuis le dernier appel. Si le delta est négatif, il suffit d'utiliser la valeur, cela signifie que le compteur a commencé à partir de zéro à nouveau.
Une chose: autant Que je sache, ces compteurs compter uniquement TCP/IP. Pas UDP. Donc, si vous avez besoin d'un très précis de la comptabilité, et l'application en question utilise le protocole UDP/IP, ou tout autre protocole que TCP, ces compteurs seront fausses.
Pour l'aperçu de la façon dont cela fonctionne, regardez le code source d'Android, disponible gratuitement. Le fichier en question est
./frameworks/base/core/jni/android_net_TrafficStats.cpp
Cette fonction récupère les données à partir de
/proc/uid_stat/[uid]/tcp_snd
. Si vous avez besoin de plus d'infos à ce sujet, vous aurez besoin de plonger dans le noyau Linux...getMobileRxBytes renvoie les données reçues sur les réseaux 3G/4G/GPRS, etc. getTotalRxBytes comprend toutes les données reçues, y compris Wi-Fi gratuite.
Comment faire pour réinitialiser le compteur de Trafic Stats de l'Api. Est-il un appel système. En fait, à chaque fois, redémarrage de l'appareil, il supprime le fichier antérieure et de créer de nouvelles , donc de mettre le compteur à chaque redémarrage. Puis-je le faire par programmation à partir de mon Appli
non, vous ne le peut pas.
Pour l'API actuelle versions (20/21), il semble que TrafficStats compte à la fois les protocoles TCP et UDP.
OriginalL'auteur haimg
Ces compteurs contient le nombre d'octets depuis le dernier redémarrage. Un certains téléphones, ces compteurs peuvent périodiquement reset, mais la plupart du temps, ils ne réinitialiser après un redémarrage. Passe en mode avion ou de modification entre le mobile et le Wi-Fi ne sera pas remettre ces compteurs à zéro.
Un point important est que ces compteurs ne comprennent pas de paquet les frais généraux, seule la taille de la charge utile. Donc typiquement, cela voudrait dire 3 à 4% pour les données peuvent être portées disparues. Cependant, si c'est un streaming, torrent ou VoIP app où les charges utiles de paquets sont petits, il y a peut être une beaucoup plus grande quantité de données d'inventaire.
Il est intéressant de noter, getTotalRxBytes (octets reçus sur toutes les interfaces, ex mobiles et Wi-Fi, combiné) et getMobileRxBytes (octets reçus uniquement sur l'interface mobile) inclure tous les octets, y compris les frais généraux. Donc, fondamentalement, votre application nombre d'octets total sera de moins que votre interface nombre d'octets total, et donc, moins que la quantité de données de votre opérateur de réseau est de la facturation de.
Un dernier point, la plupart des applications de diffusion en continu ne tiennent pas compte de leurs données en vertu de leur propre UID. Ils sont comptabilisés dans le système.les médias UID. Donc, si vous êtes à la surveillance de l'utilisation des données pour YouTube, seulement une très petite quantité de données apparaîtra effectivement, en vertu de l'application; le reste sera dans les médias UID (1013).
OriginalL'auteur OldSchool4664
Ici, j'ai l'obtention de ces applications, qui a l'autorisation de l'Internet,
Vous pouvez modifier le nom de l'Autorisation et obtenir des applications comme par besoin de vous.
Oui, Pourquoi Pas. Déjà mis en œuvre dans play.google.com/store/apps/...
quand je lance dans l'api de niveau 23, il n'est pas à moi, en MO ou en OCTETS
Quand j'ai installé que vous propose l'application de nougat et de kitkat, je ne reçois pas toutes les données. App en me montrant "Pas les applications Disponibles!". Pourriez-vous m'aider?
Pourquoi vous avez raison de 1 étoiles ?
OriginalL'auteur Narendra Sorathiya
getUidRxBytes() et getUidTxBytes() sont utilisés essentiellement pour les octets reçus et transmis respectivement. Pour surveiller vos données pour chaque application il suffit de trouver l'uid de chaque processus et de trouver les données correspondantes à chaque processus et qui seront vos données pour chaque application et ensuite vous pouvez utiliser ce code pour les calculs.
OriginalL'auteur Iqbal Singh