陳進川 廣東省粵東技師學院
Android平臺手機流量監測技術研究
陳進川 廣東省粵東技師學院
4G技術的發展及Android手機的普及,智能手機給消費者帶來樂趣的同時,也使得消費者手機上網流量激增,再加上居高不下的流量費用,上網產生的流量更加成為一個倍受爭議的話題。本文研究了一種動態跟蹤流量使用的技術。實時刷新各軟件的流量數據并告知用戶,進而達到流量使用監測的目的,最終以手機應用軟件的形式將其實現出來。
Android 手機流量 監測
隨著智能手機的飛速發展,手機的功能越來越強大。如今的智能手機操作系統主要有兩大陣營:Android(即安卓)和蘋果的IOS,其中,安卓的市場份額更是超過了80%,然而,手機病毒也成為了繼電腦病毒后的另一個令人煩惱的話題。目前手機病毒的破壞性主要有五大方面:遠程控制、惡意扣費、惡意傳播、隱私竊取和資費消耗。而令用戶大感頭疼的惡意扣費軟件。可以在使用者不知情的情況下連接網絡,偷偷發送數據或者下載惡意軟件,從而使用戶在不知不覺中產生大量的數據流量,產生高額的流量費用。因此,在安卓系統上對每一個軟件的流量使用情況進行分析就顯得尤為重要。
目前市面上雖然已經有了各種流量監測軟件,但這些軟件往往夾帶著各種廣告,有些甚至含有病毒,并且也不能隨心所欲地進行提醒設置,為了解決上述問題,也為了研究安卓手機的流量運作機理,為教學授課提供技術基礎,我開發了以下的小工具對安卓手機的數據流量進行監測,工具主要包括了流量獲取和流量刷新兩大模塊。
2.1 流量獲取模塊的實現方法
本模塊的實現需要解決兩個問題:一是如何獲知手機中擁有上網權限的應用程序列表,二是如何逐一地獲知這些程序的流量情況。
首先應先獲取擁有網絡訪問權限的程序列表,以便下一步根據列表來查詢其流量情況。該步驟實現起來不難,可由以下代碼來判斷:

接下來可以根據這些UID對其流量情況進行查詢。安卓系統對軟件的流量數據都是存放在目錄/proc/uid_stat/uid下的,而要獲取其流量情況,可以使用系統提供的一個類:TrafficStats,通過直接調用可以獲取相應的流量數據,可通過該類里的方法getUidRxBytes直接獲得。
2.2 數據刷新模塊的實現方法
在獲知了應用軟件的流量數據后,需要進一步獲知其流量速度,一個簡單的方法就是將當前獲得的應用軟件流量數據減去前一時刻獲得的應用軟件流量數據,得到前后兩個時刻的流量差值,再將這個差值除以兩個時刻的時間間隔,即可獲得其流量速度。
實現起來需要解決2個問題:
①如何對各個應用軟件的流量數據進行存取;
②如何每隔一定時間自動刷新流量數據。
對各軟件的數據流量進行存取,可以采用HashMap(哈希圖)的形式。

上述代碼中,getAPPwlll是一個自定義類,將流量獲取模塊封裝進去,用于執行流量數據獲取操作,方便后續調用。新創建的對象run在使用的時候應重寫run方法,并在其中添加需要定時執行的內容。
獲知流量速度,需要用當前時刻的流量數據減去前一時刻的流量數據再除以時間間隔,軟件一開啟時,則采用后一時刻的數據減去當前時刻的數據的方式來獲取軟件的流量速度數據。因此,須先獲得當前流量數據,再使用線程來自動每隔一定時間刷新數據。
為了檢驗本流量監測工具的實際性能,需從本工具的功能方面對其進行測試和評估。正常使用時測試結果如下。
從圖中可以看出,正常使用時,對于超出設定提醒值5KB時,本流量監測工具正常工作,能彈出框及時地提醒用戶。

隨著網絡流量越來越引起人們重視,為了防止流氓軟件的惡意消耗流量,對手機應用軟件流量的實時監控就顯得尤為重要。本文以安卓平臺的數據流量為例,闡述了實時監測手機中軟件流量使用情況的方法。然而本流量監測軟件也存在著一些不足,如界面未做過多修飾,這也是下一步工作的展望。
[1]劉淼.Android流量監控技術研究與實現.碩士論文.華中科技大學
[2]李俊.Android平臺下基干流量監測的安全軟件設計與實現.碩士論文.西南交通大學