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查看该目录下的文件列表:
执行cd 1000进入该目录并执行ls -l查看其目录文件列表,其中tcp_rcv表示的是通过TCP协议接收到的数据,tcp_snd表示的是通过TCP协议发送的数据。
执行cat tcp_rcv查看接收到的字节数(流量单位为KB),执行cat tcp_snd查看发送的字节数(流量单位为KB)。