В Android, как измерить трафик данных на интерфейс на приложение

Я хочу реализовать расширение к 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?

13
задан razlebe 25 November 2011 в 12:06
поделиться