安卓App流量统计

http://keepcleargas.bitbucket.org/2013/10/12/android-App-Traffic.html

安卓App流量统计

12 OCT 2013

android流量简介

  • 流量统计文件:路径/proc/net/dev

如上图: lo 为本地流量, rmnet0 为3g/2g流量, wlan0 为无线流量.

  • /sys/class/net/下 可以找到相关类别(如rmnet0)的目录.在其子目录statistics下游rxbytes和txbytes记录收发流量.
  • /proc/uid_stat/{uid}/tcp_rcv记录该uid应用下载流量字节,/proc/uid_stat/{uid}/tcp_snd有该uid应用上传流量字节

TrafficStats学习

static long  getMobileRxBytes()  //获取通过Mobile连接收到的字节总数,不包含WiFi
    static long  getMobileRxPackets()  //获取Mobile连接收到的数据包总数
    static long  getMobileTxBytes()  //Mobile发送的总字节数
    static long  getMobileTxPackets()  //Mobile发送的总数据包数
    static long  getTotalRxBytes()  //获取总的接受字节数,包含Mobile和WiFi等
    static long  getTotalRxPackets()  //总的接受数据包数,包含Mobile和WiFi等
    static long  getTotalTxBytes()  //总的发送字节数,包含Mobile和WiFi等
    static long  getTotalTxPackets()  //发送的总数据包数,包含Mobile和WiFi等
    static long  getUidRxBytes(int uid)  //获取某个网络UID的接受字节数
    static long  getUidTxBytes(int uid) //获取某个网络UID的发送字节数

备注:TrafficStats类在Android 2.2 API Level(8)之后出现。

设计一个合理的APP流量统计

  • 记录某App开关机流量使用

因为getUidRxBytes(int uid)和 getUidTxbytes(int uid)记录的是 该uid应用 在手机启动到你使用这个方法时的流量统计.故需要在手机关机时记录你这个程序在这次开关机过程中的使用流量记录.

public class ShutDownReceiver extends BroadcastReceiver{
        @Override
        public void onReceive(Context context, Intent intent) {
            //在关机时 记录uid应用 本次流量结余
        }
    }
  • 记录Wifi中的流量使用

因为getUidRxBytes(int uid)和 getUidTxbytes(int uid)包括了所有网络形式的流量,即包括WIFI和3g/2g.故需要监听WIFI变化,并记录WIFI过程中该uid应用使用的流量记录.

public class WifiStateReceiver extends BroadcastReceiver implements ISusoConstants {
    @Override
    public void onReceive(Context context, Intent intent) {
        if (intent.getAction().equals(WifiManager.WIFI_STATE_CHANGED_ACTION)) {
            int wifistate = intent.getIntExtra(WifiManager.EXTRA_WIFI_STATE, WifiManager.WIFI_STATE_DISABLED);
            if (wifistate == WifiManager.WIFI_STATE_DISABLED) {//如果关闭
                //结余本次wifi过程中 uid应用的 流量
            } else if (wifistate == WifiManager.WIFI_STATE_ENABLED) {
                //记录当前uid应用的流量.
            }
        }
    }
}
  • 使用每日闹铃统计/开机时判断昨日统计是否完成.

通过每日结余计算,得出该日APP的总流量以及WIFI流量占用和2g/3g的流量占用.

  • 获取流量代码
PackageManager pm = context.getPackageManager();
    ApplicationInfo ai = pm.getApplicationInfo("com.51zaozao.traffic", PackageManager.GET_ACTIVITIES);
    long inTraffic = TrafficStats.getUidRxBytes(ai.uid);
    long outTraffic = TrafficStats.getUidTxBytes(ai.uid);

拓展阅读

时间: 2024-08-29 01:57:42

安卓App流量统计的相关文章

App流量统计

App流量统计 这是一个App消耗流量的统计,有wifi数据统计和移动数据统计,用柱状图和折线图体现了流量消耗的趋势直观明了. 下载地址:http://www.devstore.cn/code/info/818.html  运行截图:    

