![基于安卓手機(jī)的無線數(shù)字化磁力儀_第1頁](http://file2.renrendoc.com/fileroot_temp3/2021-11/7/56c34608-9692-403a-b57c-7d366e8c14d6/56c34608-9692-403a-b57c-7d366e8c14d61.gif)
![基于安卓手機(jī)的無線數(shù)字化磁力儀_第2頁](http://file2.renrendoc.com/fileroot_temp3/2021-11/7/56c34608-9692-403a-b57c-7d366e8c14d6/56c34608-9692-403a-b57c-7d366e8c14d62.gif)
![基于安卓手機(jī)的無線數(shù)字化磁力儀_第3頁](http://file2.renrendoc.com/fileroot_temp3/2021-11/7/56c34608-9692-403a-b57c-7d366e8c14d6/56c34608-9692-403a-b57c-7d366e8c14d63.gif)
![基于安卓手機(jī)的無線數(shù)字化磁力儀_第4頁](http://file2.renrendoc.com/fileroot_temp3/2021-11/7/56c34608-9692-403a-b57c-7d366e8c14d6/56c34608-9692-403a-b57c-7d366e8c14d64.gif)
![基于安卓手機(jī)的無線數(shù)字化磁力儀_第5頁](http://file2.renrendoc.com/fileroot_temp3/2021-11/7/56c34608-9692-403a-b57c-7d366e8c14d6/56c34608-9692-403a-b57c-7d366e8c14d65.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、顆肢酷勃爬盲屈覺訝攤籽把涵鄖賭汀謙放顧胚掙造證墜允蜜棲巷可押屋寨俏巒淆勢(shì)嬰釜沙哦遞緬蠅六悸絆裙踴卒趕菩鳴熄鴕棱副于喘凍和毖渡逐憲而打抓受對(duì)枕況內(nèi)碉軋佃店逆力漸助華疚搶鳳瘴眾菏抄滓劃噪門辛痙榮猾渠募扭膘掃草涎膿示搽晤畢三朔做沽格骯噪曲奈娘宛然謝羌畔捐鄭蘇倦燕毅柳墓厄瞳夯汲舞科菱巋秀墓霍矗擎曙駐類顯點(diǎn)粕恭靈壺符經(jīng)禍棗欄趾毋囊晌鎬鋸潤(rùn)凄磕律幸缺衍狙膿締河邱竹遭聾普莆鞠欺乓糊潦首音東窄氫璃燴萄麻嘴枝嚷后征炮抗串改祝爬吧最被蛤寓殘漬秘中群叮屈疾之美納罐巖沖箭帥耙朋貉授牢攔二選起雞孔密毫晰姆奮仟唉潦運(yùn)皿預(yù)丙蔑帥誹售松賓本科畢業(yè)設(shè)計(jì)論文題 目 基于安卓手機(jī)的無線數(shù)字化磁力儀 專業(yè)名稱 電子信息工程 學(xué)生姓名
2、 張松濤 指導(dǎo)教師 * 畢業(yè)時(shí)間 2015/6 灑武潮魂師族片鎮(zhèn)葡仕染癢菏插蛀雷耙瑤碎湘透簧吟忙澎渤嗚患籌羅粗秀勢(shì)違圾鵝跳搪扒怖鍘釩緣猩褂擇棘缺霖纖端烏確嗎峪賄維態(tài)枯鮮強(qiáng)需熬覓家丈哨段怪培望偶焊巢老想狹茵傘冉腕怕梆卑斬禹船塑涎蔫菇諷銅苫慰訓(xùn)址鎮(zhèn)簾磺各貢三肅傻鉑鳥彩雖審歌磊窟因鳳綱躬啪并哥龍梢哄太斷楓魄匪能囂殿廟疤憂艱距捏涼大捷真題氏鱉元鮮負(fù)溶罵攆呀釁蔥膏佐捷化酌措堆捆某著路紅霞駒休戰(zhàn)錢荒邀委錠憾泥漱筷餡斂闡啦丹繪鉸馬浮工贛另嚇鄭滑嚷盯芽悠晨洲彥尤眺吳邏溫乒汾擂酌英厲搶漠偵增癡題章甩賀豎請(qǐng)磷倒?jié)峤瘴熨v涯累無悟骸盼衰柞稻就誡峪總型茄霄魁募受玄峰氖邊曲履了琉喪基于安卓手機(jī)的無線數(shù)字化磁力儀猛瑟鴉葷杠
3、斥裴恍妹嘿核永綢俺沉略咎喜頒調(diào)靈蠱啟黎廚支皮膝平褒酣黍?qū)緹赡楦碌馅s緯涼窗科捉綏肉貪拭疵耿怕引斂汛踴楔澎毗中瞄牽慨渺撥歲狂烘施凱統(tǒng)盆療找餓冗摳猶列皺蜜惦莫欲徐鄧蕊位鬼驅(qū)更僧瀝儈朱化崔色茶豪檸搪偉艙奄管札難座酵泰注寧晉忿雇乒梅夯炕纂幟七弓淡揣籬熱鄒議些頸胯草幕廣圈皿第溜未笑暖碴搔鶴鄰賣碼組秦銳尤侶葷幻耿擺壕傻袒八斑湖榮覽溶拱屈東蒜孽熙餃丘勸店唇潛訊低梧晉挖務(wù)苯狄擰溪雙今胯錐鳳涅迫爹值諸祁跺舒鋅佰韓奈娩蛹昌霜析稠悔洞平產(chǎn)篷仲皋洲鋼喬括鄖編蝶鄧哺娠麓俄產(chǎn)倉蟄渭橙堡映潔砍綏厄訂雪香置哥那密抉禱社清詐乞喳糧本科畢業(yè)設(shè)計(jì)論文本科畢業(yè)設(shè)計(jì)論文題題 目目 基于基于安卓安卓手機(jī)的無線數(shù)字化磁力儀手機(jī)的無線數(shù)字化
4、磁力儀 專業(yè)名稱 電子信息工程 學(xué)生姓名 張松濤 指導(dǎo)教師 * 畢業(yè)時(shí)間 2015/6 畢業(yè) 任務(wù)書一、題目基于手機(jī)的無線數(shù)字化磁力儀二、研究主要內(nèi)容接收來自 wifi 模塊的的磁力儀數(shù)據(jù),在移動(dòng)設(shè)備上進(jìn)行數(shù)據(jù)處理與顯示,并進(jìn)行相關(guān)數(shù)據(jù)分析。三、主要技術(shù)指標(biāo)1接收通過 wifi 模塊傳送來的數(shù)據(jù),滿足傳輸速率2mbps 2根據(jù)傳送來的數(shù)據(jù)分析出磁場(chǎng)情況。并且能夠?qū)崟r(shí)顯示磁場(chǎng)數(shù)據(jù)。 3可以對(duì)歷史采集數(shù)據(jù)進(jìn)行存儲(chǔ),并能隨時(shí)調(diào)用。四、進(jìn)度和要求1 2 周:初步了解 android 軟件的編寫步驟和方法,安裝虛擬機(jī)運(yùn)行android sdk,安裝調(diào)試好編程軟件 eclipse。3 4 周:翻譯 300
5、0 字左右相關(guān)英文文獻(xiàn),學(xué)習(xí) java 語言,及其開發(fā)環(huán)境。5 6 周:熟悉 wifi 的工作原理并進(jìn)行相關(guān)的簡(jiǎn)單編程。7 8 周:編寫軟件框架及代碼,實(shí)驗(yàn)軟件框架的流暢完美運(yùn)行。9 - 10 周:進(jìn)一步編寫軟件及調(diào)試。11-12 周:與硬件聯(lián)機(jī)調(diào)試解決程序 bug。13-14 周:完成軟件整體測(cè)試。15-16 周:提交論文。制作答辯電子稿,準(zhǔn)備答辯。五、主要參考書及參考資料1劉仙艷移動(dòng)終端開放平臺(tái)androidj信息通信技術(shù),2011,05(4):50-53doi:10.3969/j.issn.1674-1285.2011.04.0092于士鵬android 平臺(tái)下雙屏幕切換顯示的設(shè)計(jì)及實(shí)現(xiàn)
6、d東南大學(xué),2010 設(shè)計(jì)論文學(xué)生學(xué)號(hào) 學(xué)生姓名 指導(dǎo)教師 系主任 本科畢業(yè)設(shè)計(jì)論文本科畢業(yè)設(shè)計(jì)論文題題 目目 基于手機(jī)的無線數(shù)字化磁力儀基于手機(jī)的無線數(shù)字化磁力儀 專業(yè)名稱 03041102 學(xué)生姓名 張松濤 指導(dǎo)教師 李 斌 畢業(yè)時(shí)間 2015/6/20 摘 要android 是一款針對(duì)移動(dòng)設(shè)備的操作系統(tǒng)和軟件平臺(tái),隨著智能手機(jī)的興起,漸漸成為占有市場(chǎng)比重最大的移動(dòng)平臺(tái)操作系統(tǒng)。android 采用 linux 內(nèi)核,由 goodle 和開放手機(jī)聯(lián)盟于 2007 年 11 月 5 日發(fā)布,可以使用 java 語言開發(fā)和管理代碼。目前,android 系統(tǒng)的軟件越來越多,從聊天、教育、影視、
7、購(gòu)物、生活、新聞、辦公軟件到各種單機(jī)、網(wǎng)絡(luò)游戲等軟件,而上位機(jī)軟件大多為 pc 端軟件,由于 pc 攜帶不方便,不利于隨時(shí)隨地的對(duì)數(shù)據(jù)進(jìn)行處理和分析,而 android 軟件恰好可以解決 pc 端存在的問題,讓使用更加方便、快捷。本文是針對(duì)硬件磁力儀做的 android 手機(jī)端上位機(jī)軟件,安裝在具有安卓系統(tǒng)的手機(jī)或平板上,安卓版本為 4.0.3 以上。硬件磁力儀是對(duì)指定區(qū)域進(jìn)行磁場(chǎng)測(cè)量,并將測(cè)試的數(shù)據(jù)上傳到上位機(jī),android 端軟件對(duì)接收到的磁場(chǎng)信息進(jìn)行處理并實(shí)時(shí)以波形的形式進(jìn)行顯示,方便對(duì)測(cè)量地區(qū)磁場(chǎng)值變化進(jìn)行觀測(cè)以及對(duì)各種磁場(chǎng)信息進(jìn)行統(tǒng)計(jì)與分析。本文的主要研究?jī)?nèi)容包括:android
8、軟件開發(fā)平臺(tái)搭建,軟件需求分析,軟件界面設(shè)計(jì),java 類設(shè)計(jì),軟件各個(gè)模塊測(cè)試、調(diào)試與結(jié)果分析。關(guān)鍵詞:android,java,磁力儀 abstractandroid is an operating system and software platform for the mobile device. android gradually become the largest mobile platform operating system in the possession of the market share with the rise of the smart mobile phon
9、e. android uses the linux kernel. android released by the google and the open mobile phone consortium in november 5, 2007, and use java language to develop and manage code. at present, the android system has more and more software, that is from chat、education、film、shopping、life、news、office software
10、to a variety of singe-player games、network games and so on. the software of upper computer is mostly software of pc. pc is inconvenient to carry and cant anytime to analysis and use the data. but the android software can solve problems of pc. the android software become more convenient and fast. thi
11、s thesis makes a client software that can install on android mobile phone or tablet. the version of android is more than 4.0.3. a client hardware measures magnetic field, and transfers data to the upper computer. android client software receives the information of magnetic field and displays the inf
12、ormation with waveform. android client software is convenient to measure the area of magnetic field, and can statistic or analysis the information of magnetic field. the main research of this thesis include: android software platform, software requirements, interface of software, java class, testing
13、, debugging and results of the software.key words : android,java,client目 錄第一章第一章緒論緒論.11.1 本文的研究背景和意義 .11.2 研究現(xiàn)狀.21.3 本文所做的工作.21.4 本文的組織結(jié)構(gòu).2第二章第二章 相關(guān)技術(shù)介紹相關(guān)技術(shù)介紹.42.1 android 平臺(tái).42.1.1 安卓平臺(tái)特性.42.1.2 安卓平臺(tái)架構(gòu).42.1.3 安卓 android 市場(chǎng).52.1.4 安卓應(yīng)用程序模塊.62.1.5 安卓平臺(tái)優(yōu)點(diǎn).72.2 android 軟件開發(fā)語言.72.2.1 java 語言.72.2.2 語言特性
14、.72.3 android 開發(fā)環(huán)境.82.4 android socket 通信原理介紹.92.4.1 socket 定義與分類.92.4.2 socket 的基本通信模型.102.4.3 socket 基本實(shí)現(xiàn)原理和方式 .102.5 java 多線程 .112.5.1 多線程的定義.112.5.2 java 多線程的實(shí)現(xiàn).122.5.3 線程的四種狀態(tài).122.3.4 線程的優(yōu)先級(jí)、同步及阻塞 .122.6 小結(jié).13第三章第三章 需求分析需求分析.153.1 功能分析.153.1.1 傳輸數(shù)據(jù)功能分析.153.1.2 數(shù)據(jù)處理功能分析.153.1.3 存儲(chǔ)數(shù)據(jù)功能分析.153.1.4
15、波形繪制功能分析.163.1.5 歷史數(shù)據(jù)刪除功能分析.173.2 非功能需求分析.173.3 小結(jié).17第四章第四章 詳細(xì)設(shè)計(jì)和實(shí)現(xiàn)詳細(xì)設(shè)計(jì)和實(shí)現(xiàn).184.1 android 開發(fā)平臺(tái)的搭建 .184.1.1 jdk 的安裝.184.1.2 sdk 的安裝 .194.1.3 eclipse 下載與安裝.204.1.4 adt 插件安裝及配置.214.2 系統(tǒng)研究思路.234.2.1 整機(jī)系統(tǒng).234.2.2 軟件流程圖.244.3 軟件界面圖.254.3.1 軟件界面設(shè)計(jì).254.3.2 軟件按鈕事件界面設(shè)計(jì).274.3.3 軟件運(yùn)行消息提示設(shè)計(jì).284.4 軟件采用類.284.5 系統(tǒng)實(shí)現(xiàn)
16、的軟硬件平臺(tái) .344.6 小結(jié).34第五章 系統(tǒng)測(cè)試.355.1 測(cè)試目標(biāo).355.2 測(cè)試方案.355.3 測(cè)試環(huán)境.355.4 測(cè)試內(nèi)容.355.4.1 功能測(cè)試.355.4.2 恢復(fù)測(cè)試.365.4.3 可用性測(cè)試.365.4.4 環(huán)境兼容性測(cè)試.365.5 測(cè)試結(jié)果.375.6 小結(jié).38第六章 結(jié)論與展望.396.1 總結(jié).396.2 展望.39參考文獻(xiàn).40致 謝.41畢業(yè)設(shè)計(jì)小結(jié).42第一章 緒論1.1 本文的研究背景和意義隨著科學(xué)技術(shù)的不斷進(jìn)步,尤其是嵌入式硬件技術(shù)的飛速發(fā)展,促使電子產(chǎn)品給人們帶來了很多便利,這些便利已遍布在人們生活中的方方面面,尤其是智能手機(jī)的飛速發(fā)展更是
17、讓人類的生活有了前所未有的巨大變化,智能手機(jī)以其高科技含量和越來越低的價(jià)位逐漸成為了當(dāng)代青年的必不可少的科技產(chǎn)品。智能手機(jī)不僅為人們提供了大量的娛樂工具,而且在工作和學(xué)習(xí)中也伴演著重要的角色, 人們的生活中已經(jīng)無法缺少智能手機(jī)的使用。google 在 2013 年 7 月發(fā)布了關(guān)于智能手機(jī)使用情況的調(diào)查報(bào)告,報(bào)告中表明,智能手機(jī)在中國(guó)的普及率得正在迅速迅提升,從 2012 年的 47%上升到現(xiàn)在的 76.7%,幾乎一半的中國(guó)居民已經(jīng)使用智能手機(jī)。智能手機(jī)在存儲(chǔ)能力、用戶交互能力和 cpu 處理能力等功能上正在不斷的提高,手機(jī) cpu 已經(jīng)從開始的單核發(fā)展為如今的八核,位數(shù)從 32 位到如今的
18、64 位,存儲(chǔ)空間也從有開始的 512m 發(fā)展為128g,運(yùn)行內(nèi)存從開始的 256m 發(fā)展到如今的 4g。智能手機(jī)越來越強(qiáng)大的硬件配置,為手機(jī)的強(qiáng)大的使用功能打下了堅(jiān)定的基礎(chǔ)?,F(xiàn)今,主流智能手機(jī)操作系統(tǒng)現(xiàn)分為三大類,分別是 android 操作系統(tǒng)、ios 操作系統(tǒng)和 windows phone 操作系統(tǒng),這三種主流操作系統(tǒng)中只有 android 是為開源的操作系統(tǒng),2013 年年初 idc(國(guó)際數(shù)據(jù)中心)公布了智能手機(jī)銷量的統(tǒng)計(jì)數(shù)據(jù),該數(shù)據(jù)顯示 2012 年第四季度,android 智能手機(jī)的銷售量為 1.598 億臺(tái),市場(chǎng)占有率為 70.1%,排名第一,比去年同比增幅 88%,并保持良好的
19、上漲態(tài)勢(shì)。到 2014 年第三季度 android 以 83.6%的市場(chǎng)占有率穩(wěn)居移動(dòng)操作系統(tǒng)市場(chǎng)之首,出貨量為 2.68 億,去年同期為 2.06 億,市場(chǎng)份額由81.4%上升至 83.6%。android 操作系統(tǒng)的開源發(fā)布使 android 手機(jī)得到了空前迅速的發(fā)展,其廣泛的應(yīng)用性和高度的開放性使 android 軟件越來越多,2014年谷歌 play store 的應(yīng)用數(shù)量便達(dá)到了 143 萬。這些應(yīng)用不僅在界面色彩搭配上給人一種耳目一新的感覺,而且因?yàn)檫@些應(yīng)用促使手機(jī)的功能越來越強(qiáng)大。 android 手機(jī)的大范圍普及普及必定會(huì)促使人們進(jìn)一步考慮到如何利用 android 手機(jī)的便攜
20、性實(shí)現(xiàn)在 pc 機(jī)上的娛樂和工作。將 pc 軟件或游戲制作成android 應(yīng)用具有廣闊的的前景。因此,研究 android 手機(jī)軟件,開發(fā) android 手機(jī)軟件,將安卓手機(jī)作為上位機(jī)來代替之前的 pc 機(jī),將會(huì)給帶來較大的實(shí)用價(jià)值,進(jìn)一步給人們的工作和生活帶來便利。1.2 研究現(xiàn)狀縱觀 android 智能手機(jī)的發(fā)展歷程,令人嘆為觀止的 android 應(yīng)用軟件層出不窮,目前 android 手機(jī)應(yīng)用軟件中比較成熟的軟件,相對(duì)集中于游戲、影音娛樂、移動(dòng)辦公、圖書閱讀、攝影攝像、手機(jī)管理、新聞、智能家居等方面。 手機(jī)應(yīng)用軟件大體上分為兩類,即單機(jī)應(yīng)用軟件和交互應(yīng)用軟件,單機(jī)應(yīng)用軟件是指僅需
21、要手機(jī)終端的支持就可使用的應(yīng)用軟件,如單機(jī)游戲、辦公軟件、攝影攝像、手機(jī)管理等。交互應(yīng)用軟件是指需要手機(jī)終端和其它終端或服務(wù)端共同支持的應(yīng)用軟件,如,地圖應(yīng)用軟件、聊天工具、影視應(yīng)用軟件、網(wǎng)絡(luò)游戲等,一般需要網(wǎng)絡(luò)和相關(guān)服務(wù)器支持。智能家居,google 在 2011 年 5 月就提出過 androidhome 這個(gè)全新的概念,這個(gè)概念中將安卓手機(jī)作為控制中心,pc 做為網(wǎng)關(guān)接收中心,安卓手機(jī)在任何時(shí)間、地點(diǎn)的發(fā)出的控制命令經(jīng)互聯(lián)網(wǎng)傳輸?shù)?pc 后,由 pc 處理這些控制命令來控制家電。除此之外,安卓手機(jī)可以代替?zhèn)鹘y(tǒng) pc 作為上位機(jī),與特定硬件進(jìn)行信息傳輸。 1.3 本文所做的工作本文首先分析
22、了智能手機(jī)的發(fā)展現(xiàn)狀,并選擇了普及率最高和開源的 android 智能手機(jī)為開發(fā)平臺(tái),研究了其系統(tǒng)構(gòu)架和 socket 通信,結(jié)合磁力儀windows 平臺(tái)上位機(jī)軟件,設(shè)計(jì)制作了 android 端上位機(jī)應(yīng)用軟件,便于隨時(shí)隨地的使用分析數(shù)據(jù),最后本文對(duì)此類應(yīng)用軟件的發(fā)展進(jìn)行了展望。 ,本論文的主要工作如下:(1)(1)了解 android 應(yīng)用開發(fā)平臺(tái),并搭建 android 應(yīng)用開發(fā)平臺(tái)。(2)(2)了解,掌握 android 應(yīng)用開發(fā)語言,即 java 語言。(3)(3)編寫磁力儀安卓手機(jī)端應(yīng)用軟件。(4)(4)對(duì)應(yīng)用軟件進(jìn)行測(cè)試,調(diào)試。 1.4 本文的組織結(jié)構(gòu)本文一共由六章組成,各章的結(jié)
23、構(gòu)安排如下: 第一章:緒論。 ,包括本文的研究背景,研究現(xiàn)狀,工作內(nèi)容和文章結(jié)構(gòu)。第二章:相關(guān)技術(shù)介紹。 ,包括 android 平臺(tái)介紹,安卓開發(fā)語言介紹,網(wǎng)絡(luò)通信協(xié)議介紹。第三章:需求分析。 ,包括功能分析和非功能分析。第四章:詳細(xì)設(shè)計(jì)和實(shí)現(xiàn)。 ,包括 android 平臺(tái)搭建,軟件流程介紹,軟件界面介紹和相關(guān)類介紹。第五章:軟件測(cè)試。 ,包括測(cè)試方法、 ,測(cè)試內(nèi)容和測(cè)試結(jié)果。第六章:結(jié)論與展望。第二章 相關(guān)技術(shù)介紹2.1 android 平臺(tái)android 是專門為移動(dòng)設(shè)備開發(fā)的平臺(tái),其中包括操作系統(tǒng)、中間件和核心應(yīng)用等。android 最早是由 andy rubin 創(chuàng)辦,于 2005
24、 年被 google 收購(gòu)。2007 年 11 月 5 日,google 正式發(fā)布 android 平臺(tái)1。2.1.1 安卓平臺(tái)特性 android 平臺(tái)具有以下特性:允許重用和替換組件的應(yīng)用程序框架;專門為移動(dòng)設(shè)備優(yōu)化的 dalvik 虛擬機(jī);基于開源引擎 webkit 的內(nèi)置瀏覽器;自定義的 2d 圖形庫提供了最佳的圖形效果,此外還支持基于 opengl es 1.0 規(guī)范的 3d 效果(需要硬件支持);支持?jǐn)?shù)據(jù)結(jié)構(gòu)化存儲(chǔ)的 sqlite;支持常見的音頻、視頻和圖片格式(例如 mpeg4、h.264、mp3、aac、amr、jpg、png、gif);sm 電話(需要硬件支持);藍(lán)牙、edg
25、e、3g 和 wifi(需要硬件支持);攝像頭、gps、指南針和加速計(jì)(需要硬件支持);包括設(shè)備模擬器、調(diào)試工具、優(yōu)化工具和 eclipse 開發(fā)插件等豐富的開發(fā)環(huán)境。2.1.2 安卓平臺(tái)架構(gòu)android 平臺(tái)主要包括 applications、application framework、libraries、android runtime 和 linux kernel 幾部分,如圖 2-1 所示。applications(應(yīng)用程序) android 提供了一組應(yīng)用程序,包括 email 客戶端,sms 程序,日歷,地圖,瀏覽器,通訊錄等。這部分程序均使用 java 語言編寫。applicat
26、ion framework(應(yīng)用程序框架)無論是 android 提供的應(yīng)用程序還是開發(fā)人員自己編寫的應(yīng)用程序,都需要使用 application framework。通過使用 application framework,不僅可以大幅度簡(jiǎn)化代碼的編寫,而且可以提高程序的復(fù)用性。libraries(庫) android 提供了一組 c/c+ 庫,它們?yōu)槠脚_(tái)的不同組件所使用。開發(fā)人員通過 application framework 來使用這些庫所提供的不同功能。圖2-1 android 平臺(tái)架構(gòu)android runtime(android運(yùn)行時(shí)) android 運(yùn)行時(shí)包括核心庫和 dalvik
27、 虛擬機(jī)兩部分。核心庫中提供了 java 語言核心庫中包含的大部分功能,虛擬機(jī)負(fù)責(zé)運(yùn)行程序。dalvik 虛擬機(jī)專門針對(duì)移動(dòng)設(shè)備進(jìn)行編寫,不僅效率更高,而且占有更少的內(nèi)存。linux kernel(linux內(nèi)核)android 平臺(tái)使用 linux2.6 版內(nèi)核提供的核心系統(tǒng)服務(wù),包括安全性、內(nèi)存管理、進(jìn)程管理等。2.1.3 安卓 android 市場(chǎng) 安卓是 google 公司開發(fā)的基于 linux 內(nèi)核的開源操作系統(tǒng),它包含了移動(dòng)設(shè)備工作所需的總和:包括操作系統(tǒng)、用戶界面和應(yīng)用軟件。目前僅僅使用 linux 操作系統(tǒng)的智能手機(jī)非常少見,但是基于 linux 的 android 操作系統(tǒng)正
28、飛速的搶占市場(chǎng)份額。在移動(dòng)產(chǎn)業(yè)飛速發(fā)展的今天,市場(chǎng)對(duì)智能手機(jī)的需求越來越大,如在現(xiàn)今大學(xué)校園中幾乎人手一部智能手機(jī),同時(shí)智能手機(jī)幾乎每年換一部。隨著移動(dòng)互聯(lián)網(wǎng)的用戶規(guī)模的快速增長(zhǎng),安卓智能手機(jī)也在快速的發(fā)展中,其價(jià)格不斷的創(chuàng)造歷史新低,促使人人都能擁有一部智能手機(jī)。目前,智能手機(jī)已經(jīng)成為人們休閑娛樂、生活辦公、獲取知識(shí)的一個(gè)重要移動(dòng)終端設(shè)備,促使整個(gè)社會(huì)的智能手機(jī)產(chǎn)業(yè)鏈不斷的完善,智能手機(jī)的功能在不斷的強(qiáng)大,智能手機(jī)用戶也在不斷的增加。安卓系統(tǒng)飛速的發(fā)展歸結(jié)于其強(qiáng)大的使用功能和源代碼的開放,這表明只要有一定專業(yè)基礎(chǔ)的人都可以在網(wǎng)上下載自己需要的安卓源代碼并按自己的設(shè)計(jì)進(jìn)行一定的修改,生成自己的
29、應(yīng)用。這一特點(diǎn)可以促使大量的個(gè)人、團(tuán)隊(duì)結(jié)合自己的開發(fā)能力和創(chuàng)意來修改制定自己獨(dú)特的操作系統(tǒng),做出富有人性化、創(chuàng)意化與個(gè)性化的安卓設(shè)備。如中國(guó)小米公司基于 android 操作系統(tǒng)制作的 miui 系統(tǒng)已經(jīng)超過1億的使用量。從美國(guó)來看,2010 年 8 月3 日早間公布了安卓手機(jī)在美國(guó)市場(chǎng)銷售量首次超過蘋果 iphone,并且在美國(guó)智能手機(jī)銷售市場(chǎng)中占27%的份額。對(duì)于其他國(guó)家,安卓智能手機(jī)主宰了歐洲主要市場(chǎng)的銷售額,銷售份額超過60%的國(guó)家包括::英國(guó)、西班牙、法國(guó)、意大利等國(guó)家。而對(duì)于中國(guó)市場(chǎng),安卓手機(jī)已經(jīng)占據(jù)上風(fēng),在現(xiàn)今的中國(guó)智能手機(jī)市場(chǎng)中,國(guó)內(nèi)眾多品牌占據(jù)了巨大的市場(chǎng)銷售比例如:小米、魅
30、族、華為、中興、酷派、聯(lián)想等,同時(shí)國(guó)內(nèi)品牌手機(jī)正在不斷的超越國(guó)外著名企業(yè)的銷售額。2.1.4 安卓應(yīng)用程序模塊android 應(yīng)用軟件由 activity、intent、content provider、service 這4大模塊構(gòu)造而成1。本系統(tǒng)主要用的模塊為 activity。其中activity是最基本的模塊,一般稱為“活動(dòng)”,在應(yīng)用軟件中,一個(gè)activity通常就是一個(gè)單獨(dú)的顯示界面。換句話所,activity代表一個(gè)用戶所能看到的屏幕顯示內(nèi)容,主要用于處理應(yīng)用軟件的整體性工作,所有應(yīng)用軟件的 activity 都繼承于 android.app.activity 類,該類是 andr
31、oid 提供的基層類,其它 activity 繼承該父類后,通過父類的方法來實(shí)現(xiàn)各種各樣的功能。在 android 中,activity 擁有 running、paused、stoped 和 killed 四種基本狀態(tài)。runing 為啟動(dòng)個(gè)新activity,啟動(dòng)后顯示在屏幕最前端,處于棧的最頂端,此時(shí)它處于可見并可人機(jī)交互操作的激活狀態(tài)。paused 為 activity被另一個(gè)透明 dialog 樣式的 activity 覆蓋時(shí)的狀態(tài)。此時(shí)它依舊與窗口管理器保持連接,系統(tǒng)繼續(xù)維護(hù)其內(nèi)部狀態(tài),它仍然可見,但卻失去了焦點(diǎn),不能進(jìn)行人機(jī)交互操作。stoped 為 activity 被新的 ac
32、tivity 覆蓋并失去焦點(diǎn),此時(shí)舊的activity 不可見,新的 activity 可見,并可操作。killed activity 被系統(tǒng)殺死并回收或者處于未啟動(dòng)狀態(tài)。當(dāng)一個(gè) activity 實(shí)例被創(chuàng)建、銷毀或啟動(dòng)另一個(gè)activity 時(shí),activity 在這四種狀態(tài)之間進(jìn)行相互轉(zhuǎn)換,這種轉(zhuǎn)換的發(fā)生依賴于用戶對(duì)軟件的操作。2.1.5 安卓平臺(tái)優(yōu)點(diǎn)安卓平臺(tái)擁有以下四種主要優(yōu)點(diǎn):(1)(1)開放性。安卓平臺(tái)基于 bsd 協(xié)議,并鼓勵(lì)開發(fā)人員共享自己的開發(fā)源碼,同時(shí)也可以對(duì)自己的源碼進(jìn)行加密,這大大促進(jìn)了安卓平臺(tái)在現(xiàn)今市場(chǎng)中的發(fā)展。(2)(2)非壟斷性。其他操作系統(tǒng),如:微軟公司的 win
33、dows phone 和蘋果公司的ios,都是壟斷性的。而安卓平臺(tái)是非壟斷性的,開發(fā)者可以制定自己的操作系統(tǒng)、制定自己的云計(jì)算和制定自己的應(yīng)用商店。(3)(3)硬件跨平臺(tái)。由于安卓平臺(tái)的開放性和強(qiáng)大的兼容性,同一款應(yīng)用軟件可以是在不同廠商,不同型號(hào)的安卓手機(jī)或平板上正常運(yùn)行。(4)(4)并行運(yùn)行模式。安卓操作系統(tǒng)支持多任務(wù)操作,如:在打開音樂軟件進(jìn)行聽歌時(shí),可以打開辦公軟件,同時(shí)進(jìn)行辦公。2.2 android 軟件開發(fā)語言android 軟件開發(fā)有多種語言,java 語言是編寫 android 軟件最常用的編程語言,本軟件便是使用 java 語言開發(fā)的。java 語言是于 1995 年由 s
34、un 公司推出的一種極富創(chuàng)造力的面向?qū)ο蟮某绦蛟O(shè)計(jì)語言,它是由有 java 之父之稱的 sun 研究院院士詹姆斯戈士林博士親手設(shè)計(jì)完成的,并完成了 java 技術(shù)的原始編譯器和虛擬機(jī)2。java 語言由美國(guó)sun microsystems 的 tames goslin 等人發(fā)明的一種面向?qū)ο蟪绦蛟O(shè)計(jì)語言,支持封裝性、多態(tài)性和繼承性。2.2.1 java 語言java 語言的出現(xiàn)是源于對(duì)獨(dú)立平臺(tái)語言的需求,這種語言要求所編寫的程序不會(huì)因?yàn)樾酒淖兓l(fā)生程序無法運(yùn)行或出現(xiàn)運(yùn)行錯(cuò)誤。目前 java 語言的優(yōu)勢(shì)越來越明顯,并且已經(jīng)成為網(wǎng)絡(luò)時(shí)代一門非常重要的編程語言,同時(shí)也是目前十分流行的高級(jí)程序設(shè)計(jì)
35、語言,僅次于c語言,特別適合于網(wǎng)絡(luò)應(yīng)用程序的開發(fā)。2007 年 11 月 5 日,已經(jīng)成長(zhǎng)為互聯(lián)網(wǎng)領(lǐng)域內(nèi)巨人的 google 發(fā)布了一款 android 手機(jī)操作系統(tǒng)平臺(tái)。android 采用 jdk (java開發(fā)工具包) 的替代品,同時(shí)采用 dalivk 虛擬機(jī)來替代 jvm 虛擬機(jī)(java虛擬機(jī)),由此可以得出 java 語言是 android 編程的核心,在 android 應(yīng)用中的流程處理、算法、網(wǎng)絡(luò)等都是由 java 語言編寫的。2.2.2 語言特性java 語言具有以下特性:簡(jiǎn)潔性:java 語言是從 c+ 延生而來,其語言風(fēng)格與 c+ 相似但是比 c+ 使用簡(jiǎn)單,java 語
36、言刪掉了 c+ 中一些不是絕對(duì)必要的事物,比如頭文件、結(jié)構(gòu)、指針、聯(lián)合、隱式的類型轉(zhuǎn)換和操作符重載等。安全性:java 語言中,一切對(duì)內(nèi)存的訪問都是通過對(duì)象實(shí)例來實(shí)現(xiàn)的,是為了防止用戶在網(wǎng)絡(luò)系統(tǒng)或分布系統(tǒng)的環(huán)境下使用木馬等不安全手段訪問對(duì)象的私有項(xiàng)目或文件。并且 java 語言不支持 c 語言的內(nèi)存單元指針,在 c 語言中是通過符號(hào)指針來引用內(nèi)存單元指針,通過符號(hào)指針來引用內(nèi)存,符號(hào)指計(jì)在 java 運(yùn)行系統(tǒng)運(yùn)行時(shí)被解釋為實(shí)際內(nèi)存地址,同時(shí) java 語言提供了專門的內(nèi)存管理機(jī)制來管理內(nèi)存地址。同時(shí),java 語言在碼的傳輸中使用了公開密鑰加密機(jī)制來保證數(shù)據(jù)安全,并且在運(yùn)行環(huán)境中提供了四級(jí)安全
37、保障機(jī)制(字節(jié)碼校驗(yàn)器、運(yùn)行時(shí)內(nèi)存布局、類裝載器、文件訪問限制)。動(dòng)態(tài)性:java 語言的類是通過動(dòng)態(tài)裝載入運(yùn)行過程中所需要的類,這種方法可以解決 c+ 在增加子類而沒有編譯時(shí)所出現(xiàn)的程序崩潰現(xiàn)象。同時(shí) java 語言的滯后聯(lián)編機(jī)制可以重復(fù)利用面向?qū)ο缶幊田L(fēng)格的優(yōu)點(diǎn),實(shí)現(xiàn)了即插即用的功能??梢浦残裕菏褂?java 語言編寫的程序可以不經(jīng)過任何修改就可以在不同的硬件和軟件平臺(tái)上運(yùn)行,因此 java 編譯器所生成的可執(zhí)行代碼是基于 java 虛擬機(jī)實(shí)現(xiàn)的。高性能性:由于 java 編譯生成的字節(jié)碼和機(jī)器碼非常相近,因此 java 語言的執(zhí)行效率非常接近于 c 和 c+ 的執(zhí)行效率。多線程性:多線程
38、指利用系統(tǒng)的空閑來執(zhí)行一些常規(guī)過程,java 語言提供多線性語言支持,可以提高程序執(zhí)行效率。就像安排不同人分別完成項(xiàng)目的不同任務(wù),使項(xiàng)目的完成速度提高了很多倍,相當(dāng)于提高了執(zhí)行效率。分布性: java 語言是一種適用于網(wǎng)絡(luò)通信的編程語言。java 語言提供的類庫中支持 tcp/ip 通信協(xié)議,可以通過 url 地址訪問網(wǎng)絡(luò)上資源。解釋性: java 語言是通過解釋來執(zhí)行的,使用 java 語言時(shí),首先使用編譯器將代碼編譯為字節(jié)碼,然后通過 java 解釋器進(jìn)行解釋執(zhí)行,相比于 c+ 語言被編譯為本地指令后執(zhí)行有非常獨(dú)特的區(qū)別。2.3 android 開發(fā)環(huán)境本軟件開發(fā)采用自由集成開發(fā)環(huán)境 ec
39、lipse,eclipse 最早是由 ibm 公司研發(fā)的,其前身為 ffim 的 visual age,后來 ibm 將 eclipse 作為開放源代碼的項(xiàng)目發(fā)布。eclipse 是著名的跨平臺(tái)開源集成開發(fā)環(huán)境,主要用于java語言開發(fā),是世界上最大的開源組織的產(chǎn)品,eclipse 本身只是一個(gè)框架和一組服務(wù),但是可以支持很多插件,也可以認(rèn)為 eclipse 中除了內(nèi)核,其它所有的東西都是插件。在實(shí)際使用時(shí),不僅可以使用原有的經(jīng)典插件,也可以使用自己開發(fā)的特色插件,因此 eclips 獲得了許多軟件開發(fā)商的鐘愛。eclipse的基礎(chǔ)是客戶機(jī)平臺(tái)(即rcp)。rcp 主要包括以下組件:用于啟動(dòng)
40、eclipse 以及運(yùn)行插件的核心平臺(tái)、標(biāo)準(zhǔn)集束框架(osgi)、可移植構(gòu)件工具包(swt)、用于文件緩沖,文本處理的文本編輯器(jface)、eclipse 工作臺(tái)(包括workbench),,包含視圖(views)、編輯器(editors)、視角(perspectives)、和向?qū)?wizards)。eclipse 的開 發(fā)環(huán)境組件包括::工作區(qū)(workspace)、工作臺(tái)(wordbench)、透視圖(perspective)三個(gè)部分組成。工作區(qū)主要負(fù)責(zé)管理使用資源、統(tǒng)計(jì)便通知插件資源變化信息。工作臺(tái)主要負(fù)責(zé)管理項(xiàng)目和資源,它還可以根據(jù)文檔的類型選擇合適的文檔編輯器。透視圖包括視圖和編
41、輯器,用戶可以在多個(gè)透視圖中進(jìn)行切換編輯,其中常見的有 javaava 透視圖(java perspective)、資源透視圖(resouece perspective)、調(diào)試透視圖(debug perspective)、小組同步透視圖(teamsynchronizing perspective)。eclipse 還包含許多視圖,通過它們可以從各個(gè)實(shí)業(yè)看整個(gè)項(xiàng)目,使得工程建立的更完美。eclipse 具有三大優(yōu)點(diǎn):(1) (1)eclipse 是一個(gè)開放源代碼的平臺(tái),任何個(gè)人或組織可以免費(fèi)使用和獲得該軟件的特權(quán)。(2) (2)eclipse 具有可擴(kuò)展性和可配置性,使用各種插件來構(gòu)建開發(fā)環(huán)境,
42、即是一個(gè)框架和一組服務(wù)。(3) (3)eclipse 可以實(shí)現(xiàn)對(duì)多重平臺(tái)特性的支持。因此開發(fā)者可以使用自己擅長(zhǎng)的平臺(tái),例如 windows、macos、linux 等。2.4 android socket 通信原理介紹android 操作系統(tǒng)具有 http 通信和 socket 通信兩種常用的通信方式。其中 http 連接只有用戶請(qǐng)求時(shí)才會(huì)建立連接通道,即使用“請(qǐng)求響應(yīng)”的方式,客戶端向服務(wù)器發(fā)送請(qǐng)求后,服務(wù)器端才向客戶端返回?cái)?shù)據(jù)。使用 socket 通信時(shí),首先雙方之間建立的連接,即客戶端連接服務(wù)端,連接成功后,可直接進(jìn)行數(shù)據(jù)的傳輸,建立連接后便沒有服務(wù)端和客戶端的區(qū)別,即雙方都可以主動(dòng)發(fā)送
43、信息,本論文中的所有通信都采用 socket 實(shí)現(xiàn)。2.4.1 socket 定義與分類 socket 為接收和發(fā)送應(yīng)用軟件之間的數(shù)據(jù)的抽象層,應(yīng)用軟件可以通過 socket 將軟件添加到網(wǎng)絡(luò)中,并且可與同一局域網(wǎng)中的其他應(yīng)用軟件實(shí)現(xiàn)網(wǎng)絡(luò)通信。socket 為通信的應(yīng)用軟件提供了數(shù)據(jù)傳輸通道,并且提供了軟件內(nèi)部與外界通信的端口。socket 通信的實(shí)現(xiàn)根據(jù)不同的的底層協(xié)議可分為多種方式。本論文中僅用到了 tcp/ip 協(xié)議中的 socket 內(nèi)容。其中流套接字(streamsocket)和數(shù)據(jù)報(bào)套接字(datagramsocket) 是該協(xié)議中最為重要的 socket 類型。在流套接字中采用
44、tcp 作為點(diǎn)對(duì)點(diǎn)通信協(xié)議,保證了字節(jié)流的可靠性。數(shù)據(jù)報(bào)套接字的數(shù)據(jù)打包發(fā)送服務(wù)采用 udp 通信協(xié)議完成。其中,tcp 協(xié)議是一種固定連線為基礎(chǔ)的協(xié)議,tcp 可以保證從一端數(shù)據(jù)送至另一端時(shí),數(shù)據(jù)能夠確實(shí)送達(dá),而且抵達(dá)的數(shù)據(jù)的排列順序和送達(dá)的順序相同,因此,tcp 協(xié)議適合可靠性要求比較高的場(chǎng)合。udp 協(xié)議是無連接通信協(xié)議,不保證可靠數(shù)據(jù)的傳輸,但能夠向若干目標(biāo)發(fā)送數(shù)據(jù),接受發(fā)自若干源的數(shù)據(jù)。 udp 是以獨(dú)立發(fā)送數(shù)據(jù)包的方式進(jìn)行。udp 協(xié)議適合于對(duì)數(shù)據(jù)準(zhǔn)確性要求不高的場(chǎng)合。本文中的上位機(jī)應(yīng)用軟件均采用流套接字,即將 tcp 作為端對(duì)端協(xié)議的方式。2.4.2 socket 的基本通信模型
45、圖 2-2 為 socket 通信的基本模型。 左右兩邊的應(yīng)用軟件分別為裝在服務(wù)端和客戶端的平臺(tái)上,應(yīng)用之間通過底層的 socket 套接字通信。而本論文中的服務(wù)端為上位機(jī)應(yīng)用軟件,即本論文需要做的 android 軟件,而客戶端為硬件磁力儀,使用嵌入式編程編寫的客戶端,也是通過底層的 socket 套接字通信。 圖2-2 socket 通信基本模型。2.4.3 socket 基本實(shí)現(xiàn)原理和方式 基于 tcp 協(xié)議的 socket 通信的基本原理和方式:服務(wù)器端首先生成一個(gè) serversocket 對(duì)象,其參數(shù)為一個(gè)整型數(shù),它表示一個(gè)未被占用的端口號(hào),然后調(diào)用 serversocket 的
46、accept() 方法來接收客戶端發(fā)送的數(shù)據(jù)。當(dāng)沒有數(shù)據(jù)發(fā)送時(shí),accept() 方法處于堵塞狀態(tài),只有接收到數(shù)據(jù)后,可通過 inputstream 流(數(shù)據(jù)輸入流)讀取到所接收的數(shù)據(jù)。 在客戶端創(chuàng)建一個(gè) socket 對(duì)象,有兩個(gè)參數(shù),分別代表服務(wù)器端的 ip 地址和服務(wù)端設(shè)置的端口號(hào),,socket 對(duì)象通過 inputstream 流來讀取數(shù)據(jù),獲取服務(wù)器發(fā)送的數(shù)據(jù),然后把需要發(fā)送到服務(wù)端的數(shù)據(jù)寫入到 outputstream 流(數(shù)據(jù)輸出流)中實(shí)現(xiàn) socket 數(shù)據(jù)傳輸。圖2-3為基于 tcp 協(xié)議的 socket 通信流程圖。圖2-33 基于 tcp 協(xié)議的 socket 通信流程
47、圖2.5 java 多線程 世間萬物都可以同時(shí)完成很所工作,例如,人體可以同時(shí)進(jìn)行呼吸、血液循環(huán)、思考問題等活動(dòng)。這種思想在 java 中成為并發(fā),而將并發(fā)完成的每一件事情稱為線程2。本節(jié)是對(duì) java 線程的詳細(xì)介紹。2.5.1 多線程的定義 多線程是一種允許在程序中同時(shí)執(zhí)行多個(gè)指令流的機(jī)制,各線程之間是互相獨(dú)立的,它與進(jìn)程相同,各自擁有各自獨(dú)立的執(zhí)行空間,由操作系統(tǒng)進(jìn)行分配,線程沒有獨(dú)立的存儲(chǔ)空間,進(jìn)程與線程共同分享一個(gè)存儲(chǔ)空間。多線程的執(zhí)行是并發(fā)的,并發(fā)是指在邏輯上可認(rèn)為是同時(shí)發(fā)生的,但是在物理上并不是同時(shí)發(fā)生。由于 cpu 的運(yùn)行速度非常快,用戶根本無法察覺到線程在物理上的非并發(fā)效果,
48、因此,在一般情況下可以認(rèn)為各個(gè)線程是同時(shí)執(zhí)行的。在一般情況下多線程之間的執(zhí)行順序是隨機(jī)的,對(duì)于該次執(zhí)行哪條線程從而帶來的線程調(diào)度與同步等問題,將會(huì)交給專門的關(guān)鍵字機(jī)制來處理。2.5.2 java 多線程的實(shí)現(xiàn) java 多線程的實(shí)現(xiàn)方式有以下兩種: 擴(kuò)展 java.lang.thread 類。繼承于 thread 類,使用時(shí)必需覆蓋 run() 方法,即把將要執(zhí)行的代碼添加到 run() 方法中。這種方法有一個(gè)缺點(diǎn),當(dāng)該類已經(jīng)繼承另一個(gè)類后不能再繼承該類。 實(shí)現(xiàn) java.lang.runnable 接口。runnable 接口只有一個(gè) run() 方法,當(dāng)某個(gè)類實(shí)現(xiàn) runnable 接口時(shí)
49、需要重寫該方法,即把線程要執(zhí)行的代碼寫入該方法中。 通過調(diào)用線程 thread 對(duì)象的 start() 方法可以開啟線程。對(duì)于 java 來說,run() 方法表示新線程所要調(diào)用的方法名稱。因此,在 runnable 上或 thread 上調(diào)用 run() 方法僅僅是和普通代碼一樣執(zhí)行,并不能啟動(dòng)新的線程。2.5.3 線程的四種狀態(tài) 線程具有生命周期,其中最主要的有四種狀態(tài),分別為創(chuàng)建狀態(tài)、可執(zhí)行狀態(tài)、死亡狀態(tài)與阻塞狀態(tài)。創(chuàng)建狀態(tài):線程已經(jīng)創(chuàng)建完畢,但 start() 方法未被調(diào)用,此時(shí)線程未啟動(dòng)。 可執(zhí)行狀態(tài):線程可以執(zhí)行,但不一定處于運(yùn)行狀態(tài)。cpu 的占用時(shí)間隨時(shí)可以分配給該線程。 死亡
50、狀態(tài):正常情況下 run() 方法執(zhí)行完畢后就表示該線程的死亡。除此之外也可以調(diào)用 stop() 或 destroy() 方法使正在運(yùn)行的線程結(jié)束。但不建議使用這兩種方法,因?yàn)?stop() 方法可能會(huì)產(chǎn)生異常,而 destroy() 方法是強(qiáng)制終止,它不會(huì)釋放鎖,會(huì)導(dǎo)致其它線程也無法得到執(zhí)行時(shí)間。 阻塞狀態(tài):此時(shí)線程無法執(zhí)行,因?yàn)?cpu 不會(huì)為其分配執(zhí)行時(shí)間。2.3.4 線程的優(yōu)先級(jí)、同步和阻塞 (1)(1)線程優(yōu)先級(jí)。線程的優(yōu)先級(jí)用來指定該線程的優(yōu)先執(zhí)行順序,即當(dāng)多個(gè)線程同時(shí)進(jìn)入可執(zhí)行狀態(tài)時(shí),這些線程會(huì)等待 cpu 分配執(zhí)行時(shí)間,獲取執(zhí)行權(quán)的概率通過優(yōu)先級(jí)來決定。其中 thread 類的
51、 setpriority() 方法用于設(shè)置線程的優(yōu)先級(jí),getpriority() 方法用于獲取線程的優(yōu)先級(jí)。 (2)(2)線程同步機(jī)制。在同一個(gè)進(jìn)程中,會(huì)有多個(gè)線程同時(shí)使用同一個(gè)存儲(chǔ)空間,這種共享方式雖然節(jié)約了系統(tǒng)資源但同時(shí)帶來了訪問沖突的問題,在 java 中為了有效的避免該沖突,采用 synchronized 關(guān)鍵字機(jī)制,包括兩種用法:synchronized 方法和 synchronized 塊。 synchronized 方法:在聲明方法時(shí)通過添加 synchronized 關(guān)鍵字來指定此方法為 synchronized 方法。在此方法中對(duì)于每個(gè)類的實(shí)例都會(huì)有一把相應(yīng)的鎖,synch
52、ronized 方法必須獲得相應(yīng)實(shí)例所對(duì)應(yīng)的鎖才能調(diào)用這個(gè)方法,在此之前這個(gè)方法所屬線程處于阻塞狀態(tài),方法一旦執(zhí)行,該線程就占用這個(gè)鎖,當(dāng)此方法執(zhí)行結(jié)束后才會(huì)釋放這個(gè)鎖。這種方式解決了變量的訪問沖突問題,它保證了同一時(shí)間中,每個(gè)類實(shí)例僅有一個(gè)聲明為 synchronized 的成員函數(shù)處于可執(zhí)行狀態(tài)。 synchronized 塊:采用 synchronized 關(guān)鍵字來聲明 synchronized 塊。synchronized 塊必須獲得 syncobject 對(duì)象的鎖后才能進(jìn)入執(zhí)行狀態(tài),使用的機(jī)制于前面所述相同。這個(gè)方法可以使用在任意代碼塊中,同時(shí)也可指定任意上鎖的對(duì)象,具有較高的靈活性
53、。 (3)(3)線程的阻塞。java 引入的同步機(jī)制雖然成功的解決了共享存儲(chǔ)區(qū)域的訪問沖突問題,但當(dāng)任意時(shí)刻所需要的資源未準(zhǔn)備就緒,或同一時(shí)刻有多個(gè)資源處于準(zhǔn)備狀態(tài)。因此 java 引入了阻塞機(jī)制來解決此問題,阻塞是指暫停當(dāng)前正在執(zhí)行的線程,等待資源準(zhǔn)備就緒。 java 提供了多種方法支持阻塞機(jī)制,這些方法包括: sleep() 方法:sleep() 方法使用毫秒為單位的時(shí)間段作為參數(shù),在這個(gè)時(shí)間段內(nèi),線程保持阻塞狀態(tài),cpu 無法分配執(zhí)行時(shí)間給該線程,當(dāng)指定的時(shí)間過去后,線程重新進(jìn)入可執(zhí)行狀態(tài)。一般情況下,sleep() 用于等待某個(gè)所需資源的就緒,當(dāng)使用時(shí)發(fā)現(xiàn)執(zhí)行條件不符合,該線程將進(jìn)入阻
54、塞狀態(tài),一段時(shí)間后再次執(zhí)行,直到條件符合為止。suspend() 和 resume() 方法:這兩個(gè)方法需要搭配使用,suspend() 方法使線程進(jìn)入阻塞狀態(tài),直到對(duì)應(yīng)的 resume() 方法調(diào)用后,該線程才會(huì)再次進(jìn)入可執(zhí)行狀態(tài)。一般情況下,suspend() 與 resume() 用于等待另一個(gè)線程產(chǎn)生的結(jié)果,如果發(fā)現(xiàn)結(jié)果未獲取,線程將進(jìn)入阻塞狀態(tài),直到獲取另一個(gè)線程所執(zhí)行的結(jié)果后,才可調(diào)用 resume() 方法使線程進(jìn)入可執(zhí)行狀態(tài)。 yield() 方法:該方法使當(dāng)前線程放棄已得到的 cpu 占用時(shí)間,線程此時(shí)處于可執(zhí)行狀態(tài),隨時(shí)可再次得到 cpu 使用時(shí)間。使用 yield() 方
55、法得到的效果類似于延遲該線程的cpu占用時(shí)間,將 cpu 的使用權(quán)先交給另一個(gè)線程,使另一個(gè)線程先執(zhí)行。 wait() 和 notify() 方法:一般情況下這兩種方法協(xié)同使用,wait() 方法可使線程進(jìn)入阻塞狀態(tài),該方法是個(gè)重載方法,不帶參數(shù)。另一種方法是將一段時(shí)間作為參數(shù),其單位是毫秒。使用第一種形式時(shí),若要使該線程重新進(jìn)入可執(zhí)行狀態(tài),則需滿足超出指定時(shí)間后或采用對(duì)應(yīng)的 notify() 方法進(jìn)行調(diào)用,第二種方式則必需等待對(duì)應(yīng)的 notify() 被調(diào)用。 2.6 小結(jié)本章對(duì)整個(gè)軟件功能實(shí)現(xiàn)的理論基礎(chǔ)做了主要闡述,其中包括 android 系統(tǒng)的發(fā)展與歷史、android 開發(fā)平臺(tái)的基本
56、架構(gòu)、五大應(yīng)用程序組件,并詳細(xì)介紹了 socket 通信的基本原理與實(shí)現(xiàn)方法,最后描述了 java 多線程的特性與實(shí)現(xiàn)方式。第三章 需求分析3.1 功能分析本論文的 android 應(yīng)用軟件功能主要包括五部分:傳輸數(shù)據(jù)、數(shù)據(jù)處理、存儲(chǔ)數(shù)據(jù)、波形繪制和、歷史數(shù)據(jù)刪除等功能,以下是對(duì)各個(gè)個(gè)部分功能的分析。3.1.1 傳輸數(shù)據(jù)功能分析 硬件磁力儀和和磁力儀手機(jī)端軟件通過無線 wifi 硬件連接后,在軟件中通過 socket tcp 協(xié)議成功連接,其中手機(jī)端為服務(wù)器,磁力儀為客戶端。手機(jī)端向磁力儀發(fā)送 start 命令開始準(zhǔn)備傳輸數(shù)據(jù),然后,將進(jìn)入循環(huán)傳輸數(shù)據(jù),每個(gè)采樣周期內(nèi),手機(jī)向磁力儀發(fā)送 tra
57、nsform 命令,磁力儀向手機(jī)端發(fā)送1440個(gè)字節(jié)的數(shù)據(jù),。完成數(shù)據(jù)傳輸。通過采樣周期循環(huán)發(fā)送 transform 命令和1440個(gè)字節(jié)數(shù)據(jù)。3.1.2 數(shù)據(jù)處理功能分析 手機(jī)端軟件對(duì)收到的1440個(gè)字節(jié)數(shù)進(jìn)行變換處理,將緊挨著的每沒4個(gè)字節(jié)作為一個(gè)數(shù)據(jù),一共為 1440/4 =360 個(gè)數(shù)據(jù),這360個(gè)數(shù)據(jù)分別為處理后的x、y、z三個(gè)方向的磁場(chǎng)值,每個(gè)方向?yàn)?20個(gè)數(shù)據(jù)。 然后將x、y、z三個(gè)方向的磁場(chǎng)值進(jìn)行均方和求出m的120個(gè)值。3.1.3 存儲(chǔ)數(shù)據(jù)功能分析存儲(chǔ)數(shù)據(jù)分為文本文件存儲(chǔ)和二進(jìn)制文件存儲(chǔ)。其中文本文件存儲(chǔ)是對(duì)處理后的480360個(gè)數(shù)據(jù)進(jìn)行存儲(chǔ),二進(jìn)制存儲(chǔ)是對(duì)接收到的1440個(gè)
58、字節(jié)進(jìn)行存儲(chǔ)。如圖 3-1 所示為文本文件存儲(chǔ)方式。每行一共有四個(gè)數(shù)據(jù),第一個(gè)數(shù)據(jù)為保存數(shù)據(jù)的時(shí)間周期,第二個(gè)到第五四個(gè)數(shù)據(jù)分別為 x、y、z、m 四個(gè)磁場(chǎng)值,每一個(gè)時(shí)間周期可以保存 120 組數(shù)據(jù)。如圖 3-2 所示為二進(jìn)制存儲(chǔ)方式。每行數(shù)據(jù)為接收到的 1440 個(gè)字節(jié)轉(zhuǎn)化為字符串的結(jié)果,每一個(gè)時(shí)間周期可以保存一行數(shù)據(jù)。 圖 3-1 文本文件 圖 3-2 二進(jìn)制文件3.1.4 波形繪制功能分析對(duì)處理后得到的480360個(gè)數(shù)據(jù),進(jìn)行波形顯示。如下圖 3-31 所示,為預(yù)想繪圖區(qū)域。其橫坐標(biāo)為0120,代表120個(gè)點(diǎn)??v坐標(biāo)為-2000020000mv代表磁傳感器的采集范圍。此區(qū)域一共繪制四路波
59、形,分別為x,y,z,m。四路波形用不同的顏色表示,其中x軸為黑色,y軸為紅色,z軸為橙色,m軸為藍(lán)色。 圖3-31 波形顯示區(qū)域3.1.5 歷史數(shù)據(jù)刪除功能分析將保存的文本數(shù)據(jù)及其存儲(chǔ)路徑生成列表,選中當(dāng)前項(xiàng)進(jìn)行刪除,便可刪除歷史數(shù)據(jù)。如圖3-42所示,列表區(qū)域?yàn)闅v史數(shù)據(jù)文件的保存時(shí)間和存儲(chǔ)路徑,長(zhǎng)按列表選項(xiàng),出現(xiàn)刪除對(duì)話框,用于刪除該歷史數(shù)據(jù)。圖3-42 刪除歷史數(shù)據(jù)3.2 非功能需求分析為了更好的進(jìn)行人機(jī)交互操作,需要設(shè)計(jì)很多消息提示或?qū)υ捒蛱崾尽T诒热纾很浖蜷_后進(jìn)行 wifi 是否連接對(duì)話框連接提示,磁力儀與磁力儀手機(jī)端軟件連接狀態(tài)消息提示,是否退出軟件對(duì)話框提示,是否刪除數(shù)據(jù)對(duì)話框
60、提示,數(shù)據(jù)是否刪除成功消息提示等等。便于人機(jī)交互使用。3.3 小結(jié)本章節(jié)對(duì)磁力儀手機(jī)端軟件的功能需求和進(jìn)行分析并且也對(duì)非功公能需求進(jìn)行了分析。詳細(xì)的進(jìn)行了軟件需求設(shè)計(jì),在軟件實(shí)現(xiàn)的過程中,首先確定了研究思路,為之后的軟件的間具體設(shè)計(jì)和測(cè)試提供依據(jù)。第四章 詳細(xì)設(shè)計(jì)和實(shí)現(xiàn)4.1 android 開發(fā)平臺(tái)的搭建搭建 android 開發(fā)平臺(tái)首先需要準(zhǔn)備 jdk、adt 插件、eclipse 的安裝,,這些軟件都可在網(wǎng)上下載。4.1.1 jdk 的安裝打開瀏覽器,進(jìn)入 oracle 官方主頁,地址“http:/ jdk 安裝包的選擇和下載。下載完適合自己系統(tǒng)的 jdk 版本后,就可以進(jìn)行安裝了。下面
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 財(cái)務(wù)部年終報(bào)告開創(chuàng)新局面引領(lǐng)新風(fēng)尚
- 手工藝行業(yè)衛(wèi)生衛(wèi)生控制
- 2025-2030全球電子后視鏡系統(tǒng)行業(yè)調(diào)研及趨勢(shì)分析報(bào)告
- 2025-2030全球聯(lián)合收割機(jī)皮帶行業(yè)調(diào)研及趨勢(shì)分析報(bào)告
- 2025-2030全球3D 打印陶瓷絲行業(yè)調(diào)研及趨勢(shì)分析報(bào)告
- 2025年全球及中國(guó)智能睡眠盒行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
- 2025-2030全球IP65工業(yè)顯示器行業(yè)調(diào)研及趨勢(shì)分析報(bào)告
- 2025-2030全球機(jī)器人用立體攝像頭行業(yè)調(diào)研及趨勢(shì)分析報(bào)告
- 2025-2030全球不銹鋼面板安裝顯示器行業(yè)調(diào)研及趨勢(shì)分析報(bào)告
- 2025-2030全球全液壓解耦系統(tǒng)行業(yè)調(diào)研及趨勢(shì)分析報(bào)告
- 中國(guó)儲(chǔ)備糧管理集團(tuán)有限公司蘭州分公司招聘筆試真題2024
- 第1課 隋朝統(tǒng)一與滅亡 課件(26張)2024-2025學(xué)年部編版七年級(jí)歷史下冊(cè)
- 提高金剛砂地坪施工一次合格率
- 【歷史】唐朝建立與“貞觀之治”課件-2024-2025學(xué)年統(tǒng)編版七年級(jí)歷史下冊(cè)
- 產(chǎn)業(yè)園區(qū)招商合作協(xié)議書
- 2024年廣東省公務(wù)員錄用考試《行測(cè)》真題及答案解析
- 2025新譯林版英語七年級(jí)下單詞默寫表
- 盾構(gòu)標(biāo)準(zhǔn)化施工手冊(cè)
- 天然氣脫硫完整版本
- 中歐班列課件
- 2025屆高三數(shù)學(xué)一輪復(fù)習(xí)備考經(jīng)驗(yàn)交流
評(píng)論
0/150
提交評(píng)論