2011-11-25 31 views
13

Tôi muốn triển khai một giới hạn đến android.net.TrafficStats để đo lưu lượng dữ liệu trên mỗi APN hoặc mỗi APN cho mỗi ứng dụng. các phương pháp nguyên mẫu trông giống như:Trong Android, cách đo lưu lượng dữ liệu trên mỗi giao diện cho mỗi ứng dụng

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) 

tôi đọc android.net.TrafficStats.java, nó gọi các phương pháp bản địa android_net_TrafficStats.cpp, và các phương pháp tự nhiên đọc số liệu thống kê lưu lượng từ một số tập tin:

  • tổng file thống kê giao thông nằm trong thư mục /sys/class/net/, trong thư mục này có một số thư mục phụ như: eth0, ip6tnl0, rmnet0, rmnet1, rmnet2, rmnet3., các tệp thống kê chi tiết được lưu trong các thư mục này.

  • trên mỗi lưu lượng ứng dụng các file số liệu thống kê là trong /proc/uid_stat/[uid]/

Câu hỏi của tôi:

  1. Do thư mục rmnet0, rmnet1, rmnet2, rmnet3... phù hợp với mỗi APN? Nếu có, quy tắc đối sánh là gì? nếu không, làm cách nào tôi có thể nhận được từng thống kê lưu lượng truy cập APN?

  2. Trong thư mục /proc/uid_stat/[uid]/, chỉ có hai tệp: tcp_rcvtcp_snd, làm cách nào tôi có thể nhận mỗi ứng dụng trên mỗi số liệu thống kê lưu lượng truy cập APN?

+0

Bạn có đang sử dụng ICS không? Theo tôi, thống kê lưu lượng truy cập ứng dụng chỉ có sẵn trên ICS, xem http://developer.android.com/sdk/android-4.0-highlights.html#data-dev – ChrLipp

+2

Tôi đã tìm thấy NetworkStatsFactory.java trên ICS có thể đáp ứng điều này yêu cầu. Cảm ơn – freeman

Trả lời

0

Vui lòng chuyển sang Android 4.0, nơi giám sát việc sử dụng dữ liệu này đã được tăng cường. Các API này hiện nằm trên đầu trang của một dịch vụ phức tạp hơn nhiều, thu thập thông tin giao thông trên mỗi giao diện cho mỗi uid. Lưu ý rằng không có ý nghĩa gì liên quan đến từng tên giao diện, do đó bạn không thể giả định rằng một tên cụ thể mà bạn tìm thấy trên một thiết bị có nghĩa là một điều giống nhau trên một thiết bị khác.

Các vấn đề liên quan