解析android 流量監(jiān)測的實(shí)現(xiàn)原理

Linux 系統(tǒng)下所有的信息都是以文件的形式存在的。

應(yīng)用程序的流量信息也被保存在操作系統(tǒng)的某一個文件中。

Android 2.2 版本以前的系統(tǒng)的流量信息都存放在

proc/net/dev

或者 proc/self/net/dev

目錄下辛友,讀取文件然后對其進(jìn)行解析就行了。

之后版本存放路徑

proc/uid_stat/uid /tcp_rcv

proc/uid_stat/uid /tcp_snd

讀取某個應(yīng)用(uid)的流量杰捂,對以上兩個文件進(jìn)行解析即可(注:模擬器下不存在這個目錄)比驻。

查看某個應(yīng)用的流量信息,可以通過以下命令來實(shí)現(xiàn):

命令查看流量存儲文件

查看uid等于1000的程序认轨,流量使用數(shù)據(jù)

uid為1000的程序接受與發(fā)送的流量數(shù)據(jù)(B)

這里需要注意的是不同語言編寫的應(yīng)用程序?qū)?yīng)的的 uid 命名規(guī)則是不同的:

Java 編寫的應(yīng)用程序绅络,它的 uid 是從 10000 開始的;

C 語言編寫的,它的 uid 是從 1000 開始的;

另外嘁字,uid 一旦被分配恩急,是不會改變的。

從下圖中我們可以看到類似u0_a0纪蜒、u0_a1衷恭、u0_a3、u0_a4的信息纯续,這些信息也代表了 uid:

u0_a0 等同于 10000

u0_a1 等同于 10001

事實(shí)上“u0_aXX”后面的信息代表這個應(yīng)用的安裝序號随珠,表示這個應(yīng)用是第幾個被安裝到系統(tǒng)的灭袁。

查看 /data/data 需要root權(quán)限

打印程序信息

程序包名與程序uid對應(yīng)關(guān)系,存儲在系統(tǒng)/data/system/packages.list文件中

需要root權(quán)限

查看uid列表

Android 2.2 版本開始加入了android.net.TrafficStats類來實(shí)現(xiàn)對流量統(tǒng)計(jì)的操作窗看。

其實(shí) TrafficStats 類也是讀取 Linux 下保存流量信息的文件并進(jìn)行解析來實(shí)現(xiàn)的茸歧。

類中提供了多種靜態(tài)方法,可以直接調(diào)用显沈,返回類型均為 long 型软瞎,如果返回值等于 -1 代表UNSUPPORTED,表示當(dāng)前設(shè)備不支持統(tǒng)計(jì)构罗。

這里需要注意的是铜涉,通過 TrafficStats 獲取的數(shù)據(jù)在手機(jī)重啟的時候會被清空,所以遂唧,如果要對流量進(jìn)行持續(xù)的統(tǒng)計(jì)需要將數(shù)據(jù)保存到數(shù)據(jù)庫中芙代,在手機(jī)重啟時將數(shù)據(jù)讀出進(jìn)行累加即可。

驗(yàn)證手機(jī)重啟

重啟手機(jī)后盖彭,查看流量相關(guān)文件纹烹,

uid_stat目錄為空

說明數(shù)據(jù)已被清空了。

TrafficStats 類的靜態(tài)方法如下:

static long ?getMobileRxBytes() ?//獲取通過Mobile連接收到的字節(jié)總數(shù)召边,不包含WiFi

static long ?getMobileRxPackets() ?//獲取Mobile連接收到的數(shù)據(jù)包總數(shù)

static long ?getMobileTxBytes() ?//Mobile發(fā)送的總字節(jié)數(shù)

static long ?getMobileTxPackets() ?//Mobile發(fā)送的總數(shù)據(jù)包數(shù)

static long ?getTotalRxBytes() ?//獲取總的接受字節(jié)數(shù)铺呵,包含Mobile和WiFi等

static long ?getTotalRxPackets() ?//總的接受數(shù)據(jù)包數(shù),包含Mobile和WiFi等

