我想实现一个扩展来android.net.TrafficStats
测量每个 APN 或每个应用程序的每个 APN 的数据流量。方法原型如下所示:
getInterfaceTxPackets(String interface)
getInterfaceRxPackets(String interface)
getInterfaceTxBytes(String interface)
getInterfaceRxBytes(String interface)
getUidInterfaceTxPackets(int uid,String interface)
getUidInterfaceRxPackets(int uid,String interface)
getUidInterfaceTxBytes(int uid,String interface)
getUidInterfaceRxBytes(int uid,String interface)
我读了android.net.TrafficStats.java
,它调用了中的原生方法android_net_TrafficStats.cpp
,而原生方法从一些文件中读取了流量统计信息:
总流量统计文件在文件夹中
/sys/class/net/
,在这个文件夹中有一些子文件夹,如:eth0、ip6tnl0、rmnet0、rmnet1、rmnet2、rmnet3。详细的统计文件保存在这些文件夹中。每个应用程序的流量统计文件位于
/proc/uid_stat/[uid]/
我的问题:
做文件夹
rmnet0, rmnet1, rmnet2, rmnet3..
。匹配每个 APN?如果有,匹配规则是什么?如果没有,如何获取每个 APN 流量统计信息?在文件夹
/proc/uid_stat/[uid]/,
中只有两个文件:tcp_rcv
并且tcp_snd
,如何获取每个 APN 流量统计信息的每个应用程序?