亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于Android的手機(jī)流量監(jiān)測(cè)軟件的設(shè)計(jì)與實(shí)現(xiàn)

        2014-04-29 00:00:00牛志梅李建超

        摘 要:針對(duì)Android手機(jī)的流量問題,采用面向?qū)ο蟮乃枷朐O(shè)計(jì)與實(shí)現(xiàn)基于Android的手機(jī)流量監(jiān)測(cè)軟件。主要使用Java語言編寫,同時(shí)為了保持代碼的效率及阻礙反編譯,使用JNI機(jī)制調(diào)用本地so庫(kù),而so庫(kù)通過NDK使用特定的編譯器生成。系統(tǒng)能實(shí)時(shí)可視地監(jiān)測(cè)手機(jī)流量,同時(shí)分析出各個(gè)程序使用流量的情況,為用戶找出偷跑流量的后臺(tái)程序。便于用戶合理控制,避免不必要的損失。

        關(guān)鍵詞:Android;手機(jī);流量監(jiān)測(cè)

        中圖分類號(hào):TP311.52

        目前Android手機(jī)的市場(chǎng)占有率大,而Android手機(jī)用戶的一個(gè)困擾是手機(jī)應(yīng)用中“偷”流量問題,其中后臺(tái)服務(wù)聯(lián)網(wǎng)惡意上傳和下載是主要的方式。因此對(duì)手機(jī)流量進(jìn)行智能化可視化的監(jiān)測(cè)顯得日益重要。

        1 需求分析

        經(jīng)過分析,本軟件的設(shè)計(jì)除了完成核心功能模塊之外,同時(shí)還加載一些用戶可能經(jīng)常用到的信息,以便增加用戶黏性。

        軟件功能需求有實(shí)時(shí)監(jiān)測(cè)WIFI聯(lián)網(wǎng)及運(yùn)營(yíng)商蜂窩網(wǎng)絡(luò)、后臺(tái)監(jiān)視聯(lián)網(wǎng)數(shù)據(jù)、不長(zhǎng)駐后臺(tái)、提供多種可選通知方式的通知欄、用戶可進(jìn)行數(shù)據(jù)設(shè)置、提供直觀數(shù)字及線性圖報(bào)表顯示、顯示程序流量詳情、支持多語言。

        2 總體設(shè)計(jì)

        2.2 運(yùn)行流程。軟件重要部分有四個(gè),用戶界面、后臺(tái)服務(wù)、數(shù)據(jù)庫(kù)、通知欄。四個(gè)部分相互合作,相互提供服務(wù)及接口。下面詳細(xì)描述程序運(yùn)行流程。

        當(dāng)系統(tǒng)連接上網(wǎng)絡(luò)時(shí),系統(tǒng)向注冊(cè)了該事件的通知接收器推送網(wǎng)絡(luò)連接的通知,接收器經(jīng)過判斷,啟動(dòng)相關(guān)監(jiān)測(cè)服務(wù),該接收器只負(fù)責(zé)啟動(dòng)相應(yīng)服務(wù)。服務(wù)啟動(dòng)之后,由于需要根據(jù)網(wǎng)絡(luò)變化狀況進(jìn)行相應(yīng)的數(shù)據(jù)更新存儲(chǔ)和服務(wù)停止工作,所以也注冊(cè)相應(yīng)通知事件。此時(shí)從數(shù)據(jù)庫(kù)初始化數(shù)據(jù),通知欄初始化,判斷時(shí)間界限,并更新相關(guān)日期及流量信息。經(jīng)過以上數(shù)據(jù)初始化工作之后,程序開始啟動(dòng)循環(huán)任務(wù),利用本地共享庫(kù)獲取網(wǎng)絡(luò)信息數(shù)據(jù),并更新至數(shù)據(jù)庫(kù)和通知欄。

        當(dāng)網(wǎng)絡(luò)斷開的時(shí)候,服務(wù)內(nèi)部的接收器收到通知,并經(jīng)過判斷,關(guān)閉通知欄,停止接收通知事件,完成服務(wù)停止的數(shù)據(jù)存儲(chǔ)工作,停止服務(wù)。

        在Activity用戶界面方面,程序經(jīng)過用戶點(diǎn)擊,開始程序啟動(dòng)界面,從數(shù)據(jù)庫(kù)取出數(shù)據(jù),加載界面。用戶可設(shè)置流量,除了要存儲(chǔ)至數(shù)據(jù)庫(kù)外,還要發(fā)出自定義的推送通知消息,如果服務(wù)處于啟動(dòng)狀態(tài),就會(huì)從數(shù)據(jù)庫(kù)更新數(shù)據(jù)。

        2.3 開發(fā)環(huán)境。開發(fā)環(huán)境:WIN7;開發(fā)工具:3.7Eclispe+21.1.0ADT+NDK-r8e;測(cè)試硬件:HTC G14測(cè)試固件:Android 4.0.3。

        3 詳細(xì)設(shè)計(jì)與實(shí)現(xiàn)

        軟件設(shè)計(jì)包括UI界面設(shè)計(jì)、數(shù)據(jù)庫(kù)設(shè)計(jì)、監(jiān)測(cè)服務(wù)設(shè)計(jì)、特殊設(shè)計(jì)(代碼反編譯混淆、滑動(dòng)界面設(shè)計(jì)、多語言設(shè)置等)。其中監(jiān)測(cè)服務(wù)設(shè)計(jì)所占時(shí)間及精力較大。整個(gè)設(shè)計(jì)盡量作到易于修改,易于復(fù)用。這里重點(diǎn)介紹數(shù)據(jù)庫(kù)設(shè)計(jì)和監(jiān)測(cè)服務(wù)設(shè)計(jì)部分。

        3.1 數(shù)據(jù)庫(kù)設(shè)計(jì)。在軟件設(shè)計(jì)中,需要存儲(chǔ)的數(shù)據(jù)有程序列表對(duì)應(yīng)流量,移動(dòng)和Wifi每日流量等。由于這些數(shù)據(jù)更新頻率較快,統(tǒng)一儲(chǔ)存在SQLite數(shù)據(jù)庫(kù)表中。

        listnettraffic表記錄程序列表對(duì)應(yīng)流量。

        type_nettraffic表記錄移動(dòng)和wifi每日流量,還要存儲(chǔ)記錄日期、歷史流量、臨時(shí)流量、今日界限數(shù)據(jù)、通知欄通知方式等一系列數(shù)據(jù),這些參數(shù)都有mobile和wifi的區(qū)分。設(shè)計(jì)時(shí)將這些數(shù)據(jù)保存在一張表中,用字段day的值來區(qū)分。

        表結(jié)構(gòu)type_nettraffic(day,mobile,wifi)其中day:表示索引或日期,mobile和wifi表示數(shù)據(jù)字節(jié)數(shù)。Day的值取0,-1~-8則表示特殊含義。如:0表示本月總流量,-1本次前所用流量。Day為正數(shù)表示日期如本月第一天即為1。采用負(fù)索引號(hào)可避免與日期重疊。

        與數(shù)據(jù)服務(wù)相關(guān)類有程序底層實(shí)現(xiàn)數(shù)據(jù)庫(kù)的增刪查改的類MyProvider。對(duì)服務(wù)和程序界面提供數(shù)據(jù)服務(wù)的類Data,該類是位于數(shù)據(jù)庫(kù)增刪查改層次和數(shù)據(jù)應(yīng)用層次的中間層。

        3.2 監(jiān)測(cè)服務(wù)相關(guān)設(shè)計(jì)。本部分主要描述的是與后臺(tái)監(jiān)測(cè)服務(wù)相關(guān)的類及類之間關(guān)系,通過類細(xì)節(jié)的介紹,可以清楚知道程序的結(jié)構(gòu)及工作細(xì)節(jié)流程。

        3.2.1 JNI和NDK的使用。從Java1.1開始,Java Native Interface(JNI)標(biāo)準(zhǔn)成為Java平臺(tái)的一部分,它允許Java代碼和其他語言寫的代碼進(jìn)行交互。由于Java代碼效率、反編譯難度不如C文件編譯出來的本地庫(kù)文件,而在獲取網(wǎng)絡(luò)數(shù)據(jù)中,我們需要頻繁讀取系統(tǒng)中的數(shù)據(jù)文件,為了高效獲取系統(tǒng)數(shù)據(jù)信息我們使用Android平臺(tái)開發(fā)工具NDK編譯出本地庫(kù),然后通過JNI標(biāo)準(zhǔn)制定出Java本地類進(jìn)行相應(yīng)的調(diào)用即可讀取系統(tǒng)網(wǎng)絡(luò)數(shù)據(jù)。

        NetTraffic類是按照J(rèn)NI標(biāo)準(zhǔn)規(guī)定編寫的本地類,其下方法都是調(diào)用通過NDK編譯出來的本地庫(kù),調(diào)用本地方法的途徑來進(jìn)行數(shù)據(jù)的獲取的,而實(shí)際的工作是在CPP文件中完成。該類有10個(gè)方法名和CPP文件的方法名是相同的。NetTraffic類中調(diào)用的方法通過本地共享庫(kù),調(diào)用的是CPP文件中對(duì)應(yīng)方法。如該類中有g(shù)etMobileTxPackets方法,通過本地庫(kù),實(shí)際調(diào)用的是CPP文件中的同名方法。

        Android是以Linux為核心開發(fā)的軟件平臺(tái),Linux系統(tǒng)的原則之一是一切皆文件,其對(duì)網(wǎng)絡(luò)流量數(shù)據(jù)進(jìn)行統(tǒng)計(jì)和記錄,將相關(guān)數(shù)據(jù)寫到固定的相對(duì)應(yīng)的文件位置中。CPP文件中采用readNumber、tryBoth、readTotal三個(gè)方法讀取本地文件中的特征數(shù)值,并通過特定計(jì)算返回?cái)?shù)值。其它方法均調(diào)用此三個(gè)方法只是傳入不同參數(shù)。

        編寫出CPP文件之后,需要按照一定規(guī)則將其編譯成可供調(diào)用的so共享庫(kù)。在.mk文件中指定目標(biāo)模塊和目標(biāo)源文件,指定目標(biāo)庫(kù)的生成方式即可使用編譯工具生成so本地共享庫(kù)供調(diào)用。

        3.2.2 監(jiān)測(cè)服務(wù)設(shè)計(jì)。服務(wù)的啟動(dòng)部分由BootReceiver類負(fù)責(zé),該類繼承BroadcastReceiver廣播接收器。當(dāng)監(jiān)測(cè)到某種網(wǎng)絡(luò)連接開始活動(dòng)時(shí),該類即啟動(dòng)對(duì)應(yīng)的監(jiān)測(cè)服務(wù)MobileService或是WifiService,監(jiān)測(cè)服務(wù)類即實(shí)例化。

        MobileService類和WifeService做的工作,記錄的數(shù)據(jù),發(fā)出與接收的時(shí)間通知都是相同的,因此抽取出AbstractService類,使用繼承來達(dá)到代碼復(fù)用的效果。該類繼承于Service。采用Handler與Runnable配合實(shí)現(xiàn)程序的定時(shí)循環(huán)執(zhí)行

        同時(shí),根據(jù)屬性category(網(wǎng)絡(luò)類型的標(biāo)識(shí))的取值,從數(shù)據(jù)庫(kù)按照網(wǎng)絡(luò)類型取出對(duì)應(yīng)的ServiceData(描述服務(wù)監(jiān)測(cè)過程狀態(tài)的數(shù)據(jù)類型),并實(shí)例化通知欄。Broad類是與通知欄相關(guān)類。進(jìn)行服務(wù)的初始化。

        接下來實(shí)例化網(wǎng)絡(luò)事件接受器NetReceiver類,因?yàn)樵擃愂录袛噙壿嬢^為復(fù)雜,所以將其單獨(dú)抽離出來,而對(duì)應(yīng)的事件處理由接口NetStateChangeImpl處理,該接口有三個(gè)函數(shù),分別為網(wǎng)絡(luò)關(guān)閉時(shí)停止查詢?nèi)蝿?wù)停止服務(wù)、網(wǎng)絡(luò)開始連接時(shí):?jiǎn)?dòng)服務(wù)、設(shè)置被改變時(shí)更新數(shù)據(jù)更新通知欄。類NetReceiver中經(jīng)過特定目標(biāo)事件的過濾之后,就執(zhí)行AbstractService中注冊(cè)的方法,這樣就可以將程序復(fù)雜的判斷邏輯分離出來,達(dá)到代碼的層次化和清晰化。經(jīng)過以上工作之后,程序開始啟動(dòng)循環(huán)任務(wù)。

        4 設(shè)計(jì)結(jié)果

        經(jīng)過測(cè)試軟件能實(shí)現(xiàn)需求分析階段所述的全部功能,作到實(shí)時(shí)監(jiān)測(cè),直觀顯示。所以對(duì)于用戶是有極大幫助的。本軟件的特點(diǎn)是能根據(jù)網(wǎng)絡(luò)狀態(tài),啟動(dòng)或是停止后臺(tái)監(jiān)測(cè)服務(wù)程序,不長(zhǎng)駐后臺(tái),保持用戶手機(jī)的后臺(tái)進(jìn)程的干凈。

        5 結(jié)束語

        鑒于數(shù)據(jù)流量在智能設(shè)備中的重要性,開發(fā)一個(gè)檢測(cè)流量的軟件是有很大必要性的。本文介紹了基于Android的手機(jī)流量監(jiān)測(cè)軟件的設(shè)計(jì)與實(shí)現(xiàn)過程。對(duì)JNI和NDK技術(shù)在設(shè)計(jì)中的應(yīng)用以及監(jiān)測(cè)服務(wù)的實(shí)現(xiàn)進(jìn)行了較詳細(xì)地介紹。

        參考文獻(xiàn):

        [1]吳亞峰,蘇亞光.Android應(yīng)用案例開發(fā)大全[M].北京:人民郵電出版社,2011.

        [2]李寧.Android/OPhone開發(fā)完全講義[M].北京:水利水電出版社,2010.

        作者簡(jiǎn)介:牛志梅(1972-),女,河南唐河人,講師,工學(xué)碩士,研究方向:數(shù)據(jù)庫(kù)、軟件工程。

        作者單位:武漢工程大學(xué) 計(jì)算機(jī)科學(xué)與工程學(xué)院,武漢工程大學(xué)智能機(jī)器人湖北省重點(diǎn)實(shí)驗(yàn)室,武漢 430073;成都數(shù)字天宇網(wǎng)絡(luò)科技有限公司,成都 610000

        国语对白做受xxxxx在线| 99精品国产兔费观看久久| 日韩亚洲国产av自拍| 亚洲午夜精品国产一区二区三区 | 亚洲av日韩aⅴ无码电影| 欧美一区二区午夜福利在线yw| 波多吉野一区二区三区av| 久久精品国产一区二区涩涩| 精品亚亚洲成av人片在线观看| 国产在线精品观看一区二区三区 | 久久国产精品久久精品国产| 国产WW久久久久久久久久| 精品一区二区三区人妻久久| 日本女优久久精品观看| 久草手机视频在线观看| 草逼动态图视频免费观看网站| 国产精品人妻一区二区三区四| 日韩视频中文字幕精品偷拍| 久久国产精品-国产精品| 亚洲av无码一区二区三区系列| 精品无码一区二区三区爱欲九九| 亚洲天堂无码AV一二三四区| 人妻色中文字幕免费视频| 久久麻传媒亚洲av国产| 特级做a爰片毛片免费看| 明星性猛交ⅹxxx乱大交| 岛国精品一区二区三区| 成人特黄特色毛片免费看| 99久久婷婷国产精品综合网站| 青春草在线视频观看| 亚洲精品成人网站在线播放| 精品国产一区av天美传媒| 高中生粉嫩无套第一次| 久久九九有精品国产尤物| 亚洲一区二区三区在线观看| 在线看高清中文字幕一区| 色哟哟亚洲色精一区二区| 玩弄放荡人妻少妇系列视频| 天天插视频| 日韩一区中文字幕在线| 内射爆草少妇精品视频|