在Android中,如何衡量每个应用程序的每个接口的数据流量

时间:2011-11-25 09:18:31

标签: android traffic-measurement

我想实现对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]/

我的问题:

  1. 执行文件夹rmnet0, rmnet1, rmnet2, rmnet3..。匹配每个APN?如果这样做,匹配规则是什么?如果没有,我如何获得每个APN流量统计数据?

  2. 在文件夹/proc/uid_stat/[uid]/,中,只有两个文件:tcp_rcvtcp_snd,如何在每个APN流量统计信息中获取每个应用程序?

1 个答案:

答案 0 :(得分:0)

请切换到Android 4.0,在这里,数据使用情况监控得到了加强。这些API现在位于一个更复杂的服务之上,该服务收集每个接口的每个流量信息。

请注意,没有任何与每个接口名称相关的含义,因此您不能只假设您在一台设备上找到的特定名称在另一台设备上的含义相同。