Android手機(jī)控制軟件畢業(yè)設(shè)計(jì)_第1頁
Android手機(jī)控制軟件畢業(yè)設(shè)計(jì)_第2頁
Android手機(jī)控制軟件畢業(yè)設(shè)計(jì)_第3頁
Android手機(jī)控制軟件畢業(yè)設(shè)計(jì)_第4頁
Android手機(jī)控制軟件畢業(yè)設(shè)計(jì)_第5頁
已閱讀5頁,還剩48頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

③遠(yuǎn)程桌面遠(yuǎn)程桌面利用RDP協(xié)議實(shí)現(xiàn)。(3)方法步驟具體做法如下:=1\*GB3①模塊化:分別做好在客戶端服務(wù)器端以及其他Android設(shè)備上運(yùn)行的程序,保證模塊的高內(nèi)聚、低耦合的特性,這樣可以降低軟件系統(tǒng)的復(fù)雜性,各模塊有自己獨(dú)立的功能,提高可理解性、可維護(hù)性。=2\*GB3②修改完善:完善所做程序中的不足之處,做到界面友好等其他細(xì)節(jié)方面的問題,提高軟件的可理解性。四、進(jìn)度計(jì)劃第1周~第6周畢業(yè)實(shí)習(xí),查資料及熟悉環(huán)境。第7周~第8周需求分析,完成需求分析及概要設(shè)計(jì)。第9周~第10周詳細(xì)設(shè)計(jì),完成詳細(xì)設(shè)計(jì)。第11周~第16周系統(tǒng)連調(diào),完成試驗(yàn)系統(tǒng),編寫并完成論文,答辯。五、參考文獻(xiàn)[1]周恒民譯.JavaTCP/IPSocket編程(原書第2版)[M].北京:機(jī)械工業(yè)出版,2009.[2](美)梁勇著,李娜譯.Java語言程序設(shè)計(jì):基礎(chǔ)篇(原書第8版)[M].北京:機(jī)械工業(yè)出版社,2011.[3]范文慶等編著.WindowsAPI開發(fā)詳解——函數(shù)、接口、編程實(shí)例[M].北京:人民郵電出版社,2011.[4](美)李偉夢著,何晨光,李洪剛譯.Android編程入門經(jīng)典(移動與嵌入式開發(fā)技術(shù))[M].北京:清華大學(xué)出版社,2012.[5](英)哈諾德著,朱濤江,林劍譯.Java網(wǎng)絡(luò)編程(第3版)——O’ReillyJava系列[M].北京:中國電力出版社,2005.指導(dǎo)教師簽字時(shí)間年月日摘要在網(wǎng)絡(luò)越來越發(fā)達(dá)的今天,人們對網(wǎng)絡(luò)的依賴越來越多,越來越離不開網(wǎng)絡(luò),WIFI覆蓋范圍也越來越廣,由此而產(chǎn)生的手機(jī)通訊控制工具也越來越多。Android憑借其開放性和良好的人機(jī)界面,改變了智能手機(jī)市場的格局。Android的最大特點(diǎn)是其開放性體系架構(gòu),不僅具有非常好的開發(fā)、調(diào)試環(huán)境,而且還支持各種可擴(kuò)展的用戶體驗(yàn),包括豐富的圖形組件、多媒體支持功能以及強(qiáng)大的瀏覽器。本文對Android平臺的現(xiàn)狀進(jìn)行了分析,進(jìn)而研究了Android平臺的系統(tǒng)架構(gòu)和組件模型,以及Intent和生命周期的機(jī)制。在此基礎(chǔ)上,設(shè)計(jì)一個(gè)能在Android設(shè)備上運(yùn)行的局域網(wǎng)通訊控制軟件。軟件利用Java語言和Eclipse編輯工具對軟件進(jìn)行編寫,同時(shí)給出了詳細(xì)的系統(tǒng)設(shè)計(jì)過程、部分界面圖及主要功能運(yùn)行流程圖。本系統(tǒng)界面友好、操作便捷,具有良好的可擴(kuò)展性和可維護(hù)性,系統(tǒng)經(jīng)過測試,可以穩(wěn)定運(yùn)行,能夠滿足手機(jī)用戶的基本需求。關(guān)鍵詞:Android通訊控制JavaAbstractWiththemoreandmoredevelopedinthenetworknow,peopledependentandinseparablefromthenetwork,WIFIcoveragemorewidely,theresultismobilecommunicationsandcontroltoolsbecomeafashion.Relyonitsopennessandgoodman-machineinterface,Androidchangingthepatternofthesmartphonemarket.ThebiggestfeatureofAndroidisitsopenarchitecture,notonlyhasaverygooddevelopmentanddebuggingenvironment,butalsosupportsavarietyofscalableuserexperience,includingrichgraphicalcomponents,multimediasupportfeaturesandpowerfulbrowser.thepaperanalyzesthecurrentAndroidplatformsituation,andthenstudytheAndroidplatformsystemarchitectureandcomponentmodels,aswellasIntentandamechanismlifecycle.Onthisbasis,designanAndroiddevicerunninginLANcommunicationscontrolsoftware.SoftwareusestheJavalanguageandEclipseeditingtoolstowrite,andgivesadetailedsystemdesignprocess,partoftheinterfaceandmainfunctionsofrunningaflowchartdiagram.Thesystemisuser-friendly,easytohandle,hasgoodscalabilityandmaintainabilityresistance,thesystemhasbeentestedandstableoperation,tomeetthebasicneedsofmobilephoneusers.Keyword:AndroidCommunicationsandcontrolJava目錄948第1章緒論 132881.1研究背景內(nèi)容及意義 1127721.1.1研究背景 1262491.1.2研究內(nèi)容及意義 1280791.2發(fā)展現(xiàn)狀及趨勢 1306401.3論文主要結(jié)構(gòu) 23905第2章開發(fā)工具簡介 3112682.1Android概述 3242632.1.1Android平臺簡介 3207422.1.2Android平臺優(yōu)勢 4106602.2開發(fā)環(huán)境 5258342.3Eclipse概述 610795第3章系統(tǒng)需求 7250523.1功能需求分析 777683.2系統(tǒng)流程 942013.3系統(tǒng)界面需求 1033543.4可行性分析 105193.5開發(fā)及運(yùn)行環(huán)境需求 1030513第4章通信控制軟件詳細(xì)設(shè)計(jì) 1274474.1用戶界面的設(shè)計(jì) 12224394.1.1用戶界面的實(shí)現(xiàn) 13117434.2遠(yuǎn)程遙控功能的實(shí)現(xiàn) 13147034.2.1遠(yuǎn)程遙控功能的設(shè)計(jì)原理 14195214.2.2關(guān)機(jī)功能的實(shí)現(xiàn) 1447934.2.3PPT遙控功能的實(shí)現(xiàn) 1492754.3無線鼠標(biāo)功能的實(shí)現(xiàn) 16235264.3.1無線鼠標(biāo)功能的設(shè)計(jì)原理 16244474.3.2鼠標(biāo)移動功能的設(shè)計(jì)原理 17182614.3.3鼠標(biāo)點(diǎn)擊功能的設(shè)計(jì)原理 1883494.4在線聊天功能的實(shí)現(xiàn) 19267164.4.1用戶注冊功能的實(shí)現(xiàn) 19175484.4.2聊天功能實(shí)現(xiàn) 20192324.4.3發(fā)送接收文件功能實(shí)現(xiàn) 211449第5章結(jié)論與展望 2419507參考文獻(xiàn) 2613141致謝 2713855附錄A 283036外文翻譯英文 287240外文翻譯中文 37第1章緒論1.1研究背景內(nèi)容及意義1.1.1研究背景自從2008年9月22日美國運(yùn)營商T-MobileUSA在紐約正式發(fā)布了第一款基于Android的手機(jī)后更多的移動設(shè)備廠商看到了Android的光明前景并紛紛加入其中Android甚至已經(jīng)涉足上網(wǎng)本市場了其發(fā)展前景廣闊涉及領(lǐng)域越來越大。隨著Android手機(jī)的普及Android應(yīng)用的需求勢越來越大這個(gè)潛力巨大的市場已經(jīng)吸引無數(shù)軟件開發(fā)廠商和開發(fā)者投身其中。Android的開放性使其比蘋果和黑莓對年輕人更具吸引力更能吸引年輕人群的關(guān)注和喜愛。同時(shí)因?yàn)锳ndroid系統(tǒng)的開放性為Android平板電腦的快速發(fā)展奠定了基礎(chǔ)也才能促使其吸引著越來越多的用戶接受和使用。同時(shí)Android還具有應(yīng)用程序無界限、應(yīng)用程序是在平的的條件下創(chuàng)建的、應(yīng)用程序可以輕松的嵌入網(wǎng)絡(luò)、應(yīng)用程序可以并行運(yùn)行等眾多出色的品質(zhì)。安卓系統(tǒng)在不斷升級完善如今平板電腦市場已成為Android與蘋果iOS除了智能手機(jī)領(lǐng)域之外爭奪的第二個(gè)焦點(diǎn)。一直以來多數(shù)新聞仍然顯示iPad在平板市場的霸主地位難撼。但是以Android領(lǐng)頭的平板電腦正以高速的增長對蘋果iPad造成沖擊。1.1.2研究內(nèi)容及意義Android平臺手機(jī)通訊控制軟件,運(yùn)用Java語言,實(shí)現(xiàn)與同一局域網(wǎng)的其他Android設(shè)備通訊,文件傳輸,并能對電腦進(jìn)行關(guān)機(jī),控制PPT等操作并實(shí)現(xiàn)無線鼠標(biāo)的功能。Android平臺的通訊控制軟件的意義:(1)極大的方便了處于同一局域網(wǎng)用戶間的即時(shí)通訊;(2)PPT遙控使得用戶做呈現(xiàn)時(shí)可以脫離電腦束縛;(3)無線鼠標(biāo)可以實(shí)現(xiàn)較遠(yuǎn)地方對電腦的相關(guān)操作;(4)文件傳輸可以使資源更好的被利用。1.2發(fā)展現(xiàn)狀及趨勢Android平臺自2010年以來呈現(xiàn)出突飛猛進(jìn)的發(fā)展勢頭,在全球智能手機(jī)市場中所占份額從不到10%一路猛增至50%以上,儼然已經(jīng)搶占了“半壁江山”。與此同時(shí),基于Android平臺的各種應(yīng)用也層出不窮。目前市場上有MobileCC,HomeCenter等遠(yuǎn)程控制軟件,比較出名的局域網(wǎng)通信軟件有飛鴿,飛秋等。(1)MobileCC支持WIFI連接、GPRS連接,控制電腦已實(shí)現(xiàn),不遠(yuǎn)的將來,伴隨著物聯(lián)網(wǎng)的進(jìn)一步發(fā)展,遙控汽車,控制空調(diào),智能冰箱操控等終將得到實(shí)現(xiàn),目前該軟件可遙控電腦音視頻播放,游戲操控,PPT播放,電腦快捷操作。(2)HomeCenter是一款可以利用手機(jī)遠(yuǎn)程控制電腦的免費(fèi)遠(yuǎn)程控制軟件,HomeCenter運(yùn)行在系統(tǒng)托盤,并允許遠(yuǎn)程訪問您的手機(jī)。(3)飛鴿傳書是一款面向企業(yè)辦公的即時(shí)通訊軟件,基于TCP/IP模式。企業(yè)員工可在企業(yè)內(nèi)部或外部通過飛鴿傳書進(jìn)行通訊,支持消息發(fā)送,文件傳輸,語音視頻等。為企業(yè)提供安全,穩(wěn)定的即時(shí)通訊解決方案。局域網(wǎng)通信控制軟件的發(fā)展趨勢:(1)實(shí)現(xiàn)的功能更加多樣化;(2)由單一的控制電腦向控制其他家用電器設(shè)備轉(zhuǎn)變。1.3論文主要結(jié)構(gòu)本論文的主要結(jié)構(gòu):第1章介紹Android的發(fā)展史,并分析了本課題研究的背景現(xiàn)狀及意義。簡單介紹了目前市場上比較流行的一些手機(jī)控制軟件。介紹了論文的主要研究內(nèi)容和整個(gè)論文的結(jié)構(gòu)。第2章簡要介紹了Android系統(tǒng)以及Android項(xiàng)目和系統(tǒng)設(shè)計(jì)過程中用到的工具和技術(shù)。第3章主要對本系統(tǒng)的功能需求、性能需求、可行性分析、運(yùn)行環(huán)境作了詳細(xì)分析和概要設(shè)計(jì)。第4章將整個(gè)系統(tǒng)功能詳細(xì)設(shè)計(jì)分為幾個(gè)模塊作了詳細(xì)介紹。詳細(xì)詳細(xì)說明了:界面的設(shè)計(jì)與實(shí)現(xiàn)、遠(yuǎn)程遙控功能的實(shí)現(xiàn)、在線聊天功能的實(shí)現(xiàn)、無線鼠標(biāo)功能的實(shí)現(xiàn)等,其中包括每個(gè)功能模塊的主要代碼和界面,最后介紹了相關(guān)權(quán)限的使用。第5章是結(jié)論與展望。對課題研究內(nèi)容及過程進(jìn)行總結(jié),分析研究內(nèi)容的發(fā)展趨勢以及發(fā)展前景。第2章開發(fā)工具簡介2.1Android概述2.1.1Android平臺簡介Android是一種基于Linux的自由及開放源代碼的操作系統(tǒng),主要使用于移動設(shè)備,如智能手機(jī)和平板電腦,由Google公司和開放手機(jī)聯(lián)盟領(lǐng)導(dǎo)及開發(fā)。Android從誕生到現(xiàn)在也不過3年的時(shí)間,但是也就是在這短短的3年內(nèi)Android創(chuàng)造了一個(gè)迅速被人們知曉并追捧的奇跡。2007年11月5日,Google與其他33家手機(jī)制造商(包含摩托羅拉、宏達(dá)電、三星、LG)、手機(jī)晶片供應(yīng)商、軟硬體供應(yīng)商、電信業(yè)者所聯(lián)合組成的開放手持裝置聯(lián)盟(OpenHandsetAlliance),發(fā)布了名為Android的開放手機(jī)軟硬體平臺。該聯(lián)盟的成員宣布日后都會在Android平臺上開發(fā)他們的新的業(yè)務(wù)。不久之后的2008年9月24日,T-Mobile公司首度公布第一臺Android手機(jī)(G1)的細(xì)節(jié),同日Google也放出了AndroidSDK1.0rc1。這樣Android進(jìn)入了人們的視線[1]。Android以其特有的開放性優(yōu)勢越來越受到人們和智能手機(jī)廠商的關(guān)注。對于第三放軟件開發(fā)商來說,Android是一個(gè)真正意義上的開放性移動設(shè)備綜合平臺,Android系統(tǒng)是免費(fèi)向開發(fā)人員提供的,這樣就避免了開發(fā)中專利權(quán)的障礙。因此,就能夠?yàn)榈谌杰浖_發(fā)商省下大筆資金。對于設(shè)備制造商來說,Android是一個(gè)免費(fèi)的平臺。當(dāng)設(shè)備制造商每制造一臺手機(jī)時(shí),那些支付給手機(jī)系統(tǒng)制造商的費(fèi)用也省去了,這樣也降低了每臺手機(jī)的生產(chǎn)費(fèi)用,同時(shí)就降低了手機(jī)的價(jià)格,這樣在市場上也提高了競爭力。對硬體開發(fā)廠商來說,Android也是個(gè)開放的平臺。使用Android平臺的廠商可以更具自己的需求以及能力為Android開發(fā)具有該廠商特色的功能,但是這樣的增加完全不用考慮版權(quán)的問題。同時(shí)Android平臺支持各種先進(jìn)的網(wǎng)絡(luò)、繪圖、3D處理能力,可以用來提供更好的使用者體驗(yàn)。GoogleAndroid系統(tǒng)作為一個(gè)完全開源的操作系統(tǒng),是由操作系統(tǒng)(Linux)、中間件以及核心應(yīng)用程序組成的軟件棧(softwarestack)。通過AndroidSDK提供的API以及相應(yīng)的開發(fā)工具,程序員可以很方便的開發(fā)Android平臺上的應(yīng)用程序。其整個(gè)系統(tǒng)由應(yīng)用程序(Application),應(yīng)用程序框架(ApplicationFramework),應(yīng)用程序庫(Libraries),Android運(yùn)行庫(AndroidRuntime),Linux內(nèi)核(LinuxKernel)五個(gè)部分組成。Android操作系統(tǒng)內(nèi)置了一部分應(yīng)用程序,包括電子郵件客戶端、SMS程序、日歷、地圖、瀏覽器、通訊錄以及其他的程序,值得一提的是這些所有的程序都是用Java編寫的[2]。因?yàn)閼?yīng)用程序框架使得組件更易于重用,所以開發(fā)者的應(yīng)用程序可以很容易的調(diào)用API函數(shù)實(shí)現(xiàn)我們想要的功能。在遵守應(yīng)用程序框架的安全機(jī)制約束的前提下,開發(fā)者開發(fā)的一個(gè)應(yīng)用程序可以使用其他程序所開發(fā)的功能。雖然Android的應(yīng)用程序是用Java語言開發(fā)的,但是Android給應(yīng)用程序開發(fā)者提供了一系列的C/C++程序庫,通過Android的一些特殊的設(shè)計(jì),我們開發(fā)者可以使用這些庫[3]。現(xiàn)今,Android操作系統(tǒng)已成為許多手機(jī)制造商的寵兒,其中包括HTC、索尼愛立信、Samsung、摩托羅拉以及國內(nèi)的聯(lián)想、華為、海爾等。2.1.2Android平臺優(yōu)勢(1)開放性在優(yōu)勢方面,Android平臺首先就是其開發(fā)性,開發(fā)的平臺允許任何移動終端廠商加入到Android聯(lián)盟中來。顯著的開放性可以使其擁有更多的開發(fā)者,隨著用戶和應(yīng)用的日益豐富,一個(gè)嶄新的平臺也將很快走向成熟。開發(fā)性對于Android的發(fā)展而言,有利于積累人氣,這里的人氣包括消費(fèi)者和廠商,而對于消費(fèi)者來講,最大的受益正是豐富的軟件資源。開放的平臺也會帶來更大競爭,如此一來,消費(fèi)者將可以用更低的價(jià)位購得心儀的手機(jī)。(2)不受束縛在過去很長的一段時(shí)間,特別是在歐美地區(qū),手機(jī)應(yīng)用往往受到運(yùn)營商制約,使用什么功能接入什么網(wǎng)絡(luò),幾乎都受到運(yùn)營商的控制。自從2007年iPhone上市后,用戶可以更加方便地連接網(wǎng)絡(luò),運(yùn)營商的制約減少。隨著EDGE、HSDPA這些2G至3G移動網(wǎng)絡(luò)的逐步過渡和提升,手機(jī)隨意接入網(wǎng)絡(luò)已不是運(yùn)營商口中的笑談。(3)豐富的硬件這一點(diǎn)還是與Android平臺的開放性相關(guān),由于Android的開放性,眾多的廠商會推出千奇百怪,功能特色各具的多種產(chǎn)品。功能上的差異和特色,卻不會影響到數(shù)據(jù)同步、甚至軟件的兼容,如同從諾基亞Symbian風(fēng)格手機(jī)一下改用蘋果iPhone,同時(shí)還可將Symbian中優(yōu)秀的軟件帶到iPhone上使用、聯(lián)系人更是可以方便地轉(zhuǎn)移[4]。(4)方便開發(fā)Android平臺提供給第三方開發(fā)商一個(gè)十分寬泛、自由的環(huán)境,不會受到各種條條框框的阻擾,可想而知,會有多少新穎別致的軟件會誕生。但也有其兩面性,血腥、暴力方面的程序和游戲如何控制正是留給Android難題之一。(5)Google應(yīng)用在互聯(lián)網(wǎng)的Google已經(jīng)走過10年度歷史,從搜索巨人到全面的互聯(lián)網(wǎng)滲透,Google服務(wù)如地圖、郵件、搜索等已經(jīng)成為連接用戶和互聯(lián)網(wǎng)的重要紐帶,而Android平臺手機(jī)將無縫結(jié)合這些優(yōu)秀的Google服務(wù)。2.2開發(fā)環(huán)境Android的上層應(yīng)用程序是用Java語言開發(fā),同時(shí)還需要基于Dalvik虛擬機(jī),所以,Google公司推薦使用主流的Java繼承開發(fā)環(huán)境Eclipse。只有Eclipse還不夠,因?yàn)槭鞘褂肑ava語言進(jìn)行開發(fā),還應(yīng)該有由SUN公司提供的JavaSDK(其中包括JRE:JavaRuntimeEnvironment)。此外,Android的應(yīng)用程序開發(fā)和Java開發(fā)是有較大區(qū)別的,所以還需要有Google提供的AndroidSDK。同時(shí),還需要在Eclipse安裝ADT(AndroidDevelopmentTool),它是Eclipse下開發(fā)工具的升級下載工具,為Android開發(fā)提供開發(fā)工具的升級或者變更。簡言之,需要JavaSDK、Eclipse、AndroidSDK以及ADT才能搭建Android開發(fā)環(huán)境,從而進(jìn)行Android應(yīng)用程序的開發(fā)[5]。(1)JavaJava是Sun公司在1995年推出的新的編程語言,它是一種簡單的、面向?qū)ο蟮摹⒎植际降?、解釋的、安全的、可移植的、性能?yōu)異的多線程語言。它以其較強(qiáng)的安全性、平臺無關(guān)性、硬件結(jié)構(gòu)無關(guān)性、語言簡潔性以及面向?qū)ο蟮奶攸c(diǎn),在網(wǎng)絡(luò)編程語言中占據(jù)了無可比擬的優(yōu)勢[6]。(2)JavaSDK、AndroidSDKSDK(softwaredevelopmentkit):軟件開發(fā)工具包。被軟件開發(fā)工程師用于特定的軟件包、軟件框架、硬件平臺、操作系統(tǒng)等建立應(yīng)用軟件的開發(fā)工具的集合。因此,JavaSDK既Java的軟件開發(fā)工具包,而AndroidSDK指的既是Android專屬的軟件開發(fā)工具包[7]。(3)Eclipse及其插件(ADT)Eclipse是替代IBMVisualAgeforJava的下一代IDE開發(fā)環(huán)境,但它未來的目標(biāo)不僅僅是成為專門開發(fā)Java程序的IDE環(huán)境,根據(jù)Eclipse的體系結(jié)構(gòu),通過開發(fā)插件,它能擴(kuò)展到任何語言的開發(fā),甚至能成為圖片繪制的工具。Eclipse是一個(gè)開放源代碼的項(xiàng)目,任何人都可以下載Eclipse的源代碼,并且在此基礎(chǔ)上開發(fā)自己的功能插件。也就是說未來只要有人需要,就會有建立在Eclipse之上的COBOL,Perl,Python等語言的開發(fā)插件出現(xiàn)。同時(shí)可以通過開發(fā)新的插件擴(kuò)展現(xiàn)有插件的功能,比如在現(xiàn)有的Java開發(fā)環(huán)境中加入Tomcat\o"服務(wù)器"服務(wù)器插件。因而其可以無限擴(kuò)展,而且有著統(tǒng)一的外觀,操作和系統(tǒng)資源管理,這也正是Eclipse的潛力所在[8]。在Eclipse編譯IDE環(huán)境中,需安裝ADT(AndroidDevelopmentTools)Plug-in,這是Android在Eclipse上的開發(fā)工具。為Android開發(fā)提供開發(fā)工具的升級或者變更,簡單理解為在Eclipse下開發(fā)工具的升級下載工具。(4)XML可擴(kuò)展標(biāo)記語言(ExtensibleMarkupLanguage,XML),用于標(biāo)記電子文件使其具有結(jié)構(gòu)性的標(biāo)記語言,可以用來標(biāo)記數(shù)據(jù)和定義數(shù)據(jù)類型,是一種允許用戶對自己的標(biāo)記語言進(jìn)行定義的源語言。XML是標(biāo)準(zhǔn)通用標(biāo)記語言(SGML)的子集,非常適合Web傳輸。XML提供統(tǒng)一的方法來描述和交換獨(dú)立于應(yīng)用程序或供應(yīng)商的結(jié)構(gòu)化數(shù)據(jù)[9]。XML的簡單使其易于在任何應(yīng)用程序中讀寫數(shù)據(jù),這使XML很快成為數(shù)據(jù)交換的唯一公共語言,雖然不同的應(yīng)用軟件也支持其它的數(shù)據(jù)交換格式,但不久之后他們都將支持XML,那就意味著程序可以更容易的與Windows,MacOS,Linux以及其他平臺下產(chǎn)生的信息結(jié)合,然后可以很容易加載XML數(shù)據(jù)到程序中并進(jìn)行分析,并以XML格式輸出結(jié)果[10]。2.3Eclipse概述Eclipse是一個(gè)開放源代碼的、基于Java的可擴(kuò)展開發(fā)平臺。就其本身而言,它只是一個(gè)框架和一組服務(wù),用于通過插件組件構(gòu)建開發(fā)環(huán)境。雖然大多數(shù)用戶很樂于將Eclipse當(dāng)作Java集成開發(fā)環(huán)境(IDE)來使用,但Eclipse的目標(biāo)卻不僅限于此。Eclipse還包括插件開發(fā)環(huán)境(Plug-inDevelopmentEnvironment,PDE),這個(gè)組件主要針對希望擴(kuò)展Eclipse的軟件開發(fā)人員,因?yàn)樗试S他們構(gòu)建與Eclipse環(huán)境無縫集成的工具。由于Eclipse中的每樣?xùn)|西都是插件,對于給Eclipse提供插件,以及給用戶提供一致和統(tǒng)一的集成開發(fā)環(huán)境而言,所有工具開發(fā)人員都具有同等的發(fā)揮場所[11]。這種平等和一致性并不僅限于Java開發(fā)工具。盡管Eclipse是使用Java語言開發(fā)的,但它的用途并不限于Java語言;例如,支持諸如C/C++、COBOL、PHP等編程語言的插件已經(jīng)可用,或預(yù)計(jì)將會推出。Eclipse框架還可用來作為與軟件開發(fā)無關(guān)的其他應(yīng)用程序類型的基礎(chǔ),比如內(nèi)容管理系統(tǒng)?;贓clipse的應(yīng)用程序的一個(gè)突出例子是IBMRationalSoftwareArchitect,它構(gòu)成了IBMJava開發(fā)工具系列的基礎(chǔ)[12]。第3章系統(tǒng)需求3.1功能需求分析手機(jī)局域網(wǎng)通信控制軟件是為了方便人們對電腦的相關(guān)操作,使用戶可以遠(yuǎn)程控制電腦以及當(dāng)前正在運(yùn)行的程序所以該軟件要滿足用戶對電腦的一般控制。軟件的基本功能需求有以下幾點(diǎn):聊天功能:與在線的其他用戶私聊或群聊。遙控功能:控制電腦關(guān)機(jī)及遙控PPT。文件傳輸:用戶之間可以通過該軟件進(jìn)行文件傳輸。無線鼠標(biāo):可以把手機(jī)當(dāng)做無線鼠標(biāo)使用,使其對電腦的控制更便捷。系統(tǒng)總體結(jié)構(gòu)功能圖如圖3-1所示。通訊控制軟件通訊控制軟件在線聊天遠(yuǎn)程遙控文件傳輸無線鼠標(biāo)圖3-1總體結(jié)構(gòu)圖 (1)在線聊天功能在線聊天又包括注冊,登陸,私聊,群聊四個(gè)模塊。進(jìn)入該界面需先進(jìn)行注冊,然后用該賬號登陸,注冊時(shí)需要填寫賬號,密碼,年齡,愛好等信息注冊信息保存在SD卡根目錄下。下次登錄時(shí)系統(tǒng)會將登陸名密碼與SD卡中的信息進(jìn)行比對,若符合則登陸成功,否則提示用戶名密碼錯(cuò)誤。登陸后可以查看自己的相關(guān)信息,同時(shí)會顯示其他在線用戶,添加其他用戶為好友,查看好友的在線狀況還可以向他們發(fā)起對話,也可以同時(shí)向所有人發(fā)送消息,或者向單個(gè)好友發(fā)送文件。在線聊天功能的結(jié)構(gòu)圖如圖3-2所示。在線聊天在線聊天用戶注冊用戶登錄單人會話多人會話圖3-2在線聊天結(jié)構(gòu)圖(2)遠(yuǎn)程遙控功能該界面主要實(shí)現(xiàn)的功能有關(guān)機(jī)和遙控PPT,對關(guān)機(jī)設(shè)置的是60秒自動關(guān)機(jī)。關(guān)機(jī)的實(shí)現(xiàn)是調(diào)用cmd語句實(shí)現(xiàn)倒計(jì)時(shí)關(guān)機(jī)PPT控制有開始放映,上一頁,下一頁,結(jié)束放映幾個(gè)功能,按下這幾個(gè)按鍵就相當(dāng)于分別按下電腦鍵盤上的F5,P,N,Esc鍵。遠(yuǎn)程遙控功能的結(jié)構(gòu)圖如圖3-3所示。遠(yuǎn)程遙控遠(yuǎn)程遙控遠(yuǎn)程關(guān)機(jī)圖3-3遠(yuǎn)程遙控結(jié)構(gòu)遙控控制(3)文件傳輸功能該模塊可以實(shí)現(xiàn)用戶間的文件互傳,可將自己SD卡的文件傳送給其他在線好友。被傳送的文件可以是軟件安裝時(shí)在SD卡會創(chuàng)建file_server文件夾,收到的文件會被保存在以發(fā)送方用戶名命名的文件夾下。接收方在收到文件傳輸請求時(shí)會彈出一個(gè)是否同意接受的對話框,若同意則開始傳輸,否則取消這次傳輸。文件傳輸功能的結(jié)構(gòu)圖如圖3-4所示。文件傳輸文件傳輸文件發(fā)送圖3-4文件傳輸結(jié)構(gòu)文件存儲(4)無線鼠標(biāo)功能無線鼠標(biāo)分為鼠標(biāo)移動控制和鼠標(biāo)點(diǎn)擊控制,進(jìn)入該界面觸動屏幕即可實(shí)現(xiàn)對鼠標(biāo)的控制。點(diǎn)擊事件并不是通過點(diǎn)擊屏幕實(shí)現(xiàn),而是在屏幕下方設(shè)置了分別代表鼠標(biāo)左鍵和右鍵的按鈕,點(diǎn)擊他們即相當(dāng)于鼠標(biāo)的點(diǎn)擊事件。無線鼠標(biāo)功能的結(jié)構(gòu)圖如圖3-5所示。無線鼠標(biāo)無線鼠標(biāo)鼠標(biāo)移動圖3-5無線鼠標(biāo)結(jié)構(gòu)鼠標(biāo)點(diǎn)擊3.2系統(tǒng)流程當(dāng)程序啟動時(shí),首先進(jìn)入功能選擇界面,由于文件傳輸是建立在用戶間相互通信的基礎(chǔ)上,所以用戶進(jìn)行功能選擇時(shí)可以選擇遠(yuǎn)程遙控,無線鼠標(biāo),在線聊天中的任意一個(gè)。聊天模塊主要有用戶注冊界面,添加好友界面,聊天界面,其中選擇要發(fā)起會話的好友用spinner實(shí)現(xiàn),當(dāng)用戶選擇其中一個(gè)好友時(shí)即可與之對話,對話內(nèi)容顯示在下方的空白處。注冊時(shí)要填寫自己的昵稱,姓名,年齡,愛好等。在添加好友界面,用戶選擇當(dāng)前在線的一個(gè)用戶,點(diǎn)擊其信息即可彈出添加好友對話框。點(diǎn)返回即可返回到功能選擇界面。遠(yuǎn)程遙控模塊只有一個(gè)界面,顯示關(guān)機(jī),放映等控制功能的按鈕,點(diǎn)擊即可實(shí)現(xiàn)相關(guān)操作,點(diǎn)返回同樣返回到功能選擇界面。文件傳輸模塊有兩個(gè)界面,發(fā)送界面和文件選擇界面,在發(fā)送界面點(diǎn)擊瀏覽即可進(jìn)入文件選擇界面瀏覽想要上傳的文件。在接收端會彈出是否同意接受的對話框,點(diǎn)擊是則自動接收并保存到相關(guān)目錄下,否則取消該次傳輸。無線鼠標(biāo)模塊主體只有一個(gè)layout和兩個(gè)按鈕,分別用來控制鼠標(biāo)的移動和鼠標(biāo)的點(diǎn)擊。3.3系統(tǒng)界面需求程序的界面很大程度上影響著用戶的操作體驗(yàn),為了不影響用戶體驗(yàn),除無線鼠標(biāo)界面外,其余界面均使用同一背景。因此,在各個(gè)界面間切換時(shí)顯得更自然銜接更流暢。3.4可行性分析技術(shù)可行性軟件代碼用Eclipse編寫,語言是Java。Java語言優(yōu)點(diǎn)是可移植性比較高,最初設(shè)計(jì)時(shí)就是本著一次編寫到處執(zhí)行設(shè)計(jì)的,可以開發(fā)各種應(yīng)用程序和游戲。Eclipse是一個(gè)開放源代碼的、基于Java的可擴(kuò)展開發(fā)平臺。Java中的robot類可以實(shí)現(xiàn)對鼠標(biāo)和鍵盤的相關(guān)控制。經(jīng)濟(jì)可行性眾所周知Android是開源的,而且Eclipse等開發(fā)工具也是免費(fèi)的,所以,所需成本極低。操作可行性基于Android平臺的應(yīng)用,大多都是界面友好,易于操作。并且軟件本身布局合理,各個(gè)模塊及其所實(shí)現(xiàn)的功能一目了然。3.5開發(fā)及運(yùn)行環(huán)境需求(1)開發(fā)環(huán)境及語言操作系統(tǒng):Windows7;開發(fā)語言:Java。(2)支持開發(fā)軟件Eclipse及ADTJDKAndroidSDK。(3)運(yùn)行環(huán)境Android2.2及以上。第4章通信控制軟件詳細(xì)設(shè)計(jì)啟動程序后首先是功能選擇界面,分別是在線聊天,遠(yuǎn)程遙控,無線鼠標(biāo)功能,點(diǎn)擊相應(yīng)按鈕即可進(jìn)入相關(guān)功能界面。登陸模塊也在該界面內(nèi),注冊以后,輸入用戶名密碼即可與同時(shí)在線的好友發(fā)起會話或者進(jìn)行文件傳輸,也可以選擇其他功能,進(jìn)入相關(guān)子界面。啟動后界面如圖4-1所示。圖4-1啟動界面圖4-1啟動界面4.1用戶界面的設(shè)計(jì)從之前的需求分析可知,軟件主要有四大界面這里需要進(jìn)一步分析每個(gè)用戶界面中應(yīng)該包括哪些顯示內(nèi)容。這四個(gè)界面分別是聊天界面,文件選擇界面,遙控PPT界面和無線鼠標(biāo)界面。聊天界面有spinner,button,textview等控件,文件選擇界面主要是一個(gè)listview,遙控界面是五個(gè)按鈕,無線鼠標(biāo)是兩個(gè)button和一大片用于捕捉觸控操作的空白。除了無線鼠標(biāo)界面外所有界面均用同一個(gè)背景。無線鼠標(biāo)界面用的是一個(gè)灰色的背景。每一個(gè)界面,都有唯一的布局文件與之對應(yīng),該文件里面有各種布局方式,和各種資源文件如圖像、文字、顏色的引用,程序在運(yùn)行時(shí),可以通過代碼對各配置文件進(jìn)行讀取或修改。這樣就可以形成不同的可視化界面和炫麗的效果以及實(shí)現(xiàn)界面的動態(tài)改變。Android有五大布局,它們分別是FrameLayout(框架布局),LinearLayout(線性布局),AbsoluteLayout(絕對布局),RelativeLayout(相對布局),TableLayout(表格布局).以上布局用到的控件主要有文本框(TextView)、編輯框(EditText)、按鈕(Button)、列表視圖(ListView)以及對話框(Dialog)等[13]。4.1.1用戶界面的實(shí)現(xiàn)(1)功能選擇界面程序各個(gè)界面之間的跳轉(zhuǎn)用intent來實(shí)現(xiàn),在功能選擇界面添加功能選擇按鈕并為其添加監(jiān)聽器,當(dāng)發(fā)生點(diǎn)擊事件時(shí)跳轉(zhuǎn)到所需的界面,返回功能界面時(shí)使用同樣的方法。跳轉(zhuǎn)的主要代碼如下:btn_ppt=(Button)findViewById(R.id.btn_ppt);btn_ppt.setOnClickListener(newOnClickListener(){//添加監(jiān)聽器publicvoidonClick(Viewv){Intentit=newIntent(Date.this,ppt.class);startActivity(it); //實(shí)現(xiàn)跳轉(zhuǎn) Date.this.finish();//結(jié)束當(dāng)前界面(2)文件瀏覽界面的實(shí)現(xiàn)該界面的主體是一個(gè)listview和兩個(gè)按鈕,listview用來接收adapter傳過來的數(shù)據(jù)并顯示,listview的實(shí)現(xiàn)如下:<ListViewAndroid:id="@Android:id/list"http://控件IDAndroid:layout_width="fill_parent"http://控件寬度為填滿父控件Android:layout_height="330px"http://控件高度為330px></ListView>其余界面的實(shí)現(xiàn)與其相似,不再贅述。4.2遠(yuǎn)程遙控功能的實(shí)現(xiàn)當(dāng)程序切換到遠(yuǎn)程遙控界面時(shí),負(fù)責(zé)遙控電腦的activity啟動。根據(jù)用戶按鍵的不同向服務(wù)端發(fā)出不同的信息,服務(wù)端根據(jù)收到的信息執(zhí)行相關(guān)操作。用戶只需點(diǎn)擊按鈕就能對電腦進(jìn)行簡單控制。4.2.1遠(yuǎn)程遙控功能的設(shè)計(jì)原理當(dāng)手機(jī)與電腦處于同一局域網(wǎng)時(shí),可以通過socket進(jìn)行通信,傳遞信息??梢栽谑謾C(jī)端設(shè)置按不同的鍵發(fā)送不同的命令,通過socket傳到服務(wù)器端,服務(wù)器端執(zhí)行這些命令即可實(shí)現(xiàn)遠(yuǎn)程遙控功能。4.2.2關(guān)機(jī)功能的實(shí)現(xiàn)Java可以調(diào)用cmd命令行程序,而cmd命令中有一個(gè)定時(shí)關(guān)機(jī)的命令:”shutdown-s-t”可以讓手機(jī)端發(fā)送某一個(gè)特殊的信息,當(dāng)服務(wù)器收到該信息時(shí)執(zhí)行該命令則可實(shí)現(xiàn)關(guān)機(jī)。具體實(shí)現(xiàn)如下:建立sockettry{Socketsocket=null;socket=newSocket(ip,port);//建立socket需ip和端口手機(jī)端發(fā)送消息PrintWriterwriter=newPrintWriter(newBufferedWriter(newOutputStreamWriter(socket.getOutputStream(),"GBK")),true); socket.getOutputStream().write(msg.getBytes("GBK"));服務(wù)器端調(diào)用cmd命令行執(zhí)行收到的請求if(str.equals("2"))Runtime.getRuntime().exec("shutdown-s-t3600");//如果收到2就執(zhí)行關(guān)機(jī)操作。4.2.3PPT遙控功能的實(shí)現(xiàn)PPT遙控功能的實(shí)現(xiàn)與關(guān)機(jī)功能原理上極其相似,所不同的是,PPT遙控并沒有使用cmd命令行。而是使用了Java中的一個(gè)robot類。Java.awt.Robot類用于控制鼠標(biāo)和鍵盤,一旦你得到這種控制,你能夠通過你的Java代碼做與鼠標(biāo)和鍵盤任何類型的操作。這個(gè)類通常用于自動化測試,之后的無線鼠標(biāo)模塊也會用到它。PPT遙控的實(shí)現(xiàn),可以讓手機(jī)端按四個(gè)鍵發(fā)送四個(gè)不同的特殊信息,這里可以用case語句實(shí)現(xiàn),給每個(gè)按鈕添加監(jiān)聽器按不同按鈕發(fā)送不同信息:caseR.id.btnnextpage:{Stringmsg="3";SendMsg1(ip,port,msg);break;}caseR.id.btnlastpage:{Stringmsg="4";SendMsg1(ip,port,msg);}break;}caseR.id.btnstart:{……服務(wù)器端收到消息時(shí)先用if語句判斷收到的是什么命令然后調(diào)用robot類,執(zhí)行相關(guān)操作。例如,當(dāng)收到信息“3”時(shí),執(zhí)行的是按下鍵盤上的N鍵的操作,其代碼如下:elseif(str.equals("3"))Robotrobot=newRobot(); robot.keyPress(KeyEvent.VK_N);//按下N鍵robot.keyRelease(KeyEvent.VK_N);}//松開N鍵finally{}……其他操作與其類似,放映,上一頁,下一頁,結(jié)束放映分別對應(yīng)于鍵盤上的F5,P,N,Esc.這一界面的顯示結(jié)果如圖4-2所示。圖4-2遙控界面圖4-2遙控界面若點(diǎn)下關(guān)機(jī)則電腦將在60秒內(nèi)關(guān)閉,如圖4-3所示。圖4-3關(guān)機(jī)界面圖4-3關(guān)機(jī)界面4.3無線鼠標(biāo)功能的實(shí)現(xiàn)無線鼠標(biāo)要求在手機(jī)端觸摸屏幕時(shí)電腦端的光標(biāo)按相同的軌跡移動,并實(shí)現(xiàn)鼠標(biāo)點(diǎn)擊事件,點(diǎn)擊事件并不是直接在屏幕上點(diǎn)擊,而是在界面下方設(shè)置了兩個(gè)按鈕來發(fā)送點(diǎn)擊事件的命令。4.3.1無線鼠標(biāo)功能的設(shè)計(jì)原理Java中的robot類可以用于控制鼠標(biāo),Java程序?qū)崿F(xiàn)自動測試,自動演示功能,或者是其它的一些鼠標(biāo)和鍵盤控制的應(yīng)用。出于這樣的目的,自從JDK1.3開始,它就為我們提供了一個(gè)用來產(chǎn)生本機(jī)輸入事件的機(jī)器人類Java.awt.Robot.Robot為我們提供了以下這些功能:BufferedImagecreateScreenCapture(RectanglescreenRect)

createScreenCapture方法提供類似于鍵盤上的PrintScreen鍵的功能,將指定矩形區(qū)域內(nèi)的屏幕像素copy下來產(chǎn)生一個(gè)BufferedImage。我們可以將這個(gè)方法用在圖形程序中,或是用它來實(shí)現(xiàn)遠(yuǎn)端屏幕傳輸,可做成遠(yuǎn)端電腦監(jiān)控程序等。

voiddelay(intms)

用來將當(dāng)前的程序(thread)休眠(sleep)若干毫秒(ms)。可用來控制程序的延時(shí)。

ColorgetPixelColor(intx,inty)

取得給定屏幕坐標(biāo)像素位置的顏色值。

voidkeyPress(intkeycode)

voidkeyRelease(intkeycode)

這兩個(gè)方法的作用一看就知道是用來產(chǎn)生指定鍵的按鍵按下與抬起動作,相當(dāng)于Win32API的keyb_event函數(shù)??捎糜诔绦虻淖詣友菔尽y試等,PPT遙控功能就是通過該方法實(shí)現(xiàn)

voidmouseMove(intx,inty)

將鼠標(biāo)光標(biāo)移動到指定的屏幕坐標(biāo).可用于程序的自動演示、測試等.

voidmousePress(intbuttons)

voidmouseRelease(intbuttons)

voidmouseWheel(intwheelAmt)

上面的三種方法,產(chǎn)生指定鼠標(biāo)按鈕的按下,抬起,及滾輪動作.一樣也可用于程序的自動演示、測試等。以上就是Robot提供的實(shí)用的鍵盤鼠標(biāo)控制功能。4.3.2鼠標(biāo)移動功能的設(shè)計(jì)原理Robot類提供了一個(gè)有關(guān)鼠標(biāo)移動控制的方法voidmouseMove(intx,inty),可以將鼠標(biāo)光標(biāo)移動到指定的區(qū)域。其基本原理是手機(jī)端捕獲位移方向和距離,將其傳到服務(wù)器端,服務(wù)器端根據(jù)該位移移動相同的距離。手機(jī)端的mouseview是指針移動區(qū)域publicMouseView(Contextcontext,AttributeSetattrs){super(context,attrs);msg=newMsgInfo();msg.setX(0);msg.setY(0);}手機(jī)端對觸摸事件的捕獲:caseMotionEvent.ACTION_MOVE:x=(int)event.getX();//獲取當(dāng)前位置橫坐標(biāo)y=(int)event.getY();//獲取當(dāng)前位置縱坐標(biāo)mouseView.getMsg().setX(x);//移動后的橫坐標(biāo)mouseView.getMsg().setY(y);//移動后的縱坐標(biāo)distanceX=x-oldX;//移動距離distanceY=y-oldY;//移動距離oldX=x;//把當(dāng)前位置當(dāng)做初始位置oldY=y;DatagramPacket(msgString.getBytes(),msgString.length(),addr,2011;try{client.send(outPacket);//將位移事件的坐標(biāo)變化發(fā)到服務(wù)器端服務(wù)器端收到信息后,根據(jù)收到位移量的大小移動相同的距離:PointmousePoint=MouseInfo.getPointerInfo().getLocation();System.out.println("x:"+x+"y:"+y);robot.mouseMove(mousePoint.x+x,mousePoint.y+y);}//鼠標(biāo)指針移動。4.3.3鼠標(biāo)點(diǎn)擊功能的設(shè)計(jì)原理在無線鼠標(biāo)界面下方有兩個(gè)設(shè)置了監(jiān)聽器的按鈕,分別對應(yīng)鼠標(biāo)左鍵和右鍵的點(diǎn)擊事件。當(dāng)點(diǎn)擊按鈕時(shí),服務(wù)端執(zhí)行鼠標(biāo)單擊操作。當(dāng)鼠標(biāo)鍵按下時(shí)發(fā)送一條信息到服務(wù)端,服務(wù)端執(zhí)行左鍵按下操作,當(dāng)鼠標(biāo)鍵松開時(shí),服務(wù)器執(zhí)行鼠標(biāo)左鍵松開操作。rightBtn=(Button)findViewById(R.id.rightButton);//得到兩個(gè)按鈕leftBtn.setOnTouchListener(newOnTouchListener(){//為左鍵設(shè)置監(jiān)聽器publicbooleanonTouch(Viewv,MotionEventevent){//鼠標(biāo)點(diǎn)擊事件caseMotionEvent.ACTION_DOWN://鼠標(biāo)按下操作clientSocket.sendMsg(addr,port,msg);//發(fā)往服務(wù)端的信息caseMotionEvent.ACTION_UP://鼠標(biāo)松開操作clientSocket.sendMsg(addr,port,msg);//發(fā)往服務(wù)端的信息右鍵點(diǎn)擊事件的設(shè)置與左鍵一樣,即添加監(jiān)聽器,在按下按鍵和松開按鍵的時(shí)候分別發(fā)送不同的信息到服務(wù)端,服務(wù)端根據(jù)收到的信息進(jìn)行右鍵點(diǎn)擊和松開操作。無線鼠標(biāo)的用戶界面如圖4-4所示。圖4-4無線鼠標(biāo)界面圖4-4無線鼠標(biāo)界面4.4在線聊天功能的實(shí)現(xiàn)在線聊天模塊主要是實(shí)現(xiàn)的功能是單個(gè)用戶之間的對話,多個(gè)用戶同時(shí)對話,以及文件傳輸功能。其主要原理還是先建立socket連接,然后在此基礎(chǔ)上進(jìn)行的一系列操作。4.4.1用戶注冊功能的實(shí)現(xiàn)用戶注冊時(shí)需要填寫帳號、密碼、昵稱、性別、地址、愛好和選擇頭像。若信息填寫不夠完善,系統(tǒng)會提示補(bǔ)全遺漏的信息。注冊界面的實(shí)現(xiàn)主要是幾個(gè)EditText和兩個(gè)按鈕,還有信息不完善時(shí)彈出的Toast控件,為什么叫它Toast呢?因?yàn)門oast在英文里的意思是烤面包機(jī),當(dāng)面包烤熟后面包會從機(jī)器里彈出來,這個(gè)和Toast控件在屏幕上突然彈出來很類似,因此就把這個(gè)控件叫做Toast。publicvoidInit(){name_edittext=(EditText)findViewById(R.id.editText1);//添加控件repwd_edittext.addTextChangedListener(newrepwdTextChangedListener());//設(shè)置監(jiān)聽器repwd_edittext.setOnFocusChangeListener(newrepwdOnFocusChangeListener());user.setId(id_edittext.getText().toString());user.setName(name_edittext.getText().toString());//得到用戶所填信息,轉(zhuǎn)換成string類型然后傳到服務(wù)端Intentit=newIntent(regited.this,Date.class);startActivity(it);//啟動activityregited.this.finish();這里特別要強(qiáng)調(diào)的是Intent的使用,Intent主要作用是實(shí)現(xiàn)各個(gè)activity之間的跳轉(zhuǎn)并傳參。Intent負(fù)責(zé)對應(yīng)用中一次操作的動作、動作涉及數(shù)據(jù)、附加數(shù)據(jù)進(jìn)行描述,Android則根據(jù)此Intent的描述,負(fù)責(zé)找到對應(yīng)的組件,將Intent傳遞給調(diào)用的組件,并完成組件的調(diào)用。因此,Intent在這里起著一個(gè)媒體中介的作用,專門提供組件互相調(diào)用的相關(guān)信息,實(shí)現(xiàn)調(diào)用者與被調(diào)用者之間的解耦[14]。例如,Intentit=newIntent(regited.this,Date.class)括號中第一個(gè)參數(shù)表示本身所在的activity,第二個(gè)參數(shù)表示要跳轉(zhuǎn)到的activity,當(dāng)要跳轉(zhuǎn)到的activity與本身所在的activity不在一個(gè)包時(shí),被跳轉(zhuǎn)到的activity在manifest文件中進(jìn)行注冊時(shí)要寫明它的絕對路徑,加入需要跳轉(zhuǎn)到的activity所在包的路徑。否則系統(tǒng)會因?yàn)檎也坏揭D(zhuǎn)的activity而出錯(cuò)奔潰。注冊界面如圖4-5所示。圖4-5注冊界面圖4-5注冊界面4.4.2聊天功能實(shí)現(xiàn)聊天模塊的亮點(diǎn)在于spinner的使用,使用spinner可輕松區(qū)分單個(gè)會話與所有人會話,點(diǎn)擊spinner的下拉菜單即可顯示所有在線好友并可選擇其中一個(gè)發(fā)起單個(gè)會話或者選擇發(fā)給所有人進(jìn)行群聊。點(diǎn)擊所有人時(shí),系統(tǒng)會將用戶發(fā)的消息廣播給所有其他在線用戶。Spinner的使用如下:<SpinnerAndroid:id="@+id/spinner1"Android:layout_width="wrap_content"Android:layout_height="wrap_content"Android:layout_weight="0.98"/>//在.xml文件中對spinner進(jìn)行注冊publicvoidsp_handle(Stringnames[]){sp1=(Spinner)findViewById(R.id.spinner1);//得到spinner控件ArrayAdapter<String>adapter=newArrayAdapter<String>(this,Android.R.layout.simple_spinner_item,names);//使用adapter傳參adapter.setDropDownViewResource(Android.R.layout.simple_spinner_dropdown_item);//設(shè)置按下spinner之后的操作sp1.setAdapter(adapter);sp1.setOnItemSelectedListener(newOnItemSelectedListener(){除spinner外其他核心代碼就是獲取用戶要發(fā)送的信息,以及接收端接收信息。得到用戶輸入的信息用.getText()方法即可實(shí)現(xiàn)Stringsend_info=et_sendinfo.getText().toString();//獲取發(fā)送的消息intitem=sp1.getSelectedItemPosition();//使用spinner選擇發(fā)送消息的對象ob.writeUTF(info);//以流的形式將信息發(fā)送出去,其發(fā)送界面如圖4-6所示。圖4-6發(fā)送界面圖4-6發(fā)送界面4.4.3發(fā)送接收文件功能實(shí)現(xiàn)文件傳輸時(shí)可以選擇好友中的一個(gè)來進(jìn)行傳輸。傳輸流程是先由發(fā)送方將文件上傳到服務(wù)端,再由服務(wù)端轉(zhuǎn)發(fā)到接收方,接收方收到后保存在指定文件夾中。(1)文件發(fā)送功能的實(shí)現(xiàn)首先要實(shí)現(xiàn)的是SD卡中文件的顯示,實(shí)現(xiàn)方法是在activity中添加一個(gè)listview控件,在listview中還需添加表示文件和文件夾的圖片控件,系統(tǒng)讀取SD卡中文件的信息(文件命,目錄等信息),然后由adapter將信息傳遞到listview并顯示,Adapter是連接后端數(shù)據(jù)和前端顯示的適配器接口,是數(shù)據(jù)和UI(View)之間一個(gè)重要的紐帶。并在listview上添加監(jiān)聽器,點(diǎn)擊文件名時(shí)即選擇該文件,再點(diǎn)擊屏幕下方的確定就將文件傳到了服務(wù)器端,再由服務(wù)器轉(zhuǎn)發(fā)給接收端[15]。選擇文件界面如圖4-7所示。publicViewgetView(intposition,ViewconvertView,ViewGroupparent){ViewHolderholder;//用holder傳參if(convertView==null){convertView=mInflater.inflate(R.layout.file_row,null);holder=newViewHolder();//指定布局文件holder.text=(TextView)convertView.findViewById(R.id.text);holder.icon=(ImageView)convertView.findViewById(R.id.icon);convertView.setTag(holder);圖4-7文件傳輸界面圖4-7文件傳輸界面(2)文件接收功能的實(shí)現(xiàn)接收方在收到文件時(shí)會彈出toast詢問是否接收,若選擇接收則與服務(wù)端建立連接,由服務(wù)端將發(fā)送方發(fā)的文件轉(zhuǎn)發(fā)給接收方。if(info[2].equals("FILE"))//判斷是否傳送的是文件如果是文件則建立連接newAlertDialog.Builder(Sendmsg.this)//建立連接..setItems(items,newDialogInterface.OnClickListener(){publicvoidonClick(DialogInterfacedialog,intitem){//在彈出的toast上添加監(jiān)聽器switch(item){case0:File_tools.download(info[3],info[0],File_tools.get_user_dir());//文件存放路徑。第5章結(jié)論與展望經(jīng)過一個(gè)學(xué)期的學(xué)習(xí),以及對手機(jī)通信控制軟件的編寫使我對Android這門語言有了更深的體會。本次軟件開發(fā)主要實(shí)現(xiàn)了聊天,文件傳輸,遙控電腦,無線鼠標(biāo)四個(gè)模塊,各模塊間層次分明,布局合理,能滿足用戶的一般需求。本次軟件開發(fā)用到的主要工具是Eclipse,程序一般在Android2.2版本以上運(yùn)行。在編程過程中有如下心得體會:剛開始接觸Android感覺到它很有意思,在界面開發(fā)上和web也可以形成了相通的架構(gòu),更加方便,視覺上也是非常的酷,在前期我通過的大量的AndroidSDK開發(fā)范例大全中的例子以及Android提供的APIDEMOS進(jìn)行學(xué)習(xí),盡管例子之間的連接比較零散,不過通過這些例子的學(xué)習(xí)我可以學(xué)習(xí)到了很多和以前Java上相通的思想。通過半個(gè)學(xué)期的Android學(xué)習(xí),基本掌握了Android應(yīng)用程序開發(fā)的一般流程。對常用控件基本掌握其用法,對其事件的監(jiān)聽方法也基本掌握。學(xué)習(xí)Android不僅是對前沿開發(fā)技術(shù)的了解,也是對編程知識的一次提升。通過學(xué)習(xí)Android的控件、布局、Activity、Service等一系列基礎(chǔ)知識,對整個(gè)Android的開發(fā)有了大致的了解。例如:要的布局(或者控件),在學(xué)習(xí)界面中,我發(fā)現(xiàn)Android為我們提供了很好的類似反射機(jī)制,通過Layout文件夾下的配置文件,可以快速的形成界面,在配置文件可以設(shè)置屬性或者樣式都是很快捷方便。對比較特殊的界面也可以通過處理嵌入到指定的界面,同樣你可以通過Java代碼直接創(chuàng)建View進(jìn)行添加,不過這種方式比較復(fù)雜。對一些點(diǎn)擊、選中、按鍵等處理的事件,界面之間的

跳轉(zhuǎn)Intent管理,通過Bundle對數(shù)據(jù)在界面之間進(jìn)行傳輸。在手機(jī)交互式通信服務(wù)中,學(xué)習(xí)了Android手機(jī)之間進(jìn)行短信發(fā)送、廣播、對廣播的監(jiān)聽、服務(wù)等,在Service類中沒有context,可以通過Handler來每秒反復(fù)運(yùn)行,自動送出系統(tǒng)廣播信息,同時(shí)在這里我們也知道可以設(shè)計(jì)一個(gè)常用的變量類,設(shè)計(jì)一個(gè)當(dāng)前的CurrentActivity這個(gè)變量進(jìn)行控制,進(jìn)行處理。在Android編程過程中鞏固熟悉了Java的編程。由于Android應(yīng)用程序的開發(fā)離不開Java的支持,所以基礎(chǔ)的Java知識是必須的。Android系統(tǒng)是基于Linux的手機(jī)操作系統(tǒng)平臺,要深入系統(tǒng)的學(xué)習(xí)Android,不僅僅是有Java和Android應(yīng)用開發(fā),必須要具備Linux,C/C++高級編程才能深入的涉及AndroidFramework和Android內(nèi)核開發(fā)。成為Android開發(fā)的高素質(zhì)人才。所以,在后續(xù)對Android的學(xué)習(xí)中可能會看一些較底層的書籍。要想開發(fā)一些好的應(yīng)用程序,還需要更多的知識支持。在做實(shí)習(xí)最后的項(xiàng)目時(shí),遇到了很多平時(shí)沒有遇到或者沒有特別關(guān)注的問題,如常見的Activity忘記注冊,對SD卡存取需要權(quán)限,在寫SQL語句時(shí)細(xì)微的錯(cuò)誤就可能導(dǎo)致程序運(yùn)行錯(cuò)誤。這些問題只有自己在實(shí)際開發(fā)中才能體會到并且解決,并且在解決后可以長時(shí)間的記住。通過Android的學(xué)習(xí),在大四畢業(yè)前,又掌握了一項(xiàng)新的前沿的開發(fā)技能,也有了更多的發(fā)展方向,這在以后的找工作的過程中無疑為我們增加了砝碼,也可以成為我們的一項(xiàng)興趣愛好,可以根據(jù)我們自己的需要設(shè)計(jì)一些小的程序。大部分預(yù)想的功能都已經(jīng)實(shí)現(xiàn),甚至有意外地收獲,實(shí)現(xiàn)了無線鼠標(biāo)。但遠(yuǎn)程桌面的功能暫時(shí)還沒有實(shí)現(xiàn),在沒有連接服務(wù)器的時(shí)候進(jìn)行相關(guān)操作容易使系統(tǒng)奔潰??傊耀@得了很多東西,提高了自己的編程技巧和編程方法,并且認(rèn)識了Android應(yīng)用程序的開發(fā),以及加深了對Java的認(rèn)識。參考文獻(xiàn)[1]熊剛.基于Android的智能手機(jī)的設(shè)計(jì)與實(shí)現(xiàn)[D].武漢:武漢理工大學(xué),2010.[2]楊豐盛.Android應(yīng)用開發(fā)揭秘[M].北京:機(jī)械工業(yè)出版社,2010.1.[3]JoshuaBloch.EffectiveJava:SecondEdition[M].Addison-Wesley,2008.[4]黨李成.基于GoogleAndroid智能手機(jī)平臺的研究與應(yīng)用[D].安徽:安徽大學(xué),2011.[5]ConderS,DarceyL.Android移動應(yīng)用開發(fā)[M].北京:人民郵電出版社,2010.[6]BruceEckel.ThinkinginJava[M].PrenticeHallPTR,2002.[7]E2ECloud工作室.深入淺出GoogleAndroid[M].北京:人民郵電出版社,2009-08-1.[8]孟索林,王世江.GoogleAndroid研發(fā)入門指南[M].北京:北京郵電出版社,2009.[9]JoshuaBloch.EffectiveJava:SecondEdition[M].Addison-Wesley,2008.[10]余志龍.GoogleAndroidSDK開發(fā)范例大全[M].北京:人民郵電出版社,2009.[11]周恒民譯.JavaTCP/IPSocket編程(原書第2版)[M].北京:機(jī)械工業(yè)出版,2009.[12](美)梁勇著,李娜譯.Java語言程序設(shè)計(jì):基礎(chǔ)篇(原書第8版)[M].北京:機(jī)械工業(yè)出版社,2011.[13]KathySierra,BertBates,BertBates.HeadFirstJava2ndEdition[M].O'ReillyMedia,2005.[14](美)李偉夢著,何晨光,李洪剛譯.Android編程入門經(jīng)典(移動與嵌入式開發(fā)技術(shù))[M].北京:清華大學(xué)出版社,2012.[15](英)哈諾德著,朱濤江,林劍譯.Java網(wǎng)絡(luò)編程(第3版)——O’ReillyJava系列[M].北京:中國電力出版社,2005.致謝隨著這個(gè)學(xué)期的結(jié)束,我們的畢業(yè)設(shè)計(jì)也進(jìn)入了收尾階段,在鄭麗娟老師的幫助下我順利的完成了畢業(yè)設(shè)計(jì)。本設(shè)計(jì)對于我來說是一個(gè)完全嶄新的領(lǐng)域,以前從來沒有接觸過,在了解上便花了不少時(shí)間。所以非常感謝鄭老師對于我在整個(gè)畢業(yè)設(shè)計(jì)過程中給予的幫助。在設(shè)計(jì)過程中難免會一些懈怠,非常感謝導(dǎo)師在此過程中的悉心督促與指導(dǎo)。還要感謝其他老師在每次檢查時(shí)提出的建議,正是這些建議,才使得設(shè)計(jì)不斷地接近預(yù)期和實(shí)用。最后要感謝一起做畢業(yè)設(shè)計(jì)的同學(xué)們,在設(shè)計(jì)過程中大家一起相互幫助,相互鼓勵(lì),共同完成大學(xué)四年中的最后一次考試。在設(shè)計(jì)過程中難免會遇到各種問題,不斷解決各種問題就是對自己能力的提升。在完成畢業(yè)設(shè)計(jì)期間我學(xué)會了結(jié)合個(gè)人經(jīng)驗(yàn)以及他人的建議找到一種適合自己的方案來解決問題。這一過程讓我獲得了很多快樂。最后真摯的感謝所有曾經(jīng)幫助過我的人附錄A外文翻譯英文外文出處:MarkMurphy.BeginningAndroid2Chapter33MappingwithMapViewandMapActivityOneofGoogle'smostpopularservices-aftersearchofcourse-isGoogleMaps,whichletsyoufindeverythingfromthenearestpizzaparlortodirectionsfromNewYorkCitytoSanFrancisco(only2,905miles!),alongwithsupplyingstreetviewsandsatelliteimagery.MostAndroiddevices,notsurprisingly,integrateGoogleMaps.Forthosethatdo,thereisamappingactivityavailabletousersdirectlyfromthemainAndroidlauncher.Morerelevanttoyou,asadeveloper,areMapViewandMapActivity,whichallowyoutointegratemapsintoyourownapplications.Notonlycanyoudisplaymaps,controlthezoomlevel,andallowpeopletopanaround,butyoucantieinAndroid'slocation-basedservices(coveredinChapter32)toshowwherethedeviceisandwhereitisgoing.Fortunately,integratingbasicmappingfeaturesintoyourAndroidprojectisfairlyeasy.Andthereisalsoafairbitofpoweravailabletoyou,ifyouwanttogetfancy.Terms,NotofEndearmentIntegratingGoogleMapsintoyourownapplicationrequiresagreeingtoafairlylengthysetoflegalterms.Thesetermsincludeclausesthatyoumayfindunpalatable.IfyouareconsideringGoogleMaps,pleasereviewthesetermscloselytodetermineifyourintendedusewillnotrunafoulofanyclauses.Youarestronglyrecommendedtoseekprofessionallegalcounselifthereareanypotentialareasofconflict.Also,keepyoureyespeeledforothermappingoptions,basedonothersourcesofmapdata,suchasOpenStreetMap().PilingOnAsofAndroidl.5,GoogleMapsisnotstrictlypartoftheAndroidSDK.Instead,itispartoftheGoogleAPIsadd-on,anextensionofthestockSDK.TheAndroidadd-onsystemprovideshooksforothersubsystemsthatmaybepartofsomedevicesbutnotothers.NOTE:GoogleMapsisnotpartoftheAndroidopensourceproject,andundoubtedlytherewillbesomedevicesthatlackGoogleMapsduetolicensingissues.Forexample,atthetimeofthiswriting,theArchos5AndroidtabletdoesnothaveGoogleMaps.Byandlarge,thefactthatGoogleMapsisinanadd-ondoesnotaffectyourday-to-daydevelopment.However,bearinmindthefollowing:YouwillneedtocreateyourprojectwithasuitabletargettoensuretheGoogleMapsAPIswillbeavailable.TotestyourGoogleMapsintegration,youwillalsoneedanAVDthatsupportstheGoogleMapsAPI.TheBareBonesFarandawaythesimplestwaytogetamapintoyourapplicationistocreateyourownsubclassofMapActivity.LikeListActivity,whichwrapsupsomeofthesmartsbehindhavinganactivitydominatedbyaListView,MapActivityhandlessomeofthenuancesofsettingupanactivitydominatedbyaMapView.InyourlayoutfortheMapActivitysubclass,youneedtoaddanelementnamed,atthetimeofthiswriting,com.google.Android.maps.MapView.Thisisthe"longhand"waytospelloutthenamesofwidgetclasses,byincludingthefullpackagenamealongwiththeclassname.ThisisnecessarybecauseMapViewisnotinthecom.google.Android.widgetnamespace.YoucangivetheMapViewwidgetwhateverAndroid:idattributevalueyouwant,plushandleallthelayoutdetailstohaveitrenderproperlyalongsideyourotherwidgets.However,youdoneedtohavethesetwoitems:Android:apiKey,whichinproductionwillneedtobeaGoogleMapsAPIkeyAndroid:clickable="true",ifyouwantuserstobeabletoclickandpanthroughyourmapForexample,fromtheMaps/NooYawksampleapplication,hereisthemainlayout:<?xmlversion="l.0"encoding="utf-8"?><RelativeLayoutxmlns:Android=""Android:layout_width="fill_parent"Android:layout_height="fill_parent"><com.google.Android.maps.MapViewAndroid:id="@+id/map"Android:layout_width="fill_parent"Android:layout_height="fill_parent"Android:apiKey="<YOUR_API_KEY>"Android:clickable="true"/></RelativeLayout>We'llcoverthatmysteriousapiKeylaterinthischapter,inthe"TheKeytoItAll"section.Inaddition,youwillneedacoupleofextrathingsinyourAndroidManifest.xmlfile:TheINTERNETandACCESS_COARSE_LOCATIONpermissions(thelatterforusewiththeMyLocationOverlayclass,describedlaterinthischapter)Insideyour<application>,a<uses-library>elementwithAndroid:name="com.google.Android.maps",toindicateyouareusingoneoftheoptionalAndroidAPIsHereistheAndroidManifest.xmlfileforNooYawk:<?xmlversion=”1.0”encoding=”utf-8”?><manifestxmlns:Android=””package="monsware.Android.maps”><uses-permissionAndroid:name=”Android.permission.INTERNET”/><uses-permissionAndroid:name=”Android.permission

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論