39、流量统计--原理

Android流量统计来说在2.2版中加入了TrafficStats类可以轻松获取,其实本身TrafficStats类也是读取 Linux提供的文件对象系统类型的文本进行解析。
android.net.TrafficStats类中,提供了多种静态方法,可以直接调用获取,返回类型均为long型,如果返回等于-1代表 UNSUPPORTED 当前设备不支持统计。
1. static long  getMobileRxBytes()  //获取通过Mobile连接收到的字节总数,不包含WiFi  
2. static long  getMobileRxPackets()  //获取Mobile连接收到的数据包总数,不包含WiFi  
3. static long  getMobileTxBytes()  //Mobile发送的总字节数  
4. static long  getMobileTxPackets()  //Mobile发送的总数据包数  
5. static long  getTotalRxBytes()  //获取总的接受字节数,包含Mobile和WiFi等  
6. static long  getTotalRxPackets()  //总的接受数据包数,包含Mobile和WiFi等  
7. static long  getTotalTxBytes()  //总的发送字节数,包含Mobile和WiFi等  
8. static long  getTotalTxPackets()  //发送的总数据包数,包含Mobile和WiFi等  
9. static long  getUidRxBytes(int uid)  //获取某个网络UID的接受字节数  

10. static long  getUidTxBytes(int uid) //获取某个网络UID的发送字节数 

下面来寻找TrafficStats读取的是linux下的哪些文件对象。

cmd命令窗口执行adb shell,执行ls -l命令列出手机根目录下的所有文件信息:


执行cd proc进入proc目录,执行ls -l查看该目录下的文件列表:


执行cd uid_stat进入uid_stat目录,执行ls -l查看该目录下的文件列表:

39、流量统计--原理_第1张图片

执行cd 1000进入该目录并执行ls -l查看其目录文件列表,其中tcp_rcv表示的是通过TCP协议接收到的数据,tcp_snd表示的是通过TCP协议发送的数据。

执行cat tcp_rcv查看接收到的字节数(流量单位为KB),执行cat tcp_snd查看发送的字节数(流量单位为KB)。

39、流量统计--原理_第2张图片



你可能感兴趣的:(39、流量统计--原理)