android app 流量统计

https://blog.csdn.net/yzy9508/article/details/48300265 | android 数据流量统计 - CSDN博客https://blog.csdn.net/forlong401/article/details/8440160 | android如何开发流量监控软件 - CSDN博客https://stackoverflow.com/questions/12613402/android-statistic-3g-traffic-for-each-ap

App流量测试--使用安卓自身提供的TCP收发长度统计功能

在Linux系统有3个地方保存流量统计文件,对于Android系统同样也适用: (1)在/proc/net/dev下可以查看各个网络接口的收发流量  (等同adb shell cat /proc/pid/net/dev,adbshell cat /sys/class/net/wlan0/statistics/rx_bytes) (2)在/sys/class/net/下可以找到相关类别(如wlan0)的目录.在其子目录statistics下游rxbytes和txbytes记录收发流量 (3)在/p

Android应用流量统计——NetworkStatsManager使用

在没有Root的情况下,Android应用流量统计在6.0之前一直没有太好的办法,官方虽然提供了TrafficStats,但其主要功能是设备启动以来流量的统计信息,和时间信息无法很好的配合.最近再看TrafficStats类时,发现说明中提到,为获取更具鲁棒性的网络历史数据,建议使用NetworkStatsManager. 本文首先简单对比下TrafficStats和NetworkStatsManager各自的限制和优缺点,然后详细说明NetworkStatsManager的用法,并给出主要代码

手机卫士10_widget_流量统计_手机杀毒

1._widget入门: 查看帮助文档>>Developrs>>API Guides>>App Widgets 实际上是一个迷你的应用程序VIew视图,嵌入在另外一个应用程序视图. 标准的android和兼容widget的手机才能显示,被修改过的系统是无法显示的. 实现步骤: ①创建类继承APPWidgetProvider//一个方便的帮助类,用来实现一个appwidget 它继承了广播接收者,实现原理也是通过广播实现的,特殊的广播接收者. ②在清单文件里配置广播接收者

MR作业编程案例-流量统计

流量统计(统计每个用户的上行流量和下行流量及其流量总和) 源数据: 1363157985066     13726230503    00-FD-07-A4-72-B8:CMCC    120.196.100.82    i02.c.aliimg.com        24    27    2481    24681    200 1363157995052     13826544101    5C-0E-8B-C7-F1-E0:CMCC    120.197.40.4           

[Android] 深入浅出Android App耗电量统计

reference to : http://www.cnblogs.com/hyddd/p/4402621.html 前言 在Android统计App耗电量比较麻烦,直至Android 4.4,它仍没公开“电量统计”API或文档……额,是的,仅没有公开,并不是没有.平时在手机“设置- 电量”看到的数据 就是系统调用内部API的统计结果. 基础概念 1. 手机由众多“部件”组成,所谓“部件”是指:CPU,WIFI,GPS....所以,Android App消耗总电量为 App运行过程中,涉及各部件

Android中进行流量统计

// ---------------------流量统计-------------------------------- try { PackageManager pm = getPackageManager(); ApplicationInfo ai = pm.getApplicationInfo("com.test.app", PackageManager.GET_ACTIVITIES);// com.test.app为自己应用的包名 Log.d("!!", &

安卓APP测试之使用Burp Suite实现HTTPS抓包方法

APP的测试重点小部分在APP本身,大部分还是在网络通信上(单机版除外).所以在安卓APP测试过程中,网络抓包非常重要,一般来说,app开发会采用HTTP协议.Websocket.socket协议,一般来说,HTTP协议最多,Websocket是后起之秀,socket最少,而针对HTTP和websocket,Burp Suite工具是最适合不过的工具了.但是在遇到了app使用SSL或TLS加密传输(https)的时候,由于证书不被信任,直接导致网络通信终端,抓包失败.本文介绍如何使用Burp s