2011-11-25 12 views
13

Chcę zaimplementować rozszerzenie do android.net.TrafficStats, aby zmierzyć ruch danych na APN lub na APN na aplikację. prototyp metody wygląda następująco:W systemie Android, jak mierzyć ruch danych w interfejsie aplikacji

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) 

czytam android.net.TrafficStats.java, to zadzwoń do metod natywnych w android_net_TrafficStats.cpp i metody natywne przeczytać statystyki ruchu z niektórych plików:

  • łączne plików statystycznych o ruchu drogowym znajdują się w folderze /sys/class/net/, w tym folderze znajdują się podkatalogi takie jak: eth0, ip6tnl0, rmnet0, rmnet1, rmnet2, rmnet3., szczegółowe pliki statystyczne są zapisywane w tych folderach.

  • per ruchu statystyki są pliki aplikacji w /proc/uid_stat/[uid]/

moje pytania:

  1. Czy folder rmnet0, rmnet1, rmnet2, rmnet3... dopasować każdy APN? Jeśli tak, jaka jest zasada dopasowania? jeśli nie, w jaki sposób mogę uzyskać statystyki ruchu APN?

  2. W folderze /proc/uid_stat/[uid]/, istnieją tylko dwa pliki: tcp_rcv i tcp_snd, jak mogę dostać każdy applicaton na każdej APN statystykach ruchu?

+0

Czy jesteś na ICS? Moim zdaniem statystyki ruchu aplikacji są dostępne tylko na ICS, zobacz http://developer.android.com/sdk/android-4.0-highlights.html#data-dev – ChrLipp

+2

Znalazłem NetworkStatsFactory.java na ICS, który może spełnić to wymaganie. Dzięki – freeman

Odpowiedz

0

Przełącz się na system operacyjny Android 4.0, w którym monitorowanie wykorzystania danych zostało udoskonalone. Te interfejsy API znajdują się teraz na szczycie znacznie bardziej skomplikowanej usługi, która zbiera informacje o ruchu per-interface dla poszczególnych interfejsów.

Należy pamiętać, że nie ma znaczenia związanego z każdą nazwą interfejsu, więc nie można po prostu założyć, że konkretna nazwa znaleziona na jednym urządzeniu oznacza to samo na innym.

Powiązane problemy