13

我想实现一个扩展来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_rcv并且tcp_snd,如何获取每个 APN 流量统计信息的每个应用程序?

4

1 回答 1

0

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

请注意,每个接口名称都没有关联的含义,因此您不能假设您在一台设备上找到的特定名称在另一台设备上意味着相同的东西。

于 2012-01-17T00:16:47.710 回答