版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
湖南工程學(xué)院畢業(yè)設(shè)計(論文)緒論研究背景以及意義隨著科學(xué)技術(shù)的發(fā)展,物聯(lián)網(wǎng)已成為當(dāng)今信息技術(shù)當(dāng)中一門炙手可熱的話題。物聯(lián)網(wǎng)是指通過各種信息傳感設(shè)備實時采集各種需要的信息并與互聯(lián)網(wǎng)結(jié)合形成的一個大型網(wǎng)絡(luò)。物聯(lián)網(wǎng)的目的在于實現(xiàn)物與物、物與人以及所有的物品與網(wǎng)絡(luò)的連接,以方便識別、管理和控制。物聯(lián)網(wǎng)由感知層、網(wǎng)絡(luò)層和應(yīng)用層三層組成。感知層由各種傳感器以及傳感器網(wǎng)關(guān)構(gòu)成,其作用在于識別物體和采集信息。條形碼技術(shù)是集條碼理論、光電技術(shù)、計算機(jī)技術(shù)、通信技術(shù)等技術(shù)于一體的綜合性技術(shù)。它具有輸入速度快、可靠性高、采集信息量大、成本低等特點,近年來發(fā)展十分迅速,在國際上廣泛應(yīng)用于商品流通、物流倉儲、信息服務(wù)等各個領(lǐng)域,極大地提高了生產(chǎn)效率。從尋呼機(jī)到目前3G手機(jī)的面市,中國人已經(jīng)習(xí)慣了手中的移動手機(jī)不停地更新變化。也正是由于這些現(xiàn)實因素,本課題以理論為基礎(chǔ),方便人們生活,提高工作效率為目的而選擇本課題。QR碼具有可靠性高、信息容量大、保密防偽性高、抗損性強、全方位和超高速識讀等優(yōu)點,而且能高效的表示中國漢字,適于在中國的發(fā)展。隨著信息技術(shù)的發(fā)展,條形碼識別設(shè)備日益智能化、網(wǎng)絡(luò)化和微形化??梢詰?yīng)用于物流、電子商務(wù)、安防、防偽、身份認(rèn)證、商品流通、廣告宣傳等領(lǐng)域。另一方面,Android已成為嵌入式領(lǐng)域尤其是手持終端中第一大嵌入式操作系統(tǒng)。QR碼是矩陣式二維條形碼的代表,它除了具有一維條碼和其它二維條碼所具有的信息容量大、可靠性高等特點外,還具有全方位識讀、能有效表示中、英、簡、繁、日、韓等文字、超高速識讀以及超強的糾錯能力和抗干擾能力等特性。適合于我國的國情以及漢字編碼的特點。綜上,QR碼在手機(jī)中的應(yīng)用有著良好的前景和潛力它將有效地推動移動增值業(yè)務(wù)的快速增長有利于為我國信息產(chǎn)業(yè)的發(fā)展和經(jīng)濟(jì)建設(shè)帶來社會及經(jīng)濟(jì)效益。因此研究基于Android嵌入式平臺下的條碼識別有著非常重要的現(xiàn)實意義。國內(nèi)外研究與發(fā)展現(xiàn)狀條碼技術(shù)是在信息技術(shù)基礎(chǔ)上發(fā)展起來的一門集編碼、印刷、識別、數(shù)據(jù)采集與處理為一體的綜合性技術(shù)。目前,由于工業(yè)中產(chǎn)生的數(shù)據(jù)信息量不斷增加,傳統(tǒng)的一維條碼技術(shù)已經(jīng)不能滿足社會的需求,所以二維碼技術(shù)得到廣泛應(yīng)用。隨著內(nèi)置攝像頭手機(jī)的逐漸普及,手機(jī)作為一種數(shù)據(jù)采集設(shè)備使得二維條碼的掃描和識別變得更加便捷。加密算法通過密鑰將明文變?yōu)橐欢尾豢芍苯幼x取的代碼。為了使QR碼的識別更加具有保密性,在為企業(yè)編寫的物料智能采制系統(tǒng)中采用DES算法對數(shù)據(jù)碼字進(jìn)行加密。我國的條碼自動識別技術(shù)起步比較晚,尤其是二維條碼,但是其發(fā)展很快。目前,二維條碼以其特有的技術(shù)優(yōu)勢在我國的許多領(lǐng)域得到了廣泛的應(yīng)用,并且展現(xiàn)出良好的發(fā)展和應(yīng)用前景。在二維條碼的技術(shù)研究與開發(fā)方面,為解決我國漢字表示困難這一難題,我國在進(jìn)入新世紀(jì)后制定了國家標(biāo)準(zhǔn)快速響應(yīng)矩陣碼(即QR碼),并在QR碼制中加入了特有的中國漢字的編碼模式,大大促進(jìn)了二維條碼在我國的應(yīng)用。二維條碼在應(yīng)用中也存在著一些問題,如漢字表示效率低、識別設(shè)備價格過高等等,這些不利因素不同程度的制約著二維條碼技術(shù)在我國向縱深發(fā)展。為解決這些問題,中國物品編碼中心與許多高校和企業(yè)開展了新碼制及國產(chǎn)識別設(shè)備的研究。手機(jī)二維條碼技術(shù)在國外已經(jīng)是一種比較成熟的技術(shù),被廣泛應(yīng)用于日常生活中的信息快速交換領(lǐng)域,如手機(jī)上網(wǎng)、電子門票等,這些場景在亞太區(qū)的日本、韓國和我國的香港地區(qū)得到了大規(guī)模的應(yīng)用。手機(jī)二維條碼在我國的應(yīng)用比較晚,最初是由中國移動于2006年8月開始推出的,首先在北京和上海兩地進(jìn)行測試,然后逐漸推廣到全國,從此二維條碼成為了業(yè)界關(guān)注的焦點。目前,我國在該技術(shù)領(lǐng)域方面的應(yīng)用都還還遠(yuǎn)談不上成熟,國內(nèi)企業(yè)應(yīng)該抓住商機(jī),加大投入力度,推動整個行業(yè)的發(fā)展。二維條碼是一種由黑白相間的模塊按照一定規(guī)律在水平和垂直兩個方向上組成的幾何圖形,利用這些黑白相間的模塊來達(dá)到記錄信息的目的"在代碼編制上,二維條碼中的黑白模塊與計算機(jī)邏輯中的0,1相互對應(yīng),使用若干個二進(jìn)制相對應(yīng)的幾何圖形來表示數(shù)據(jù)信息,通過圖像輸入設(shè)備或光電掃描設(shè)備自動識讀便可以實現(xiàn)信息的自動化處理。和其他自動化識別技術(shù)相比,二維條碼有其獨特的優(yōu)勢。在條碼的應(yīng)用方面,美國、日本、韓國等國家已經(jīng)將二維條碼技術(shù)應(yīng)用于對各類證件、報表、票據(jù)、郵寄包裹!生產(chǎn)線的管理等;在標(biāo)準(zhǔn)化研究方面,國際標(biāo)準(zhǔn)化組織/國際電工委員會定了DF417、DataMatrix、Maxicode、QR碼等二維條碼的國際標(biāo)準(zhǔn);在條碼識讀設(shè)備的開發(fā)研制和生產(chǎn)方面,美國的SY入4BOL!Zebra,日本的OPtion等設(shè)備制造商生產(chǎn)的識讀設(shè)備和符號生成設(shè)備已經(jīng)廣泛應(yīng)用于各類應(yīng)用系統(tǒng)??梢哉f,基于Android平臺的二維碼識別的相關(guān)軟件的出爐,方便了廣大手機(jī)消費者的生活,為用戶行為提供了便捷性。因此,二維碼識別技術(shù)在安卓手機(jī)上應(yīng)用其前景明朗,對相關(guān)理論及科學(xué)技術(shù)的研究的影響意義也十分深遠(yuǎn)。1.3論文主要研究內(nèi)容該軟件基于Android開發(fā)平臺在windows環(huán)境下采用面向?qū)ο蠓椒ㄟM(jìn)行開發(fā)。嚴(yán)格按照軟件工程思想,按照需求分析、總體設(shè)計、詳細(xì)設(shè)計、實現(xiàn)和測試分階段完成整個系統(tǒng)的設(shè)計與實現(xiàn)。首先,進(jìn)行需求分析和可行性分析。然后,在概要設(shè)計中建立了系統(tǒng)功能模型,并在詳細(xì)設(shè)計階段對圖片處理過程進(jìn)行設(shè)計。最后,對軟件進(jìn)行編碼和測試。該軟件實現(xiàn)對二維碼的掃描與識別,具有很強的實用性。設(shè)計實現(xiàn)的主要功能應(yīng)包括:能夠通過攝像頭掃描識別QRCODE二維碼。若二維碼隱藏的是網(wǎng)址信息,那么調(diào)用手機(jī)瀏覽器瀏覽該網(wǎng)站。若二維碼隱藏的是網(wǎng)址信息,那么調(diào)用手機(jī)撥打電話功能。若二維碼隱藏的普通文本信息,那么顯示該文本信息即可。二維碼其他拓展功能。課題相關(guān)理論與技術(shù)2.1二維碼技術(shù)原理二維碼作為一種全新的條碼技術(shù),已被廣泛應(yīng)用于國防、醫(yī)療保健、商業(yè)、金融、后勤管理等領(lǐng)域。由于QRCode二維碼信息容量大,保密性能好,并且成本低,適合我國人口眾多,計算機(jī)建設(shè)還不是很完善的國情,因此在我國有著十分廣闊的應(yīng)用前景??梢灶A(yù)見,二維條碼技術(shù)在我國的推廣上應(yīng)用必將為我國信息產(chǎn)業(yè)的發(fā)展和現(xiàn)代化的經(jīng)濟(jì)建設(shè)帶來可觀的社會效益和經(jīng)濟(jì)效益。二維碼(2-dimensionalbarcode),是用某種特定的幾何圖形按一定規(guī)律在平面(二維方向上)分布的黑白相間的圖形記錄數(shù)據(jù)符號信息的。在許多種類的二維條碼中,常用的碼制有:DataMatrix、MaxiCode、Aztec、QRCode、Vericode、PDF417、Ultracode、Code49、Code16K等。1)堆疊式/行排式二維條碼,如,Code16K、Code49、PDF417等。2)矩陣式二維碼,最流行莫過于QRCODE。QR(Quick-Response)code是被廣泛使用的一種二維碼,解碼速度快。它可以存儲多用類型。現(xiàn)在使用的QRCODE二位條形碼的規(guī)范一直遵循OMIA(OpenMobileInternetAlliance)的規(guī)范,QRCode基本結(jié)構(gòu)如圖2.1所示。圖2.1QRCode基本結(jié)構(gòu)其中:位置探測圖形、位置探測圖形分隔符和定位圖形用于對二維碼的定位;對每個QR碼來說,位置都是固定存在的,只是大小規(guī)格會有所差異;規(guī)格確定,校正圖形的數(shù)量和位置也就確定了;格式信息表示改二維碼的糾錯級別,分為L、M、Q、H;版本信息即二維碼的規(guī)格,QR碼符號共有40種規(guī)格的矩陣(一般為黑白色),從21x21(版本1),到177x177(版本40),每一版本符號比前一版本每邊增加4個模塊。數(shù)據(jù)和糾錯碼字實際保存的二維碼信息和糾錯碼字(用于修正二維碼損壞帶來的錯誤)。簡要的解碼過程:二維碼圖像->圖像解析出01編碼->按照規(guī)則解釋為相應(yīng)的內(nèi)容。2.2Android手機(jī)平臺2.2.1Android簡介Android是“機(jī)器人”的意思,是Google公司于2007年11月5日發(fā)布的一個基于Linux平臺的開源手機(jī)操作系統(tǒng)。該系統(tǒng)由底層的Linux操作系統(tǒng)、中間件和核心應(yīng)用程序組成。Android應(yīng)用程序由強大的java語言編寫,也支持其他一些語言,如C、Perl等。Google于2007年11月5日發(fā)布了Android1.0手機(jī)操作系統(tǒng),號稱是首個為移動終端打造的真正開放和完整的移動軟件,后經(jīng)版本不斷更新,到現(xiàn)在最新版本是Android4.3。同日,Google宣布組建了一個全球性的聯(lián)盟組織。這一聯(lián)盟將會支持Google可能發(fā)布的手機(jī)操作系統(tǒng)或者應(yīng)用軟件,共同開發(fā)名為Android的開放源代碼的移動系統(tǒng)。開放手機(jī)聯(lián)盟包括手機(jī)制造商、手機(jī)芯片廠商和移動運營商幾類。目前,聯(lián)盟成員數(shù)量已經(jīng)超過80家。移動運營商包括中國移動、中國電信、中國聯(lián)通、美國SprintNextel、德國T-Moblile等,半導(dǎo)體制造商包括ARM、英特爾、高通等;電話制造商包括摩托羅拉、三星、LG、華為、HTC等。2.2.2Android平臺特點Android是一個專門針對移動設(shè)備的軟件集,它包括一個底層Linux操作系統(tǒng),中間層的中間件和上層的java應(yīng)用程序。Android平臺的開發(fā)特點如下:(1)應(yīng)用程序框架支持組件的重用與替換。這在之前的手機(jī)操作系統(tǒng)當(dāng)中是很難想象的。這意味著我們可以把系統(tǒng)中不喜歡的應(yīng)用程序替換掉,安裝我們喜歡的應(yīng)用程序。(2)Dalvik虛擬機(jī)專門為移動設(shè)備做了優(yōu)化。Android應(yīng)用程序?qū)⒂蒵ava編寫、編譯的類文件通過DX工具轉(zhuǎn)換成一種后綴名為.dex的文件來執(zhí)行。Dalvik虛擬機(jī)是基于寄存器的,相對于java虛擬機(jī)要快很多。(3)內(nèi)部集成瀏覽器基于開源的WebKit引擎。有了內(nèi)置的瀏覽器,這將意味著WAP應(yīng)用的時代即將結(jié)束,真正的移動互聯(lián)網(wǎng)時代已經(jīng)來臨,手機(jī)就是一臺“小電腦”,可以在網(wǎng)上隨意遨游。(4)優(yōu)化了圖形庫包括2D和3D圖形庫,3D圖形庫基于OpenGLES1.0。強大的圖形庫給游戲開發(fā)帶來福音。(5)SQList用作結(jié)構(gòu)化的數(shù)據(jù)存儲。(6)多媒體支持包括常用的音頻、視頻和靜態(tài)印象文件格式(如:MPEG4,H.264,MP3,AAC,AMR,JPG,PNG,GIF)。(7)GSM電話(8)藍(lán)牙,EDGE,3G,WIFI。(9)照相機(jī),GPS,指南針和加速計。(10)豐富的開發(fā)環(huán)境包括設(shè)備模擬器、調(diào)試工具,內(nèi)存及性能分析圖表和Eclipse集成開發(fā)環(huán)境插件。開發(fā)者完全可以訪問核心應(yīng)用程序所使用的API框架。該應(yīng)用程序架構(gòu)用來簡化組件軟件的重用,任何一個應(yīng)用程序都可以發(fā)布它的功能塊并且任何其他的應(yīng)用程序都可以使用其所發(fā)布的功能塊(不過的遵循框架的安全限制)。該應(yīng)用程序重用機(jī)制使得組件可以被用戶替換。以下所有的應(yīng)用程序都由一系列的服務(wù)和系統(tǒng)組成,包括:一個可擴(kuò)展的視圖(View)可以用來創(chuàng)建應(yīng)用程序,包括列表(lists)、網(wǎng)絡(luò)(grids)、文本框(textboxes)、按鈕(buttons),甚至是一個可嵌入的Web瀏覽器。內(nèi)容管理器(ContentProviders)使用應(yīng)用程序可以訪問另一個應(yīng)用程序的數(shù)據(jù)(如:聯(lián)系人數(shù)據(jù)庫),或者共享它們自己的數(shù)據(jù)。一個資源管理器(ResourceManager)提供非代碼資源的訪問,如:本地字符串、圖形何分層文件(layoutfiles).一個通知管理器(NotificationManager)使得應(yīng)用程序可以在狀態(tài)欄中顯示客戶通知信息。一個活動類管理器(ActivityManager)用來管理應(yīng)用程序生命周期并提供常用的導(dǎo)航回退功能。Android包括一個被Android系統(tǒng)中各種不同組件所使用的C/C++庫集。該庫集通過Android應(yīng)用程序框架為開發(fā)者提供服務(wù)。以下是一些主要的核心庫。系統(tǒng)C庫:一個從BSD繼承來的標(biāo)準(zhǔn)C系統(tǒng)數(shù)據(jù)庫(libc),專門為基于EmbeddedLinux的設(shè)備定制。媒體庫:基于PacketVideoOpenCORE:該庫支持錄放,并且可以錄制許多流行的音頻視頻格式,還有靜態(tài)映像文件包括MPEG4、H.264、MP3、AAC、AMR、JPG、PNG。SurfaceManager:對顯示子系統(tǒng)的管理,并且為多個應(yīng)用程序提供2D和3D圖層的無縫融合。LibWebCore:一個最新的Web瀏覽器引擎,用來支持Android瀏覽器和一個可嵌入的Web視圖。SGL:一個內(nèi)置的2D圖形引擎。3Dlibraries:基于OpenGLES1.0APIs實現(xiàn):該庫可以使用硬件3D加速(如果可用)或者使用高度優(yōu)化的3D軟加速。FreeType:位圖(bitmap)和向量(vector)字體顯示。SQLite:一個對于所有應(yīng)用程序可用、功能強勁的輕型關(guān)系型數(shù)據(jù)庫引擎。Android包括了一個核心庫,該核心庫提供了Java編程語言核心庫的大多數(shù)功能。每一個Android應(yīng)用程序都在它自己的進(jìn)程中運行,都擁有一個獨立的Dalvik虛擬機(jī)實例。Dalvik是針對同時高效地運行多個VMs來實現(xiàn)的。Dalvik虛擬機(jī)執(zhí)行.dex的Dalvik可執(zhí)行文件,該格式文件針對最小內(nèi)存使用做了優(yōu)化。該虛擬機(jī)是基于寄存器的,所有的類都經(jīng)過由Java匯編器編譯,然后通過SDK中的DX工具轉(zhuǎn)化成.dex格式由虛擬機(jī)執(zhí)行。2.3Android系統(tǒng)結(jié)構(gòu)組成分析2.3.1Android系統(tǒng)架構(gòu)Android系統(tǒng)由底層到應(yīng)用層的系統(tǒng)結(jié)構(gòu)如圖2.2所示,下面由底層逐步向上做一個簡單的介紹。圖2.2Android系統(tǒng)框架圖Android的內(nèi)核采用Linux內(nèi)核版本2.6,其位于硬件和軟件堆之間的抽象層,提供的核心服務(wù):安全機(jī)制、內(nèi)存管理、進(jìn)程管理、網(wǎng)絡(luò)、硬件驅(qū)動。除了標(biāo)準(zhǔn)的Linux內(nèi)核外,Android系統(tǒng)還需要增加內(nèi)核驅(qū)動。例如:BinderIPC驅(qū)動、顯示驅(qū)動、輸入設(shè)備驅(qū)動、音頻系統(tǒng)驅(qū)動、攝像頭驅(qū)動、Wifi驅(qū)動、藍(lán)牙驅(qū)動、電源管理驅(qū)動等。這些內(nèi)容為Android系統(tǒng)的運行提供了基礎(chǔ)性支持。Android也適合使用Linux的標(biāo)準(zhǔn)驅(qū)動作為系統(tǒng)于硬件的接口,但是這個操作系統(tǒng)并非完全等同于unix/linux系統(tǒng)庫,系統(tǒng)初始化和編程接口都和標(biāo)準(zhǔn)的Linux系統(tǒng)是有所不同的。Android內(nèi)核要實現(xiàn)內(nèi)存管理、進(jìn)程調(diào)度、進(jìn)程間通信等功能Android內(nèi)核是在標(biāo)準(zhǔn)Linux內(nèi)核的基礎(chǔ)上修改成為了適應(yīng)嵌入式硬件環(huán)境和移動應(yīng)用程序的開發(fā),Android對標(biāo)準(zhǔn)Linux內(nèi)核進(jìn)行了一定的修改為了對比分析Android內(nèi)核,在Ubuntu操作系統(tǒng)上搭建了Android內(nèi)核的編譯開發(fā)平臺,通過repo,下載最新的Android內(nèi)核代碼版本Linux內(nèi)核版本為2.6.29。從獲得的內(nèi)核源碼樹的根目錄結(jié)構(gòu)。經(jīng)過與unix標(biāo)準(zhǔn)內(nèi)核比較可以發(fā)現(xiàn),Android內(nèi)核與標(biāo)準(zhǔn)Linux內(nèi)核在文件系統(tǒng)、進(jìn)程間通信機(jī)制、內(nèi)存管理等方面存在不同。(1)文件系統(tǒng)不同于桌面系統(tǒng)與服務(wù)器,移動設(shè)備大多采用的不是硬盤而是采用flash作為存儲介質(zhì),因此,Android內(nèi)核中,增加了標(biāo)準(zhǔn)Linux內(nèi)核,采用日志結(jié)構(gòu)的文件系統(tǒng),提供了損耗平衡和掉電保護(hù),可以有效地避免意外斷電對文件系統(tǒng)一致性和完整性的影響。按層次結(jié)構(gòu)設(shè)計,分為文件管理接口、內(nèi)部實現(xiàn)層和HAND,簡化了其本身與系統(tǒng)的接口設(shè)計,能更方便地集成到系統(tǒng)當(dāng)中。(2)進(jìn)程間通信機(jī)制Android增加了一種進(jìn)程間的通信機(jī)制在內(nèi)核源代碼驅(qū)動程序文件為、oredroid/includellinux/binder.h和oredroid/drivers/Android/binder,Binder通過守護(hù)進(jìn)程ServiceManager管理系統(tǒng)的服務(wù),負(fù)責(zé)進(jìn)程間的數(shù)據(jù)交換各進(jìn)程通過Binder訪問同一塊共享內(nèi)存,以達(dá)到數(shù)據(jù)通信的機(jī)制從應(yīng)用層的角度看,進(jìn)程通過訪問數(shù)據(jù)守護(hù)進(jìn)程獲取用于數(shù)據(jù)交換的程序框架接口,調(diào)用并通過接口共享數(shù)據(jù),而其他進(jìn)程要訪問數(shù)據(jù),也只需與程序框架接口進(jìn)行交互,方便了程序員開發(fā)需要交互數(shù)據(jù)的應(yīng)用程序。(3)內(nèi)存管理在內(nèi)存管理模塊,Android內(nèi)核采用了一種不用于標(biāo)準(zhǔn)Linux內(nèi)核的低內(nèi)存管理策略,在標(biāo)準(zhǔn)Linux內(nèi)核使用一種叫做OOM(OutofMemory)的低內(nèi)存管理策略;當(dāng)內(nèi)存不足時,系統(tǒng)檢查所有的進(jìn)程,并對進(jìn)程進(jìn)行限制評分,獲得最高分的進(jìn)程將被關(guān)閉(內(nèi)核進(jìn)程除外)Android系統(tǒng)采用的則是一種叫作LMK(LowMemoryKiller)的機(jī)制,這種機(jī)制將進(jìn)程按照重要性進(jìn)行分級、分組內(nèi)存不足時,將處于最低級別組的進(jìn)程關(guān)閉例如,在移動設(shè)備當(dāng)用戶界面處于最高級別,所以該進(jìn)程永遠(yuǎn)不會被關(guān)閉這樣,在終端用戶看來,系統(tǒng)是穩(wěn)定運行的在Andorid內(nèi)核源碼LMK的位置是oredroid/drivers/mist/lowme-morykiller.c。與此同時,Android新增加了一種內(nèi)存共享的處理方式Ashmem(AnonymousSharedMemory,匿名共享內(nèi)存)通過Ashmem,進(jìn)程間可以匿名自由共享具名的內(nèi)存塊。這種共享方式在標(biāo)準(zhǔn)Linux當(dāng)中不被支持。C/C++庫被各種Android組件使用并且通過應(yīng)用程序框架開發(fā)者可以使用其功能,這些功能包括單不限于:媒體庫如MPEG4、H.264、MP3、JPG、PNG等;WebKit/LibWebCoreWeb瀏覽引擎;SQLite關(guān)系數(shù)據(jù)庫引擎;2D,3D圖形庫、引擎;Android有豐富的類庫支持,包括:2D和3D圖像庫OpenGL、數(shù)據(jù)庫SQLite、對象數(shù)據(jù)庫db類庫、媒體庫、基本linux底層系統(tǒng)C庫等等,讓應(yīng)用開發(fā)更簡單多樣。Google使用Apache的Harmony類庫,Harmony某些方面速度快于Sun的VMoRuntime在DalvikJavaVM上,Dalvik采用簡練、高效的bytecode格式運行,它能夠在低資耗和沒有應(yīng)用相互干擾的情況下并行執(zhí)行多個應(yīng)用。其在運行時的主要特點有:每一個Android應(yīng)用程序在它自己的DalvikVM實例中運行VM執(zhí)行優(yōu)化的Dalvik可執(zhí)行文件(.dex)。Dx工具把編譯過的Java文件轉(zhuǎn)換為dex文件核心庫提供的Java功能,Dalvik虛擬機(jī)依賴于Linux內(nèi)核,例如線程或底層內(nèi)存管理。設(shè)備可以運行多個Dalvik虛擬機(jī)。Android應(yīng)用層包括Android核心應(yīng)用,它主要簡化組件的重用,盡管內(nèi)核適用c/c++程序庫,但是在應(yīng)用層開發(fā)時,使用Java編寫應(yīng)用程序,例如聯(lián)系人,電子郵件,電話,瀏覽器,日歷,地圖,此層次上有充分訪問所有核心應(yīng)用框架API。2.4Android開發(fā)工具2.4.1Eclipse簡介Eclipse是一個綜合開發(fā)環(huán)境(IntegratedDevelopmentEnvironment)IDE,它是一個功能完整且成熟的軟件,由IBM公司于2001年首次推出。大家可以在其官方網(wǎng)站免費下載該軟件的打包文件,釋放到文件夾即可使用。Eclipse是一個開放源代碼、基于Java的可擴(kuò)展開發(fā)平臺。開放源代碼的意思是讓使用者能夠取得軟件的原始碼,部分地有權(quán)去修改和傳播這個軟件。有人非常形象地將Eclipse比喻成軟件開發(fā)者的“打鐵鋪”,它一開始備有火爐、鐵砧與鐵錘。就像鐵匠會用現(xiàn)有的工具打造新的工具一樣,程序員也能用Eclipse打造新工具來開發(fā)軟件———這些新工具可擴(kuò)充Eclipse的功能。就Eclipse本身而言,它只是一個框架和一組被稱為平臺核心的服務(wù)程序,用于通過插件組件構(gòu)建開發(fā)環(huán)境。核心的任務(wù)是讓每樣?xùn)|西動起來,并加載所需的外掛程序。當(dāng)啟動Eclipse時,先執(zhí)行的就是這個組件,再由這個組件加載其他外掛程序。Eclipse附帶了一個包括Java開發(fā)工具(JavaDevelopmentTools,JDT)的標(biāo)準(zhǔn)插件集,因此如果要使用Eclipse來開發(fā)Java程序,必須安裝JDK作為它的插件才能使它正常運作。2.4.2JDK簡介JDK(JavaDevelopmentKit,JDK)是整個Java的核心,包括了Java運行環(huán)境(JavaRuntimeEnvirnment),一堆Java工具和Java基礎(chǔ)的類庫(rt.jar)。不論什么Java應(yīng)用服務(wù)器實質(zhì)都是內(nèi)置了某個版本的JDK。最主流的JDK是Sun公司發(fā)布的JDK,除了Sun之外,還有很多公司和組織都開發(fā)了自己的JDK,例如IBM公司開發(fā)的JDK,BEA公司的Jrocket,還有GNU組織開發(fā)的JDK等等。其中IBM的JDK包含的JVM(JavaVirtualMachine,JVM)運行效率要比SunJDK包含的JVM高出許多。JDK的最重要命令行工具:java:啟動JVM執(zhí)行class;javac:Java編譯器;jar:Java打包工具;javadoc:Java文檔生成器。2.4.3AndroidSDK簡介AndroidSDK(softwaredevelopmentkit,SDK)Tool軟件開發(fā)工具包。被軟件開發(fā)工程師用于為特定的軟件包、軟件框架、硬件平臺、操作系統(tǒng)等建立應(yīng)用軟件的開發(fā)工具的集合,是Android專屬的軟件開發(fā)工具包。2.4.4ADT簡介目前Android開發(fā)所用的開發(fā)工具是Eclipse,在Eclipse編譯IDE環(huán)境中,安裝ADT,為Android開發(fā)提供開發(fā)工具的升級或者變更,簡單理解為在Eclipse下開發(fā)工具的升級下載工具。2.5開發(fā)環(huán)境搭建2.5.1下載和安裝AndroidSDK登陸Android開發(fā)者網(wǎng)站http://developer.A/sdk/index.html即可下載AndroidSDK。下載和安裝步驟如下:在Android1.5之前,Google提供了AndroidSDK的完整開發(fā)包;從Android1.6之后,Google不再提供完整開發(fā)包,開發(fā)者必須采用在線的方式安裝AndroidSDK。此處以Windows開發(fā)平臺為例,登陸界面之后點擊“Android-sdk_r18-windows.zip”連接,通過連接即可下載AndroidSDK的在線安裝包。下載完成后得到Android-sdk_r18-windows.zip文件。將該文件解壓到任意路徑,解壓后文件夾,啟動文件夾中SDKManager.exe,單擊出現(xiàn)窗口左邊“Installedpackages”項,可以查看已有安裝工具,單擊“Availablepackages”然后選安裝工具,其中Android平臺工具、Android文檔、Android2.3SDK必須選,然后單擊“InstallSelected”,窗口出現(xiàn)“AcceptAll”單選按鈕,單擊“Install”系統(tǒng)便開始安裝AndroidSDK,安裝時間可能要花費一兩個小時。2.5.2安裝Eclipse和ADT插件Eclipse是一個市場占有率很高的JavaIDE工具,JavaEE應(yīng)用的開發(fā)者對Eclipse應(yīng)該十分熟悉,Android推薦使用Eclipse來開發(fā)Android應(yīng)用,并為它提供專門的插件ADT(AndroidDevelopmentTools,ADT)。安裝Eclipse工具按如下步驟進(jìn)行:登陸站點,下載EclipseIDEforJavaEEDeveloper的版本。下載完成后解壓縮后雙擊eclipse.exe文件,即可看到Eclipse啟動界面,表明Eclipse已經(jīng)安裝成功,為了在Eclipse中進(jìn)行Android開發(fā),還需要安裝ADT插件。安裝ADT請按如下步驟進(jìn)行登陸下載:登陸網(wǎng)站:http://developer.A/sdk/eclipse-adt.html#installing下載ADT插件最新版本,下載后得到ADT-18.0.0.zip文件。啟動Eclipse,單擊Eclipse的主菜單上Help/InstallNewSoftware菜單項,單擊窗口“Add..”按鈕,選擇ADT插件ADT-18.0.0.zip文件。選中“OK”按鈕,在點擊“next”,最后點擊“Finish”,Eclipse開始安裝ADT插件。稍稍等幾分鐘,ADT插件安裝完成再配置相應(yīng)環(huán)境變量即可進(jìn)行Android軟件開發(fā)了。可行性研究與需求分析3.1可行性研究一個項目的開發(fā)需要仔細(xì)分析,看它在目前的情況下是否可行,如果一個項目開發(fā)具有很好的背景和意義,但是在經(jīng)濟(jì)上或者是技術(shù)上是不可行的,那么它也只能稱之為不能實現(xiàn)的項目。通過參照現(xiàn)有相似的其他網(wǎng)站的使用效果和分析實例進(jìn)行可行性研究,主要從以下四個方面進(jìn)行討論。3.1.1技術(shù)可行性本次開發(fā)的Android二維碼掃描識別軟件,用戶通過手機(jī)對QRcode二維碼進(jìn)行拍照解碼識別并且顯示二維碼隱藏的信息,如果二維碼為“http://”,則打開手機(jī)瀏覽器直接上網(wǎng);當(dāng)發(fā)現(xiàn)為“wtai://”或“TEL:”規(guī)范,則調(diào)用手機(jī)撥打電話;而若未發(fā)現(xiàn)任何標(biāo)準(zhǔn)規(guī)范,則顯示條形碼的文字。如果拍照的圖片不是QRcode二維碼條形碼或者程序無法識別,則不作任何處理。首先我們需要借助一個第三方的庫函數(shù)QRCODE.jar.然后我們可以通過手機(jī)照相機(jī)獲取二維碼圖片,然后將其送往QRCode的函數(shù)進(jìn)行解碼,對比我們的OMIA規(guī)范,即可實現(xiàn),因此在技術(shù)上可行。3.1.2經(jīng)濟(jì)可行性二維碼在國內(nèi)應(yīng)用引起眾多用戶群體的興趣,國內(nèi)許多廠商已經(jīng)開始致力于二維碼的研究,設(shè)備開發(fā)與應(yīng)用系統(tǒng)的應(yīng)用推廣及新市場的培育,投資方很看好這個項目,在資金方面沒有問題,所以在經(jīng)濟(jì)上可行。3.1.3操作可行性通過對Android二維碼掃描識別的研究,本系統(tǒng)能滿足投資方的基本要求,同時由于本系統(tǒng)只需要有一臺Android手機(jī)即可對QRcode二維碼進(jìn)行掃描識別、在操作方面可行。3.1.4社會可行性本軟件可以讓用戶通過手機(jī)對一些產(chǎn)品上的二維碼進(jìn)行掃描識別,從而查看該產(chǎn)品的真?zhèn)?。對社會幫助很大。根?jù)以上幾個方面的研究分析,Android二維碼的掃描識別在技術(shù)上可行、經(jīng)濟(jì)方面可行、操作方面可行、法律方面也是可行的,可得出結(jié)論:應(yīng)該立即進(jìn)行本項目的開發(fā)。3.2需求分析需求分析是軟件定義的最后一個階段,它的基本任務(wù)是回答“系統(tǒng)必須做什么”這個問題。需求分析的任務(wù)不是確定系統(tǒng)怎樣完成他的工作,而僅僅是確定系統(tǒng)完成哪些工作,也就是對目標(biāo)系統(tǒng)提出完整、準(zhǔn)確、清晰、具體的要求。可行性研究階段產(chǎn)生的文檔,是需求分析的出發(fā)點。從需求分析中已經(jīng)劃分出系統(tǒng)必須完成的許多基本功能,系統(tǒng)分析員將仔細(xì)研究這些功能并進(jìn)一步將它們具體化。需求分析的結(jié)果是系統(tǒng)開發(fā)的基礎(chǔ),關(guān)系到工程的成敗和軟件產(chǎn)品的質(zhì)量。因此,必須用行之有效的方法對軟件需求進(jìn)行嚴(yán)格的審查驗證。本系統(tǒng)的實現(xiàn)要考慮到很多方面的因素,因此要求的方法和技術(shù)要相應(yīng)的有些多。具體來說,在開發(fā)過程中,要熟悉QRcode二維碼解碼和圖像處理的方法,能熟練運用JAVA語言,還要懂得軟件工程技術(shù)和系統(tǒng)測試技術(shù)。由于此系統(tǒng)的開發(fā)是在XP環(huán)境下借助JDK、Eclipse、ADT和SDK完成的,所以還應(yīng)熟練使用XP和這些開發(fā)工具。3.2.1系統(tǒng)功能需求(1)相機(jī)預(yù)覽需求此二維碼識別系統(tǒng)必須能夠調(diào)用手機(jī)上的照相機(jī)才能獲取二維碼的圖像,因此需要一個相機(jī)預(yù)覽功能,之后才能獲取我們的二維碼圖片。(2)關(guān)閉相機(jī)預(yù)覽需求此系統(tǒng)既然要打開手機(jī)照相機(jī),當(dāng)然也能夠關(guān)閉相機(jī)預(yù)覽功能。(3)圖像處理和拍照解碼需求既然此系統(tǒng)是要對二維碼識別,我們通過相機(jī)預(yù)覽后即可進(jìn)行拍照截取圖片,然后對圖片進(jìn)行處理,同時需要對二維碼解碼,因此需要有圖像處理和解碼的功能。(4)調(diào)用瀏覽器功能當(dāng)我們二維碼隱藏的是一個網(wǎng)站信息時,我們需要訪問該網(wǎng)站,那么我們這時候需要調(diào)用我們手機(jī)瀏覽器功能。(5)調(diào)用手機(jī)撥打電話功能當(dāng)我們二維碼隱藏的是一個電話號碼時,這個時候我們需要調(diào)用我們手機(jī)撥打電話功能。(6)其他功能顯示文本功能:當(dāng)二維碼隱藏的只是一些文本信息的時候能夠文本信息顯示出來。3.2.2系統(tǒng)功能結(jié)構(gòu)圖系統(tǒng)結(jié)構(gòu)圖是對軟件系統(tǒng)結(jié)構(gòu)的總體設(shè)計的圖形顯示,在需求分析階段,已經(jīng)從系統(tǒng)開發(fā)的角度出發(fā),把系統(tǒng)按功能逐次分割成層次結(jié)構(gòu),使每一部分完成簡單的功能且各個部分之間又保持一定的聯(lián)系,這就是功能設(shè)計。在設(shè)計階段,基于這個功能的層次結(jié)構(gòu)把各個部分組合起來成為系統(tǒng)。如圖3.1所示。圖3.1系統(tǒng)功能結(jié)構(gòu)圖3.2.3系統(tǒng)用例圖(1)系統(tǒng)用戶用例圖用例圖就是由主角、用例以及它們之間的關(guān)系構(gòu)成的圖。該圖說明了用例模型中的關(guān)系。通過上面對系統(tǒng)的分析即可得到系統(tǒng)的用例圖,如圖3.2所示。圖3.2系統(tǒng)用例圖(2)相機(jī)預(yù)覽用例:調(diào)用手機(jī)照相機(jī)初始化相機(jī)模式。(3)關(guān)閉相機(jī)用例:關(guān)閉手機(jī)照相機(jī)。(4)拍照解碼用例:通過手機(jī)照相機(jī)把二維碼圖片拍下來然后再送入系統(tǒng)解碼。1)調(diào)用瀏覽器用例:如果二維碼信息隱藏的是以“http://”開頭的網(wǎng)址,那么手機(jī)便調(diào)用默認(rèn)瀏覽器瀏覽該網(wǎng)站。2)調(diào)用撥打電話功能用例:如果二維碼信息隱藏的是以“TEL:”或者是“wtai://”開頭的電話號碼,那么手機(jī)直接調(diào)用撥打電話功能。3)顯示文本信息用例:如果二維碼信息只是包含一些文本信息,那么直接顯示。3.2.4系統(tǒng)活動圖活動圖(activitydiagram,動態(tài)圖)是闡明了業(yè)務(wù)用例實現(xiàn)的工作流程。業(yè)務(wù)用例工作流程說明了業(yè)務(wù)為向所服務(wù)的業(yè)務(wù)主角提供其所需的價值而必須完成的工作。業(yè)務(wù)用例由一系列活動組成,它們共同為業(yè)務(wù)主角生成某些工件。工作流程通常包括一個基本工作流程和一個或多個備選工作流程。工作流程的結(jié)構(gòu)使用活動圖來進(jìn)行說明。系統(tǒng)的活動圖如圖3.3所示。圖3.3系統(tǒng)活動圖3.3技術(shù)需求Android二維碼掃描系統(tǒng)是一個綜合性比較強的題目,它需要在學(xué)校學(xué)習(xí)多方面知識,具體的幾個主要技術(shù)要求如下:(1)Android技術(shù)Android開發(fā)之前,需要配置Android開發(fā)環(huán)境。首先,Android開發(fā)所需要的開發(fā)包和工具,以及獲得它們的方式;其次,如何正確安裝和配置這些開發(fā)包;最后,為了測試安裝的開發(fā)環(huán)境,創(chuàng)建了第一個Android項目--HelloAndroid,并在模擬器上運行和調(diào)試該程序,并且將該應(yīng)用程序安裝到Android手機(jī)上。(2)照相機(jī)實現(xiàn)技術(shù)在了解了Android開發(fā)的過程之后需要學(xué)習(xí)Android怎樣進(jìn)行照相。Android應(yīng)用提供了Camera來控制拍照,使用Camera進(jìn)行拍照需要按照如下步驟進(jìn)行即可.調(diào)用Camera的open()方法打開照相機(jī)。調(diào)用Camera和getParameters()方法獲取拍照參數(shù)。該方法返回一個Camera.Parameters對象。調(diào)用Camera.Parameters對象方法設(shè)置相機(jī)參數(shù)。調(diào)用Camera的setParameters(),并將Camera.Parameters對象作為參數(shù)傳入,這樣即可對相機(jī)的拍照參數(shù)進(jìn)行控制。調(diào)用Camera的startPreview()方法開始預(yù)覽取景,在預(yù)覽取景之前需要調(diào)用Camera的setPreviewDisplay(SurfaceHolderholder)方法設(shè)置使用哪一個SurfaceView來顯示取景圖片。調(diào)用Camera的takePicture()方法進(jìn)行拍照。(3)二維碼圖片處理技術(shù)首先二維碼圖片是圖片的一種,當(dāng)拍攝下來時需要將該圖片送往解碼函數(shù)解碼,因此需要獲取預(yù)覽中圖片,在這里用的是bitmap這個類。(4)二維碼解碼技術(shù)將預(yù)覽畫面中的二維碼圖片送到我們的解碼函數(shù)對二維碼進(jìn)行解碼,因此需要應(yīng)用Android另外的一個JAR包。這個系統(tǒng)主要是對二維碼的一種QRcode進(jìn)行解碼,因此這里需要引用sourceforge.jp里的qrcode項目。3.4性能需求Android二維碼的掃描識別系統(tǒng)性能方面的要求主要體現(xiàn)在以下兩個方面:(1)時間需求本系統(tǒng)需要對二維碼進(jìn)行準(zhǔn)確迅速的識別,所以對系統(tǒng)的時間要求更為嚴(yán)格。(2)系統(tǒng)界面需求軟件界面直觀、簡潔,人機(jī)交互性強。軟件設(shè)計經(jīng)過可行性研究和需求分析階段的工作,已經(jīng)清楚系統(tǒng)必須完成的工作,下面的工作就應(yīng)該是決定“如何做”的問題。通過該階段的工作將劃分出系統(tǒng)的物理元素——程序、文件、數(shù)據(jù)庫、文檔等,另一方面的主要工作是設(shè)計軟件的結(jié)構(gòu),即確定系統(tǒng)都由哪些模塊組成及模塊之間的相互關(guān)系。4.1系統(tǒng)概要設(shè)計概要設(shè)計的主要任務(wù)是設(shè)計軟件結(jié)構(gòu)和數(shù)據(jù)結(jié)構(gòu)。設(shè)計軟件結(jié)構(gòu)的具體任務(wù)是:將一個復(fù)雜系統(tǒng)按功能進(jìn)行模塊劃分、建立模塊的層次結(jié)構(gòu)及調(diào)用關(guān)系、確定模塊間的接口及人機(jī)界面等。數(shù)據(jù)結(jié)構(gòu)設(shè)計包括數(shù)據(jù)特征的描述、確定數(shù)據(jù)的結(jié)構(gòu)特性、以及數(shù)據(jù)庫的設(shè)計。顯然,概要設(shè)計建立的是目標(biāo)系統(tǒng)的邏輯模型,與計算機(jī)無關(guān)??傮w設(shè)計包括系統(tǒng)模塊結(jié)構(gòu)設(shè)計和計算機(jī)物理系統(tǒng)的配置方案設(shè)計。Android二維碼掃描識別系統(tǒng)需要調(diào)用我們Android手機(jī)的照相機(jī),通過onPictureTaken函數(shù)二維碼圖片處理成位圖,而且將位圖在imageview中顯示出來,然后再對位圖進(jìn)行譯碼,按照QRCODE二維碼生成的方式解碼成字符型,QRCODE遵循OMIA規(guī)范,如果二維碼隱藏信息是一個網(wǎng)址那么調(diào)用瀏覽器訪問該網(wǎng)站,如果二維碼隱藏的信息是一個電話號碼,那么調(diào)用手機(jī)撥打電話功能,如果該二維碼隱藏的信息是普通的文本信息,那么顯示出文本信息即可,若不是QRCODE二維碼不做任何操作。4.1.1系統(tǒng)模塊結(jié)構(gòu)設(shè)計系統(tǒng)模塊結(jié)構(gòu)設(shè)計的任務(wù)是劃分子系統(tǒng),然后確定子系統(tǒng)的模塊結(jié)構(gòu),并畫出模塊結(jié)構(gòu)圖。在這個過程中必須考慮以下幾個問題:如何將一個系統(tǒng)劃分成多個子系統(tǒng);每個子系統(tǒng)如何劃分成多個模塊;如何確定子系統(tǒng)之間、模塊之間傳送的數(shù)據(jù)及其調(diào)用關(guān)系;如何評價并改進(jìn)模塊結(jié)構(gòu)的質(zhì)量。4.1.2計算機(jī)物理系統(tǒng)配置方案設(shè)計在進(jìn)行總體設(shè)計時,還要進(jìn)行計算機(jī)物理系統(tǒng)具體配置方案的設(shè)計,要解決計算機(jī)軟硬件系統(tǒng)的配置、通信網(wǎng)絡(luò)系統(tǒng)的配置等問題。計算機(jī)物理系統(tǒng)具體配置方案要經(jīng)過用戶單位和領(lǐng)導(dǎo)部門的同意才可進(jìn)行實施。開發(fā)管理信息系統(tǒng)的大量經(jīng)驗教訓(xùn)說明,選擇計算機(jī)軟硬件設(shè)備不能光看廣告或資料介紹,必須進(jìn)行充分的調(diào)查研究,最好應(yīng)向使用過該軟硬件設(shè)備的單位了解運行情況及優(yōu)缺點,并征求有關(guān)專家的意見,然后進(jìn)行論證,最后寫出計算機(jī)物理系統(tǒng)配置方案報告。從我國的實際情況看,不少單位是先買計算機(jī)然后決定開發(fā)。這種不科學(xué)的、盲目的做法是不可取的,它會造成極大浪費。因為,計算機(jī)更新?lián)Q代是非常快的,就是在開發(fā)初期和在開發(fā)的中后期系統(tǒng)實施階段購買計算機(jī)設(shè)備,價格差別就會很大。因此,在開發(fā)管理信息系統(tǒng)過程中應(yīng)在系統(tǒng)設(shè)計的總體設(shè)計階段才具體設(shè)計計算機(jī)物理系統(tǒng)的配置方案。4.2系統(tǒng)功能模塊系統(tǒng)總體功能有以下幾個方面:(1)相機(jī)預(yù)覽功能;(2)關(guān)閉相機(jī)功能;(3)拍照解碼:1)調(diào)用瀏覽器:如果二維碼信息隱藏的是以“http://”開頭的網(wǎng)址,那么手機(jī)便調(diào)用默認(rèn)瀏覽器瀏覽該網(wǎng)址。2)調(diào)用撥打電話功能:如果二維碼信息隱藏的事以“TEL:”或者是“wtai:”開頭的電話號碼,那么手機(jī)直接調(diào)用撥打電話功能。3)顯示文本信息:如果二維碼信息只是包含一些文本信息,那么直接顯示。4.2.1系統(tǒng)總體功能模塊通過上面的對系統(tǒng)的總體功能模塊的分析,便可以得出系統(tǒng)總體功能模塊圖。系統(tǒng)總體功能模塊圖如圖4.1所示。圖4.1系統(tǒng)總體功能模塊圖4.2.2拍照解碼功能模塊在整個系統(tǒng)模塊中最重要的模塊是拍照解碼功能,因此把這個模塊單獨分析,將它的功能進(jìn)行分析如圖4.2所示。圖4.2拍照解碼功能模塊圖4.3系統(tǒng)流程圖系統(tǒng)流程圖(SystemFlowchart)是描繪系統(tǒng)物理模型的傳統(tǒng)工具。它的基本思想是用圖形符號以黑盒子形式描繪系統(tǒng)里面的每個部件(程序、文件、數(shù)據(jù)庫、表格、人工過程等),表達(dá)信息在各個部件之間流動的情況。本系統(tǒng)流程圖如圖4.3所示。圖4.3系統(tǒng)流程圖4.3.1圖片處理過程圖首先圖片的格式必須是JPEG格式的圖片,通過照相機(jī)預(yù)覽到二維碼圖片之后,需要對該圖片拍下來,由于QRCODE二維碼是按照一定規(guī)則以矩陣的形式生成的,所以拍照截取到圖片之后需要譯碼字節(jié)數(shù)組,將字節(jié)數(shù)組譯碼成位圖,并將位圖顯示在imageview上,然后通過decodeQRImage函數(shù)將此位圖送往系統(tǒng)自帶的譯碼函數(shù)譯碼成字符串,最后判斷取出的字符串是否符合OMIA所規(guī)范的規(guī)則。圖片處理過程圖如圖4.4所示。圖4.4圖片處理過程圖4.3.2界面設(shè)計界面設(shè)計是人與機(jī)器之間傳遞和交換信息的媒介,一個好的界面是很重要的。它主要是站在用戶角度考慮,因此界面的設(shè)計要人性化、簡潔、清楚,還要有安全性和靈活性。此系統(tǒng)功能整體上可以分為三個部分。第一部分是相機(jī)預(yù)覽顯示部分,這部分用一個surfaceview來實現(xiàn);第二部分是整個系統(tǒng)操作部分,分為兩個按鈕,第一個按鈕為重掃,第二個按鈕為關(guān)閉;第三部分是顯示拍照截取的二維碼圖片,在這兒我們用imageview視圖來顯示。
第5章軟件實現(xiàn)5.1Android應(yīng)用程序的構(gòu)成在Android平臺上,有幾個基本的用戶程序組件:Activity、Intent、Intentreceiver、Service、ContentProvider。5.1.1Activity活動是最基本的Android應(yīng)用程序組件,應(yīng)用程序中,一個活動通常就是一個單獨的屏幕。每一個活動都被實現(xiàn)為一個獨立的類,并且從活動基類中繼承而來,活動類將會顯示由視圖控件組成的用戶接口,)事件做出響應(yīng)。大多數(shù)的應(yīng)用是由多個屏幕顯示組成。例如文本信息的應(yīng)用也許有一個顯示發(fā)送消息狗聯(lián)系人列表屏幕,第二個屏幕用來寫文本消息和選擇收件人,再來一個屏幕查看消息歷史或者消息設(shè)置等。這里每一個這樣的屏幕就是一個活動,很容易實現(xiàn)從一個屏幕到一個新的屏幕并且完成新的活動。在某些情況下當(dāng)前的屏幕也許需要向上一個屏幕活動提供返回值一比如讓用戶從手機(jī)中挑選一張照片返回通訊錄做為電話撥入者的頭像。當(dāng)一個新的屏幕打開后,前一個屏幕將會暫停,并保存在歷史堆棧中。用戶可以返回到歷史棧中的前n個屏幕。當(dāng)屏幕不再使用時,還可以從歷史堆棧中刪除。默認(rèn)情況下,Android將會保留從主屏幕到每一個應(yīng)用的運行屏幕。簡單理解Activity代表一個用戶所能看到的屏幕,Activity主要是處理一個應(yīng)用的整體性工作,例如,監(jiān)聽系統(tǒng)事件(按鍵事件、觸摸屏事件等、為用戶顯示指定的View,啟動其他Activity等。所有應(yīng)用的Activity都繼承于Android.app.Activity類,該類是Android提供的基層類,其他Activity繼承該父類后,通勸verride父類的方法來實現(xiàn)各種功能,這種設(shè)計在其他領(lǐng)域也較為常見。5.1.2Intent調(diào)用Android專有類Intent進(jìn)行架構(gòu)屏幕之間的切換。Intent是描述應(yīng)用想要做什么。Intent數(shù)據(jù)結(jié)構(gòu)個最重要的部分是動作和動作對應(yīng)的數(shù)據(jù)。典型的動作類型有:MAIN(活動的門戶)、VIEW,PICK,EDIT等。而動作對應(yīng)的數(shù)據(jù)則以URI的形式進(jìn)行表示。例如:要查看某個人的聯(lián)系方式,你需要創(chuàng)建一個動作類型為VIEW的Intent,以及一個表示這個人的身份。Android使用了Intent這個特殊類,實現(xiàn)在屏幕與屏幕之間移動。Intent類用于描述一個應(yīng)用將會做什么事。祖ntent的描述結(jié)構(gòu)中,有兩個最重要的部分:動作和動作對應(yīng)的數(shù)據(jù)。典型的動作類型有:MAIN、VIEW,PICK,EDIT等。而動作對應(yīng)的數(shù)據(jù)則以URI的形式進(jìn)行表示。例如:要查看一個人關(guān)系方式,你需要創(chuàng)建一個動作類型為VIEW的intent,以及一個表示這個人的URI,與之有關(guān)系的一個類叫IntentFilter。相對于intent是一個有效的做某事的請求,一個intentfilter則用于描述一個activity(或者IntentReceiver)能夠操作哪些intent。一個activity如果要顯示一個人的聯(lián)系方式時,需要聲明一個IntentFilter,這個IntentFilter要知道怎么去處理VIEW動作和表示一個人的URIoIntentFilter需要在AndroidManifest.xml中定義。通過解析各種intent,從一個屏幕導(dǎo)航到另一個屏幕是很簡單的。當(dāng)向前導(dǎo)航時,activity將會調(diào)用startActivity(IntentmyIntent)方法。然后,系統(tǒng)會在所有安裝的應(yīng)用程序中定義的IntentFilter中查找,找到最匹配myIntent的Intent對應(yīng)的activity。新的activity接收到myIntent的通知后,開始運行。緣tartActivity方法被調(diào)用將觸發(fā)解析myIntent的動作,這個機(jī)制提供了兩個關(guān)鍵好處:一是能夠重復(fù)利用從其它組件中以Intent的形式產(chǎn)生的一個請求,二是Activities可以在任何時候被一個具有相同IntentFilter的新的Activity取代。5.1.3Intentreceiver當(dāng)你希望你的應(yīng)用能夠?qū)σ粋€外部的事件(如當(dāng)電話呼入時,或者數(shù)據(jù)網(wǎng)絡(luò)可用時,或者到了晚上時)做出響應(yīng),你可以使用一個IntentReceiver。雖然IntentReceiver在感興趣的事件發(fā)生時,會使用NotificationManage。通知用戶,但它并不能生成一個UIoIntentReceiver在AndroidManifest.xml中注冊,但也可以在代碼中使用Context.registerReceiverQ進(jìn)行注冊。當(dāng)一個intentreceiver被觸發(fā)時,你的應(yīng)用不必對請求調(diào)用intentreceiver}系統(tǒng)會在需要的時候啟動你的應(yīng)用。各種應(yīng)用還可以通過使用Context.broadcastIntent。將它們白己的intentreceiver廣播給其它應(yīng)用程序。5.1.4Service一個Service是一段長生命周期的,沒有用戶界面的程序。比較好的一個例子就是一個正在從播放列表中播放歌曲的媒體播放器。在一個媒體播放器的應(yīng)用中,應(yīng)該會有多個Activity讓使用者可以選擇歌曲并提交歌曲。然而,音樂重放這個功能并沒有對應(yīng)Activity,因為使用者當(dāng)然會認(rèn)為在導(dǎo)航到其它屏幕時音樂應(yīng)該還在播放的。在這個例子中,媒體播放器這個activity會使用Context.startService味啟動一個service,從而可以在后臺保持音樂的播放。同時,系統(tǒng)也將保持這Service一直執(zhí)行,直到這個service運行結(jié)束。另外我們還可以通過使用Context.bindServicen方法,連接到一個service上(如果這個service還沒有運行將啟動它)。當(dāng)連接到Service之后,我們還可Service提供的接口與它進(jìn)行通訊。拿媒體播放器這個例子來說我們還可以進(jìn)行暫停、重播等操作。5.1.5ContentProviderAndroid應(yīng)用程序能夠?qū)⑺鼈兊臄?shù)據(jù)保存到文件、SQLite數(shù)據(jù)庫中,甚至是任何有效的設(shè)備中。當(dāng)你想將你的應(yīng)用數(shù)據(jù)與其它的應(yīng)用共享時,內(nèi)容提供器就可以發(fā)揮作用了。因為內(nèi)容提供器類實現(xiàn)了一組方法,從而能夠讓其它的應(yīng)用保存或讀取此內(nèi)容提供器處理的各種數(shù)據(jù)類型。數(shù)據(jù)是應(yīng)用的核心。在Android中,默認(rèn)使用鼎鼎大名的SQLite作為系統(tǒng)DB。但是在Android中,使用方法有點小小的不一樣。在Android中每一個應(yīng)用都運行在各自的進(jìn)程中,當(dāng)你的應(yīng)用需要訪問其他應(yīng)用的數(shù)據(jù)時,也就需要數(shù)據(jù)在不同的虛擬機(jī)之間傳遞,這樣的情況操作起來可能有些困難在通常情況下,你不能訪問其他的應(yīng)用的db文件),ContentProvider正是用來解決在不同的應(yīng)用包之間共享數(shù)據(jù)的工具。所有被一個Android應(yīng)用程序創(chuàng)建的偏好設(shè)置,文件和數(shù)據(jù)庫都是私有的為了和其他應(yīng)用程序共享數(shù)據(jù),應(yīng)用程序不得不創(chuàng)建一個ContentProvider要回索其他應(yīng)用程序的數(shù)據(jù),它自己的ContentProvider必須被調(diào)用。Android本地ContentProvider包括:Ca11Log:地址和接收到的電話信息、Contact.People.Phones:存儲電話號碼、Setting.System:系統(tǒng)設(shè)置和偏好設(shè)置等等。5.2代碼編寫在已經(jīng)搭建好的Android應(yīng)用程序開發(fā)平臺:JavaJDKSE+Eclipse+GoogleAndroidSDK+ADT中建立Android應(yīng)用程序程序項目,如圖5.1所示。圖5.1建立Android應(yīng)用程序項目5.2.1主界面Activity布局在整個界面的背景,用Surface整個底層界面用來顯示照相機(jī)拍攝到的圖像。在界面的頂部放置TextView用來存放解碼后顯示的信息。在界面的中間部分,F(xiàn)rontView用來把顯示到的圖像周圍都涂成半透明的白色,中間的空白區(qū)域用來掃描二維碼,ImageView用來顯示掃描二維碼成功后截取到的圖像。在操作界面的地步,TextView用來簡單介紹本軟件可以掃描的范圍,Button用來關(guān)閉軟件和重新掃描。界面設(shè)計布局如圖5.2所示。圖5.2界面布局主界面的Activity的布局是由layout下的main.xml確定的:<AbsoluteLayoutAndroid:layout_width="wrap_content"Android:layout_height="wrap_content"><TextViewAndroid:layout_width="wrap_content"Android:layout_height="wrap_content"Android:layout_x="80dp"Android:layout_y="410dp"Android:textColor="#000000"Android:text="掃描:"/><TextViewAndroid:layout_width="wrap_content"Android:layout_height="wrap_content"Android:layout_x="125dp"Android:layout_y="385dp"Android:textColor="#000000"Android:text="一維EAN碼"/><TextViewAndroid:layout_width="wrap_content"Android:layout_height="wrap_content"Android:layout_x="125dp"Android:layout_y="400dp"Android:textColor="#000000"Android:text="二維QR碼"/><TextViewAndroid:layout_width="wrap_content"Android:layout_height="wrap_content"Android:layout_x="125dp"Android:layout_y="415dp"Android:textColor="#000000"Android:text="二維WEPC碼"/><TextViewAndroid:layout_width="wrap_content"Android:layout_height="wrap_content"Android:layout_x="125dp"Android:layout_y="430dp"Android:textColor="#000000"Android:text="快遞單"/><TextViewAndroid:id="@+id/textview"Android:layout_width="wrap_content"Android:layout_height="wrap_content"Android:layout_x="0dp"Android:layout_y="0dp"Android:textColor="#000000"/></AbsoluteLayout>5.2.2Activity組件的編寫相機(jī)預(yù)覽,用于開啟手機(jī)照相機(jī)。我們用一個按鈕實現(xiàn)該功能,添加一個按鈕并且設(shè)置并綁定監(jiān)聽器。在監(jiān)聽器里面我用一個Camera.PreviewCallback()函數(shù)實現(xiàn),函數(shù)調(diào)用相機(jī)的OPEN方法即可實現(xiàn)預(yù)覽功能同時將變量bIfPreview設(shè)置為true。當(dāng)然我們要取得二維碼,因此我們要不活圖片,我們需要設(shè)置圖片的格式和一些參數(shù)。 privateCamera.PreviewCallbackpreviewcallback=newCamera.PreviewCallback(){ publicvoidonPreviewFrame(byte[]data,Cameraarg1){ //取得指定范圍的幀的數(shù)據(jù) Log.e("tag","previewcallback"); PlanarYUVLuminanceSourcesource=newPlanarYUVLuminanceSource( data,800,480,dsLeft,dstop,dswidth,dsheight); mbitmap=source.renderCroppedGreyscaleBitmap(); //顯示灰度圖 Matrixmatrix=newMatrix(); matrix.setRotate(90); mbitmap=Bitmap.createBitmap(mbitmap,0,0,400,350,matrix,true);通過google提供的二維碼識別方法getText()得到二維碼所包含的的字符串信息儲存在字符串strQR2中,如果二維碼信息隱藏的是以“http://”開頭的網(wǎng)址,那么手機(jī)便調(diào)用瀏覽器瀏覽該網(wǎng)站;如果二維碼信息隱藏的是以“wait://”開頭的電話號碼,那么手機(jī)直接調(diào)用撥打電話功能;如果二維碼信息隱藏的是以“TEL:”開頭的電話號碼,那么手機(jī)直接調(diào)用撥打電話功能;若僅是普通文字,則將文本顯示出來即可。try{ Resultresult=reader.decode(bitmap); StringstrQR2=result.getText(); StringstrResult="BarcodeFormat:" +result.getBarcodeFormat().toString()+"text:" +result.getText(); if(strQR2!=""){ if(URLUtil.isNetworkUrl(strQR2)){/*如果二維碼信息隱藏的是以“http://”開頭的網(wǎng)址,那么手機(jī)便調(diào)用瀏覽器瀏覽該網(wǎng)站*/ mMakeTextToast(strQR2,true); UrimUri=Uri.parse(strQR2); Intentintent=newIntent(Intent.ACTION_VIEW,mUri); startActivity(intent); }elseif(eregi("wtai://",strQR2)){/*如果二維碼信息隱藏的是以“wait://”開頭的電話號碼,那么手機(jī)直接調(diào)用撥打電話功能*/ String[]aryTemp01=strQR2.split("wtai://"); IntentmyIntentDial=newIntent( "Aent.action.DIAL",Uri.parse("tel:" +aryTemp01[1])); startActivity(myIntentDial); }elseif(eregi("TEL:",strQR2)){ /*如果二維碼信息隱藏的是以“TEL:”開頭的電話號碼,那么手機(jī)直接調(diào)用撥打電話功能*/ String[]aryTemp01=strQR2.split("TEL:"); IntentmyIntentDial=newIntent( "Aent.action.DIAL",Uri.parse("tel:" +aryTemp01[1])); startActivity(myIntentDial); }else{ /*若僅是普通文字,則將文本顯示出來即可*/ mMakeTextToast(strQR2,true); } }5.3驗證程序讀取的二維碼信息測試是為了發(fā)現(xiàn)程序中的錯誤而執(zhí)行程序的過程,測試的目的就是在軟件投入生產(chǎn)運行之前,盡可能的發(fā)現(xiàn)軟件中的錯誤并能及時改正。當(dāng)我們把整個項目的完成之后,將其SurfaceViewTest.apk文件拷貝到手機(jī)上,在Android手機(jī)上進(jìn)行安裝,能夠成功安裝軟件。為了確定二維碼的解析是否正確,通過在線二維碼生成器生成包含特定信息的二維碼對程序的識別準(zhǔn)確率進(jìn)行測試。當(dāng)二維碼中包含特定網(wǎng)址信息時,用Android手機(jī)對準(zhǔn)二維碼掃描成功后就會自動調(diào)用瀏覽器,訪問特定網(wǎng)址信息,如圖5.3所示;圖5.3網(wǎng)址信息掃描識別成功當(dāng)二維碼中包含特定電話號碼信息時,用Android手機(jī)對準(zhǔn)二維碼掃描成功后會自動調(diào)用系統(tǒng)撥號程序,并自動完成特定電話號碼輸入,如圖5.4所示;圖5.4電話號碼掃描識別成功當(dāng)二維碼中包含特定文本信息時,用Android手機(jī)對準(zhǔn)二維碼掃描成功后會自動在屏幕上顯示該文本信息,如圖5.5所示;圖5.5文本信息掃描識別成功
總結(jié)與展望在互聯(lián)網(wǎng)和移動通信不斷發(fā)展的今天,以手機(jī)為代表的移動終端技術(shù)及產(chǎn)品得到了極大的推廣,Android手機(jī)應(yīng)用程序也是花樣翻新層出不窮。通過這次畢業(yè)設(shè)計,我拓寬了知識面,鍛煉了能力,綜合素質(zhì)得到較大提高。Android二維碼的掃描識別系統(tǒng)設(shè)計的基本目的,在于通過理論與實際的結(jié)合進(jìn)一步提高思想覺悟,將以前學(xué)習(xí)的知識串聯(lián)起來并進(jìn)一步鞏固。在本次畢業(yè)設(shè)計的Android軟件開發(fā)過程中,也學(xué)習(xí)到了很多軟件工程領(lǐng)域的規(guī)范化的開發(fā)方法、建模方法、同時也鍛煉了自己查找資料和文檔撰寫的能力。在需求分析階段,我根據(jù)所學(xué)軟件工程理論知識,特別是需求分析、總體設(shè)計、詳細(xì)設(shè)計部分的知識,和其中的分析和建模的方法,設(shè)計了需要實現(xiàn)的基本功能。提出本項目所要實現(xiàn)的目標(biāo),系統(tǒng)性能、安全性、可靠性方面的要求等。在系統(tǒng)設(shè)計階段,我們又仔細(xì)復(fù)習(xí)教材中關(guān)于概要設(shè)計中應(yīng)用的相關(guān)方法、應(yīng)注意的幾個問題和概要設(shè)計階段的目標(biāo),在需求分析的基礎(chǔ)上有提出了更具體的可行性分析和實現(xiàn)方案。通過這次畢業(yè)設(shè)計使自己對知識的運用能力得到提升;而且還鍛煉了我的自學(xué)能力;更重要的是培養(yǎng)了觀察、分析和解決問題的實際工作能力,對以后的工作將會起到很好的幫助。
參考文獻(xiàn)[1]宋永生.基于Android的商品比價系統(tǒng)的設(shè)計與實現(xiàn)[J].電腦知識與技術(shù).2011(18)[2]楊兆選,吳佳鵬,白卓夫,蘇育挺,王曾敏.基于Gabor濾波和BP神經(jīng)網(wǎng)絡(luò)的二維條碼區(qū)域提取[J].天津大學(xué)學(xué)報.2010(03)[3]高羽佳,張旭東,項尚.基于圖像處理的QR碼識別研究[J].滁州學(xué)院學(xué)報.2009(01)[4]肖翔,劉曉明,王云柯.QR碼圖像的矯正與定位方法研究[J].計算機(jī)科學(xué).2007(11)[5]邵晨光,姚娜,胡汝坤.基于HOUGH變換的二維條碼識別技術(shù)的研究[J].長春師范學(xué)院學(xué)報.2007(08)[6]劉悅,劉明業(yè),劉明軍.快速響應(yīng)矩陣碼自動識別算法的設(shè)計[J].計算機(jī)系統(tǒng)應(yīng)用.2006(06)[7]劉慧娟.一種快速響應(yīng)碼圖像的分割和校正方法[J].電子測量與儀器學(xué)報.2006(01)[8]薄華,馬縛龍,焦李成.圖像紋理的灰度共生矩陣計算問題的分析[J].電子學(xué)報.2006(01)[9]劉寧鐘.復(fù)雜背景中條碼檢測定位技術(shù)的研究[J].南京航空航天大學(xué)學(xué)報.2005(01)[10]劉寧鐘,楊靜宇.基于波形分析的二維條碼識別[J].計算機(jī)研究與發(fā)展.2004(03)[11]靳巖,姚尚朗.GoogleAndroid開發(fā)入門與實戰(zhàn)[M].北京:人民郵電出版社,2009.[12]BurnetteEd.Android基礎(chǔ)教程.張波,高朝勤,楊選等譯[M].北京:人民郵電出版社.2009.[13]王向輝,張國印,陳潔.Android應(yīng)用程序開發(fā)[M].北京:清華大學(xué)出版社,2010.[14]余志龍.GoogleAndroidSDK開發(fā)范例大全[M].北京:人民郵電出版社,2009.[15]RogerS.Pressman.軟件工程:實踐者的研究方法(原書第7版).鄭人杰,馬素霞等譯[M].北京:機(jī)械工業(yè)出版社.2011.[16]張海藩.軟件工程導(dǎo)論[M].北京:清華大學(xué)出版社.2008.[17]IanSommerville,軟件工程[M].北京:機(jī)械工業(yè)出版社.2011.[18]ShariLawrencePfleeger,JoanneM.Atlee等著.軟件工程(第4版)[M].楊衛(wèi)東等譯.北京:人民郵電出版社.2003.[19]魏祖寬,胡旺,鄭莉華,陳安龍.數(shù)據(jù)庫系統(tǒng)及應(yīng)用[M].北京:電子工業(yè)出版社,2008.[20]趙真.Eclipse開發(fā)技術(shù)詳解[M].化學(xué)工業(yè)出版社.2010.[21]彭晨陽.java實用系統(tǒng)開發(fā)指南[M].北京:機(jī)械工業(yè)出版社,2004.[22]廖文奎.Struts編程基礎(chǔ)與實例精講[M].北京:中國電力出版社,2006.[23]WilliamP.Hakanson.BarCodesBringHigh-flyingSuccessToHelicopter[J]CompanyManufSyst,1988,6(10)[24]W.C.Mc.Cubbins.BarCodesQualityControl:WhyBarCodeVerification.ProceedingsoftheTechnicalProgram[J].NEPCONWEST’95(Norwalk,CT,USA:ReedExihibition.Compainies1995)[25]UngerS.H.PatternDetectionandRecognition[J].ProceedingoftheIRE.1959:1737-1752p
致謝在完成畢業(yè)論文此期間通過大量收集資料和廣泛閱讀文獻(xiàn),我認(rèn)識到了自己的諸多不足,同時也有很多收獲。即使對大學(xué)四年所學(xué)的總結(jié)和應(yīng)用,也是對自己的一次檢驗和磨礪。首先,我要特別感謝我的指導(dǎo)老師,胡瑛老師。胡瑛老師學(xué)問淵博、治學(xué)嚴(yán)謹(jǐn)、平易近人。感謝老師在百忙之中抽出時間指導(dǎo)我的畢業(yè)論文寫作,以淵博的學(xué)識、非凡的氣質(zhì)、敬業(yè)的工作作風(fēng)、獨特的人格魅力,始終感染著我、激勵著我,這些都將成為寶貴的財富讓我享用終身。同時也感謝默默奉獻(xiàn)在三尺講臺上的各位老師和大學(xué)四年一直默默關(guān)心這我的輔導(dǎo)員老師。感謝我的同學(xué)朋友們在學(xué)習(xí)和生活中對我的關(guān)心和幫助,感謝她們在我論文寫作中遇到瓶頸時給予我建議。你們的睿智博學(xué)、積極向上、勤勉不息時時激勵著我,這段一起走過的美好時光將深深地刻入我記憶的年輪。感謝我的父母,感謝他們一直以來對我學(xué)習(xí)和生活上的關(guān)心,感謝他們用善良、高尚的品德讓我懂得了如何做人、如何處世。他們無聲的愛正是我前進(jìn)中最強大的精神動力最后,謹(jǐn)向在百忙之中抽出時間評審本論文的老師致以誠摯的感謝!附錄附錄1Activity代碼packagecom.dream.surface.camera;importjava.security.PublicKey;importjava.util.Timer;importjava.util.TimerTask;importjava.util.regex.Matcher;importjava.util.regex.Pattern;importcom.dream.surface.R;importcom.google.zxing.BinaryBitmap;importcom.google.zxing.MultiFormatReader;importcom.google.zxing.Result;importcom.google.zxing.Android.PlanarYUVLuminanceSource;importmon.HybridBinarizer;importandroid.R.integer;importandroid.app.Activity;importandroid.content.Context;importandroid.content.Intent;importandroid.graphics.Bitmap;importandroid.graphics.Matrix;importandroid.hardware.Camera;importandroid.hardware.Camera.PreviewCallback;import.Uri;importandroid.os.Bundle;importandroid.util.AttributeSet;importandroid.util.Log;importandroid.view.SurfaceHolder;importandroid.view.View;importandroid.view.Window;importandroid.view.WindowManager;importandroid.view.SurfaceHolder.Callback;importandroid.view.SurfaceView;importandroid.view.View.OnClickListener;importandroid.webkit.URLUtil;importandroid.widget.Button;importandroid.widget.EditText;importandroid.widget.ImageView;importandroid.widget.TextView;importandroid.widget.Toast;publicclassPictureTestextendsActivity{ privateFrontViewfrontview; privatePictureSurfaceTestsurCameraView; privatePictureSurfaceTestsurretake; privateBackGroundbackground; privateButtoncancel; privateButtonretake; privateButtontakePictureButton;privateImageViewimageView; privateTextViewtextView; privateTimermTimer; privateMyTimerTaskmTimerTask;privateBitmapmbitmap; privateintds
溫馨提示
- 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2021初級護(hù)師考試基礎(chǔ)護(hù)理學(xué)考點習(xí)題及答案
- 2024年07月浙江路橋農(nóng)商銀行暑期實習(xí)生招募筆試歷年參考題庫附帶答案詳解
- 2024年07月浙江民生銀行金華二級分行社會招考(720)筆試歷年參考題庫附帶答案詳解
- 2024年漣水縣中醫(yī)院高層次衛(wèi)技人才招聘筆試歷年參考題庫頻考點附帶答案
- 2024年漣源市中醫(yī)院高層次衛(wèi)技人才招聘筆試歷年參考題庫頻考點附帶答案
- 基本看圖紙技能指南
- 2024年海南省海口監(jiān)獄醫(yī)院高層次衛(wèi)技人才招聘筆試歷年參考題庫頻考點附帶答案
- 2024年海南省婦幼保健院高層次衛(wèi)技人才招聘筆試歷年參考題庫頻考點附帶答案
- 古詩詞誦讀《涉江采芙蓉》說課稿 2024-2025學(xué)年統(tǒng)編版高中語文必修上冊
- 醫(yī)院后勤管理培訓(xùn)
- 人工氣道濕化的護(hù)理培訓(xùn)課件
- 電網(wǎng)適用的法律法規(guī)標(biāo)準(zhǔn)規(guī)范清單
- 讀書分享-給教師的一百條建議
- GB/T 4269.3-2000農(nóng)林拖拉機(jī)和機(jī)械、草坪和園藝動力機(jī)械操作者操縱機(jī)構(gòu)和其他顯示裝置用符號第3部分:草坪和園藝動力機(jī)械用符號
- GB/T 11618.1-2008銅管接頭第1部分:釬焊式管件
- 開工復(fù)工第一課
- 安徽省淮南市鳳臺縣基層診所醫(yī)療機(jī)構(gòu)衛(wèi)生院社區(qū)衛(wèi)生服務(wù)中心村衛(wèi)生室地址信息
- 旅游服務(wù)禮儀說課市公開課金獎市賽課一等獎?wù)n件
- 【線性代數(shù)自考練習(xí)題】滇西應(yīng)用技術(shù)大學(xué)專升本真題匯總(附答案解析)
- 英語北京版四年級(上冊)單詞匯總
- 組織知識清單
評論
0/150
提交評論