天天看點

Android測量指定應用程式的上下行流量

參考:http://xlover.iteye.com/blog/1358301 

Android2.3之後把資料流量監控封裝到了Android.net.TrafficStats類中,原理是讀取系統的流量記錄檔案。   主要方法: static long getMobileRxBytes()//擷取通過Mobile連接配接收到的位元組總數,但不包含WiFi static long getMobileRxPackets()//擷取Mobile連接配接收到的資料包總數 static long getMobileTxBytes()//Mobile發送的總位元組數 static long getMobileTxPackets()//Mobile發送的總資料包數 static long getTotalRxBytes()//擷取總的接受位元組數,包含Mobile和WiFi等 static long getTotalRxPackets()//總的接受資料包數,包含Mobile和WiFi等 static long getTotalTxBytes()//總的發送位元組數,包含Mobile和WiFi等 static long getTotalTxPackets()//發送的總資料包數,包含Mobile和WiFi等 static long getUidRxBytes(int uid)//擷取某個網絡UID的接受位元組數 static long getUidTxBytes(int uid) //擷取某個網絡UID的發送位元組數   傳回類型均為long型,如果傳回等于-1代表 UNSUPPORTED 目前裝置不支援統計,可能是因為系統版本低。   這其中可能遇到的問題是:沒有wifi的情況下,各程序獲得的getUidRxBytes之和與getMobileRxBytes所傳回的值不相等。原因在于getUidRxBytes傳回的值中包含了本地通信的流量,比如本地程序間的socket通信。 

還有一個遺留問題:怎樣在不關閉wifi的條件下,擷取單個程序的2G/3G流量?  

希望大家在參考的同時給出自己的看法。