static long ?getTotalTxBytes() ?//總的發(fā)送字節(jié)數(shù)隧熙,包含Mobile和WiFi等

static long ?getTotalTxPackets() ?//發(fā)送的總數(shù)據(jù)包數(shù)片挂,包含Mobile和WiFi等

static long ?getUidRxBytes(int uid) ?//獲取某個程序的接受字節(jié)數(shù)

static long ?getUidTxBytes(int uid) //獲取某個程序的發(fā)送字節(jié)數(shù)

總接受流量TrafficStats.getTotalRxBytes();

總發(fā)送流量TrafficStats.getTotalTxBytes());

不包含WIFI的手機(jī)GPRS接收量TrafficStats.getMobileRxBytes());

不包含Wifi的手機(jī)GPRS發(fā)送量TrafficStats.getMobileTxBytes());

/** 獲取手機(jī)指定 UID 對應(yīng)的應(yīng)程序用通過所有網(wǎng)絡(luò)方式接收的字節(jié)流量總數(shù)(包括 wifi) */

某一個程序的總接收量TrafficStats.getUidRxBytes(Uid));

/** 獲取手機(jī)指定 UID 對應(yīng)的應(yīng)用程序通過所有網(wǎng)絡(luò)方式發(fā)送的字節(jié)流量總數(shù)(包括 wifi) */

某一個程序的總發(fā)送量TrafficStats.getUidTxBytes(Uid));

從本次開機(jī)到本次調(diào)用該接口的統(tǒng)計(jì)量。

參考文章1

參考文章2

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末贞盯,一起剝皮案震驚了整個濱河市音念,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌躏敢,老刑警劉巖闷愤,帶你破解...
    沈念sama閱讀 211,817評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異件余,居然都是意外死亡讥脐,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,329評論 3 385
  • 文/潘曉璐 我一進(jìn)店門啼器,熙熙樓的掌柜王于貴愁眉苦臉地迎上來旬渠,“玉大人,你說我怎么就攤上這事端壳》厥” “怎么了?”我有些...
    開封第一講書人閱讀 157,354評論 0 348
  • 文/不壞的土叔 我叫張陵更哄,是天一觀的道長芋齿。 經(jīng)常有香客問我,道長成翩,這世上最難降的妖魔是什么觅捆? 我笑而不...
    開封第一講書人閱讀 56,498評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮麻敌,結(jié)果婚禮上栅炒,老公的妹妹穿的比我還像新娘。我一直安慰自己术羔,他們只是感情好赢赊,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,600評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著级历,像睡著了一般释移。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上寥殖,一...
    開封第一講書人閱讀 49,829評論 1 290
  • 那天玩讳,我揣著相機(jī)與錄音,去河邊找鬼嚼贡。 笑死熏纯,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的粤策。 我是一名探鬼主播樟澜,決...
    沈念sama閱讀 38,979評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼叮盘!你這毒婦竟也來了秩贰?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,722評論 0 266
  • 序言:老撾萬榮一對情侶失蹤熊户,失蹤者是張志新(化名)和其女友劉穎萍膛,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體嚷堡,經(jīng)...
    沈念sama閱讀 44,189評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡蝗罗,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,519評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了蝌戒。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片串塑。...
    茶點(diǎn)故事閱讀 38,654評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖北苟,靈堂內(nèi)的尸體忽然破棺而出桩匪,到底是詐尸還是另有隱情,我是刑警寧澤友鼻,帶...
    沈念sama閱讀 34,329評論 4 330
  • 正文 年R本政府宣布傻昙,位于F島的核電站闺骚,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏妆档。R本人自食惡果不足惜僻爽,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,940評論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望贾惦。 院中可真熱鬧胸梆,春花似錦、人聲如沸须板。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,762評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽习瑰。三九已至绪颖,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間杰刽,已是汗流浹背菠发。 一陣腳步聲響...
    開封第一講書人閱讀 31,993評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留贺嫂,地道東北人滓鸠。 一個月前我還...
    沈念sama閱讀 46,382評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像第喳,于是被迫代替她去往敵國和親糜俗。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,543評論 2 349

推薦閱讀更多精彩內(nèi)容