版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
PAGE1PAGE一款基于Android平臺的圖像處理系統(tǒng)設(shè)計摘要隨著科學(xué)技術(shù)的不斷進步與發(fā)展,互聯(lián)網(wǎng)技術(shù)以及無線通信技術(shù)更是像空氣一樣充斥在每個人的生活中。這導(dǎo)致智能手機、平板電腦等智能終端的快速普及,智能設(shè)備在我們的生活中漸漸占據(jù)了更加重要的地位。本文提出了一種基于安卓手機的拍照及圖像處理APP的設(shè)計與實現(xiàn)方案,介紹了Android平臺以及圖像處理軟件的框架設(shè)計。本系統(tǒng)采用AndroidStudio作為集成開發(fā)工具,使用Java語言開發(fā)。實現(xiàn)了通過調(diào)用系統(tǒng)相機或從相冊中獲取圖片并將圖片展現(xiàn)給用戶,由用戶選擇某一區(qū)域像素點進行油摻雜含量的獲取等功能。經(jīng)過實際測試,系統(tǒng)操作簡單便捷,功能較為實用,且對油摻雜含量的平均識別準(zhǔn)確率較高,并且在主流型號的安卓設(shè)備均能正常使用。關(guān)鍵詞:安卓;圖像處理;IntelliJIDEA;Java目錄TOC\o"1-2"\h\z\u1 緒論 11.1研究背景 11.2研究現(xiàn)狀 21.3研究意義 41.4全文組織結(jié)構(gòu) 52基礎(chǔ)知識及相關(guān)設(shè)計原理 62.1Android簡介 62.2AndroidStudio簡介 102.3AndroidSDK簡介 112.4Android模擬器 112.5RGB介紹 113開發(fā)的可行性與需求分析 123.1可行性分析 123.2需求分析 134系統(tǒng)分析與總體設(shè)計 144.1總模塊劃分 144.2圖像獲取模塊 144.3圖像顯示模塊 154.4圖像保存模塊 174.5圖像處理模塊 175系統(tǒng)的詳細(xì)設(shè)計與實現(xiàn) 185.1系統(tǒng)文件的整體結(jié)構(gòu) 185.2系統(tǒng)界面的實現(xiàn) 195.3系統(tǒng)功能的實現(xiàn) 196結(jié)論 23參考文獻(xiàn) 25
緒論1.1研究背景隨著我們現(xiàn)代科學(xué)和信息技術(shù)的不斷進步與快速發(fā)展,互聯(lián)網(wǎng)信息技術(shù)和現(xiàn)代無線通訊網(wǎng)絡(luò)技術(shù)就像空氣一樣彌漫在每個人的日常生活中。這些使得智能手機、平板電腦等各種移動網(wǎng)絡(luò)智能終端設(shè)備迅速深入發(fā)展和廣泛普及,智能設(shè)備在我們的生活中漸漸占據(jù)了更加重要的地位。手機軟硬件水平的不斷提升,導(dǎo)致人們對于手機的需求也產(chǎn)生了巨大的變化,從簡簡單單的撥打電話、收發(fā)短信等基本功能轉(zhuǎn)向訪問互聯(lián)網(wǎng)、游戲娛樂等需求,如今在這些功能上的使用體驗逐漸成為評價手機的重要因素。反觀近年來的手機操作系統(tǒng),移動智能終端早已融入了我們?nèi)粘I詈凸ぷ鞯母鱾€角落。由Google研究和發(fā)行的Android操作系統(tǒng)被認(rèn)為是目前應(yīng)用最廣泛的一種移動端操作系統(tǒng)。2008年9月,Google正式對外推出了Android1.0版本移動端操作系統(tǒng),并且正式公布了Android系統(tǒng)的源代碼。此后,Google不斷的更新和升級Android系統(tǒng)版本,Android系統(tǒng)得到了許多硬件廠商和大量用戶的歡迎。據(jù)截至2020年10月統(tǒng)計調(diào)查機構(gòu)Netmarketshare的數(shù)據(jù),Android和iOS占移動端操作系統(tǒng)的99.78%,其中Android系統(tǒng)所占比例為73.03%。由于ios代碼不開源,價格比較昂貴,得不到開發(fā)者和大多數(shù)用戶青睞,致使其市場占有份額遠(yuǎn)低于安卓。從以上數(shù)據(jù)可以看出來,安卓移動終端的智能手機在國內(nèi)具有不可撼動的霸主地位,未來基于Android系統(tǒng)的應(yīng)用程序必然會走向快速成長的新時代。由于Android系統(tǒng)采用了開源的方式,給予了開發(fā)者和終端廠商更大的靈活性,開發(fā)者在軟件程序的開發(fā)和不同手機的移植上更加簡單,不必再考慮到對于不同廠商的軟件內(nèi)容進行審核。終端廠家可以根據(jù)自己的需求對其進行深度量身定制的系統(tǒng),來開發(fā)出適合自己的本土化應(yīng)用。隨著終端廠家、電信運營商及第三方應(yīng)用開發(fā)人員的推廣,用戶可供選擇的應(yīng)用資源將得到進一步豐富。而且Android系統(tǒng)的廣泛使用并非只是局限于移動設(shè)備產(chǎn)品。近年來,它迅速發(fā)展拓寬了應(yīng)用領(lǐng)域,包括智能平板電腦、汽車移動操作系統(tǒng)、電視以及機頂盒、智能家電、智慧會議管理系統(tǒng)等。目前各IT技術(shù)廠商都在努力積極研究和探索開發(fā)前沿的應(yīng)用程序和軟件,望在Android操作系統(tǒng)技術(shù)開發(fā)的最后一個關(guān)鍵時期占據(jù)更大的市場份額。從上述中可以得出結(jié)論,安卓移動終端的智能手機在國內(nèi)具有不可撼動的霸主地位,因此對于基于安卓手機的拍照及圖像處理APP來說將得到更廣泛的應(yīng)用??萍荚诎l(fā)展,社會在進步,企業(yè)也把成功的關(guān)鍵也由技術(shù)、管理轉(zhuǎn)到了創(chuàng)新這個主題上。現(xiàn)如今,企業(yè)已經(jīng)把自己的創(chuàng)新作為一個企業(yè)能夠真正地生存與發(fā)展的基礎(chǔ)和核心,創(chuàng)新的內(nèi)容大致可以概括為:技術(shù)、體制、思想等很多方面。概要而言,技術(shù)創(chuàng)新的應(yīng)用可以降低生產(chǎn)成本,改善了生產(chǎn)的效率;要更加有秩序地監(jiān)督和規(guī)范企業(yè)的經(jīng)營和日常運作,那么就需要我們進行制度的革命性創(chuàng)新;在創(chuàng)新中相對比較重要的一個方面便是思維的創(chuàng)新,企業(yè)經(jīng)營管理人員思維的創(chuàng)新能夠促使企業(yè)在正確的發(fā)展道路上得到保障和進步,員工們的這種思維和創(chuàng)新才能夠增強企業(yè)內(nèi)部員工的凝聚力,為整個企業(yè)發(fā)展帶來更多的經(jīng)濟效益。因此,企業(yè)若沒有了創(chuàng)新點,它的產(chǎn)品就失去了競爭力,一味的去模仿永遠(yuǎn)都只能走在后面。不僅僅是企業(yè),社會的方方面面都是需要創(chuàng)新的,只有這樣社會才能進步??梢娷浖膭?chuàng)新是必須的,也是致命的。作為軟件的載體,現(xiàn)在互聯(lián)網(wǎng)已經(jīng)成為了發(fā)展最為迅猛的產(chǎn)業(yè)之一,這就必然導(dǎo)致了軟件技術(shù)的快速更新?lián)Q代,一個棒的創(chuàng)新很可能顛覆整個軟件產(chǎn)業(yè),導(dǎo)致互聯(lián)網(wǎng)革命??梢娷浖?chuàng)新的重要性。如果你的軟件像Facebook那樣有很好的創(chuàng)新點,你也很可能成就自己的軟件王國。軟件行業(yè)相比于其他行業(yè),要有更低的起點,更多的機遇。1.2研究現(xiàn)狀1.2.1操作系統(tǒng)研究現(xiàn)狀近年來,隨著電子科學(xué)和技術(shù)的進步與發(fā)展,智能手機的開發(fā)與研究以及其應(yīng)用已經(jīng)引起了全球移動廠商的廣泛重視。過去幾年,移動廠商使智能設(shè)備不僅從功能上獲得很多成就,而且在性能上也取得了相當(dāng)大幅度的改善。近年來,智能手機正迅速發(fā)展成為個人計算與通信的重要核心設(shè)備。此外,隨著未來我國5g網(wǎng)絡(luò)和WLAN的建立與發(fā)展,智能手機的普及率明顯增強。隨著國民經(jīng)濟的飛速發(fā)展,它也基本上流行于老百姓的生活中。由于移動端和智能手機諸多優(yōu)點,給傳統(tǒng)的互聯(lián)網(wǎng)行業(yè)帶來了一個全新的服務(wù)領(lǐng)域與商機。而且智能手機強大的一個重要功能之一在于它是因為其強大的移動設(shè)備操作系統(tǒng),所以在智能手機操作系統(tǒng)之間的競爭也越來越激烈。目前,手機操作系統(tǒng)主要有以下幾種。(1)Android系統(tǒng)。Android是Google公司于2007年發(fā)布的智能手機操作系統(tǒng),最大的優(yōu)勢之一就是其具有良好的開放性,同時也很便捷,現(xiàn)在安卓最新的軟件版本是android11,可以直接去其官網(wǎng)查找到每一個軟件版本的源代碼,安卓的底層所采用的是Linux內(nèi)核,基于安卓平臺而設(shè)計和開發(fā)的各種應(yīng)用都是使用java編程語言,安卓系統(tǒng)的軟件兼容性很好,它已經(jīng)兼容了谷歌市場中許多的手機和應(yīng)用,為此也吸引了許多的移動終端制作商和程序員。android系統(tǒng)的應(yīng)用非常廣泛,例如將安卓平臺的應(yīng)用融入到對電力儀表進行遠(yuǎn)程讀取的系統(tǒng)中,很好地解決了傳統(tǒng)的指針式儀表閱讀不方便的問題。又如通過安卓平臺已經(jīng)實現(xiàn)了對木馬進行檢測的監(jiān)控系統(tǒng),實驗結(jié)果表明該監(jiān)控系統(tǒng)可以有效地提高木馬的檢測效率。(2)IOS系統(tǒng)。ios系統(tǒng)最初發(fā)布于2007年,蘋果移動設(shè)備就是基于這個系統(tǒng)進行開發(fā),隨后ios系統(tǒng)逐漸變得成熟了起來,其用途也隨之拓寬,之后又被廣泛地應(yīng)用在ipodtouch、ipad、itv等各類產(chǎn)品上。ios系統(tǒng)不僅在設(shè)計上擁有炫麗的人機交互界面和完全符合使用者身心的操作體驗感,而且采用了BSDUNIX的軟件內(nèi)核和UNIX系統(tǒng)的硬件內(nèi)存進行管理的方式,使得該系統(tǒng)的軟件功能性大幅度地提高,運行更加流暢并且使得用戶在蘋果的應(yīng)用商店中直接下載和安裝使用該系統(tǒng)的應(yīng)用程序,基于以上眾多的優(yōu)點,雖然蘋果機廣泛地受到了歡迎,但是美中不足的一點就是,它主要定位于上層的用戶并且由于該系統(tǒng)被完全封閉,它的研究和開發(fā)過程都需要非常高的技術(shù)水平和財力支撐,所以其的發(fā)展也就受到了限制。(3)Symbian系統(tǒng)。諾基亞在2008年收購塞班并致力于發(fā)展塞班系統(tǒng),曾經(jīng)塞班系統(tǒng)因其自身具備的工作實時性和支持多任務(wù)處理等功能,當(dāng)時已經(jīng)占據(jù)的市場份額的最大部分。Symbian系統(tǒng)的優(yōu)點是耗電低、運行內(nèi)存小,正好符合手機內(nèi)存有限的特點。塞班系統(tǒng)雖然比較成熟,但是還是存在許多缺點,主要體現(xiàn)在開源不夠徹底,Symbian系統(tǒng)的普遍機型配置都不太高,CPU運行速度也有待加強,在多媒體的支持上不夠?qū)挿海捎谄洳捎玫氖嵌鄠€平臺對第三方軟件的支持,所以兼容性差。之后由于Android系統(tǒng)的出現(xiàn),它的用戶數(shù)量明顯下降,很快就淹沒在市場競爭中,直至消失,在2011年底,諾基亞放棄了塞班系統(tǒng),直至2014年,徹底停掉了對塞班系統(tǒng)的技術(shù)支持。(4)Windowsphone平臺。Windows操作系統(tǒng)最常見的是應(yīng)用在PC端,為了在手機領(lǐng)域創(chuàng)造出同樣的價值,微軟研發(fā)了Windowsphone系統(tǒng),并且于2010年由微軟公司正式發(fā)布。系統(tǒng)設(shè)計的最初目的是為了與Android和IOS系統(tǒng)競爭手機市場,以便在智能手機操作系統(tǒng)市場上占有一席之地。在2014年諾基亞放棄了塞班系統(tǒng)之后,開始和微軟合作,共同開發(fā)WindowsPhone?,F(xiàn)在最新的系統(tǒng)版本是8.1,此系統(tǒng)已經(jīng)終結(jié),完全被windows10代替,WindowsPhone8.1就是最后一個版本。1.2.2圖像處理技術(shù)研究現(xiàn)狀圖像處理技術(shù)是20世紀(jì)60年代隨著計算機技術(shù)和VLSI(VeryLargeScaleIntegration)的發(fā)展而產(chǎn)生、發(fā)展和不斷成熟起來的一個新興技術(shù)領(lǐng)域,它在理論上和實際應(yīng)用中都取得了很大的成就。圖像處理技術(shù)的研究方向雖然分支較多較廣,但是按圖像類型分類,整體研究方向可分為模擬圖像處理和數(shù)字圖像處理兩大類。本文主要介紹數(shù)字圖像處理,數(shù)字圖像處理的主要工作是將圖像信號轉(zhuǎn)換成數(shù)字信號,然后利用硬件設(shè)備如計算機對其進行進一步處理。利用電子計算機進行圖像處理的技術(shù)起始于二十世紀(jì)中期,初期的圖像處理的目標(biāo)是增強圖像的質(zhì)量和視覺性,達(dá)到人們期望的視覺效果為目的。在當(dāng)時的圖像處理中,最常見的處理一般是輸入質(zhì)量低的圖像,通過計算機處理后,將提升質(zhì)量后的圖像進行輸出,現(xiàn)在,更多的圖像處理技術(shù)正在發(fā)展,包括圖像的識別、圖像復(fù)原、圖像理解等新興技術(shù)。數(shù)字圖像處理具有很多優(yōu)點,最重要的一點就是其處理圖像精度較高,處理內(nèi)容非常繁雜多樣。除此之外,不可忽視的一點就是,數(shù)字圖像處理可以利用計算機強大的運算能力進行高強度的復(fù)雜運算。而缺點就在于復(fù)雜問題的處理速度上,目前也有許多科研工作者致力于提升數(shù)字圖像處理速度的算法研究。數(shù)字圖像處理技術(shù)發(fā)展速度極快,現(xiàn)如今已經(jīng)應(yīng)用于各個行業(yè)領(lǐng)域,對生物工程、電子科學(xué)、天文學(xué)、物理學(xué)、安全工程、工農(nóng)業(yè)、教育業(yè)、藝術(shù)、經(jīng)濟、國家軍事防御等領(lǐng)域產(chǎn)生重大的影響并極大促進了這些領(lǐng)域的蓬勃發(fā)展。圖像處理技術(shù)現(xiàn)如今己經(jīng)成為一口引人注目和前景廣闊的新興學(xué)科。為了解決圖像處理技術(shù)帶來的問題,國內(nèi)外數(shù)不勝數(shù)的圖像處理類軟件己經(jīng)被開發(fā)出來,但現(xiàn)狀則是這些軟件還是存在或多或少的缺陷,而且整體的設(shè)計也沒有創(chuàng)新,在實用性上和用戶體驗上都不再能滿足當(dāng)代用戶快節(jié)奏的使用需求1.3研究意義現(xiàn)如今通過手機我們可以完成越來越多的事情,可以從互聯(lián)網(wǎng)接收到各式各樣的信息,可以與朋友在線聊天、視頻,可以在閑暇時間玩玩游戲。而正是不同的APP才能幫助我們達(dá)到這一目的。APP還可以與傳統(tǒng)行業(yè)相結(jié)合,例如美團APP,人們只需要在用餐前通過手機APP向餐廳發(fā)起預(yù)約,就可以大大縮短在餐廳內(nèi)的排隊等候時間。又例如各類銀行APP,一些基本的查詢余額、轉(zhuǎn)賬等業(yè)務(wù)都可以在手機APP上自助操作,不再需要去銀行柜臺,大大提高了辦事效率。再例如微信朋友圈、微博、抖音等APP的開發(fā),漸漸成為人們通過文字、圖像甚至短視頻等方式向其他人展示自己的生活。而伴隨著科技的發(fā)展,文字等傳統(tǒng)媒介漸漸地淡出人們眼中,對于圖像、視頻的需求不斷增大,而且人們漸漸地不再滿足于使用原始圖像、視頻,在使用時都會對圖像加以處理以達(dá)到想要的效果。圖像處理目前在天文、醫(yī)學(xué)、農(nóng)業(yè)等領(lǐng)域都有廣泛的應(yīng)用。在天文方面,通過對遙感圖片進行圖像處理可以判別出地貌及資源分布;在醫(yī)學(xué)方面,可以用來通過AI分析檢測病情,對病灶的有無以及位置進行早期輔助診斷;在農(nóng)業(yè)方面,可以對農(nóng)作物的圖像進行采集與分析,判斷植物長勢與病蟲害情況,幫助實現(xiàn)增產(chǎn)增收。在Android系統(tǒng)應(yīng)用如此廣泛的今天,開發(fā)一款基于Android系統(tǒng)的圖像處理軟件可以便于我們對智能終端獲取到的圖像進行及時的處理。圖像處理技術(shù)指通過計算機對數(shù)字圖像數(shù)據(jù)進行分析與處理,可以用于改善圖像的視覺效果,在許多領(lǐng)域都有重要的應(yīng)用價值。因此,開發(fā)出Android平臺的圖像處理軟件具有實用價值。相比于PC終端的圖像處理軟件,移動終端的圖像處理軟件雖然大多在功能數(shù)量及專業(yè)性上有所欠缺,但具有簡單、便捷的優(yōu)勢。現(xiàn)在許多年輕人喜歡用圖像記錄生活中的方方面面,拍照后需要對圖像進行一些編輯和處理。對于大多數(shù)的普通用戶而言,在手機上對圖像進行一些簡單的處理就能達(dá)到目標(biāo)的效果,沒有必要使用PC端上專業(yè)性較強、操作相對繁瑣的專業(yè)圖像處理軟件,因此本課題可以對我們實際生活產(chǎn)生幫助。1.4全文組織結(jié)構(gòu)全文一共分為六章,除了本章緒論外,其余五章安排如下:第二章:基礎(chǔ)知識及相關(guān)設(shè)計原理,主要介紹了本次開發(fā)的基礎(chǔ)知識和所使用的相關(guān)技術(shù),分別從編程語言,組件與工具,設(shè)計模式等角度分析了本次開發(fā)的實現(xiàn)前期準(zhǔn)備,最后介紹了本次開發(fā)所使用的開發(fā)工具;第三章:開發(fā)的可行性與需求分析,主要從技術(shù),經(jīng)濟,操作,時間和法律五個角度分析了本次開發(fā)的可行性,從功能,運行等方面對本次開發(fā)做出系統(tǒng)的開發(fā)需求;第四章:系統(tǒng)的詳細(xì)設(shè)計,對要實現(xiàn)的系統(tǒng)架構(gòu),具體功能模塊的實現(xiàn)做出詳細(xì)的說明;第五章:系統(tǒng)的詳細(xì)設(shè)計與實現(xiàn),詳細(xì)介紹了本次研究的實現(xiàn)部分,對每一個功能部分做出介紹,介紹了使用的關(guān)鍵類與函數(shù),每一項功能,分別從關(guān)鍵代碼和頁面展示兩個角度介紹,全面敘述了開發(fā)的整個流程;第六章:總結(jié)與展望,主要總結(jié)了研究工作,同時針對目前研究工作中存在的一些不足提出了相應(yīng)的研究展望。
2基礎(chǔ)知識及相關(guān)設(shè)計原理2.1Android簡介Android僅僅作為一個單詞來看,它的意思為“機器人”,它是基于Linux內(nèi)核的操作系統(tǒng),其代碼開源而且免費。安卓系統(tǒng)廣泛應(yīng)用于智能設(shè)備終端,因其豐富硬件設(shè)備以及良好的擴展功能收到眾多軟件開發(fā)廠商以及開發(fā)人員的青睞。2005年,名噪一時的安迪魯賓安卓公司被Google公司收購。幾年后Google公司順勢建立了安卓開發(fā)者聯(lián)盟,提供平臺給智能硬件設(shè)備制造商和通信設(shè)備制造商。經(jīng)過許多企業(yè)的共同努力以及安卓自身開源的優(yōu)勢,安卓逐漸發(fā)展龐大。而且因其代碼開源,開發(fā)者可以快速掌握安卓的開發(fā)技巧并能夠編寫出立即可以在設(shè)備上或安卓模擬器上運行的應(yīng)用程序。相較而言,安卓模擬器與實體機并無區(qū)別,操作甚至更為便捷。每個系統(tǒng)或者產(chǎn)品總有幾家做的非常出色的公司,這樣就有了競爭者,顯然,蘋果公司的IOS系統(tǒng)和RIM的BlackberryOS系統(tǒng)是Android系統(tǒng)的主要競爭者。統(tǒng)計到2012年,Android平臺己占據(jù)全球智能操作系統(tǒng)份額第一位,占市場的近40%,到2018年,Android系統(tǒng)已經(jīng)占到全球市場的90%以上。對于終端設(shè)備用戶而言,Android之所以收到追捧主要有一下原因:(1)安卓手機各價位均有分布,對于大多數(shù)用戶而言都能過在適合自己的價位中選取心儀的產(chǎn)品,用戶體驗感較好。而且現(xiàn)如今的安卓系統(tǒng)操作簡便,能夠滿足廣大用戶群體的需求。(2)可移植性強,Android對任意平臺的移植都不受限制,且系統(tǒng)能夠自己進行垃圾處理。最重要的一點,Android代碼開源,利于開發(fā)人員對系統(tǒng)更深一步的理解以及對于系統(tǒng)的創(chuàng)新。Android的底層由C/C++實現(xiàn),應(yīng)用層通常由Java語言編寫程序。隨著Android的發(fā)展,我們既可以選擇用java編寫Android應(yīng)用程序,亦可用其它很多語言來編寫。例如使用NDK采用C/C++作為編程語言,使用SL4A則采用Python等語言。在本系統(tǒng)中,我選擇了java語言來編寫程序。2.1.1Android系統(tǒng)結(jié)構(gòu)Android系統(tǒng)構(gòu)架是安卓系統(tǒng)的體系結(jié)構(gòu),Android的系統(tǒng)架構(gòu)和其操作系統(tǒng)一樣,采用了分層的架構(gòu),共可分為四層,如圖2-1所示,從高到低依次是Android應(yīng)用層,Android應(yīng)用框架層,Android系統(tǒng)運行庫層和Linux內(nèi)核層。每一層都有明確功能,且層次結(jié)構(gòu)清晰,相互之間工作協(xié)調(diào)卻又互不干擾。圖2-1Android系統(tǒng)結(jié)構(gòu)圖應(yīng)用層:主要包括聯(lián)系人、瀏覽器、電話、通訊錄、日歷等。這些應(yīng)用程序通過Java實現(xiàn),是Google公司早期捆綁的核心應(yīng)用。應(yīng)用框架層:主要由活動管理器(ActivityManager)、通知管理器(NotificationManager)、資源管理器(ResourceManager)、內(nèi)容提供器(ContentProviders)以及視圖(Views)組成。這些組成部分都是使用Java語言編寫的封裝好的API接口,開發(fā)人員通過調(diào)用這些接口能夠完成對應(yīng)的功能。其中活動管理器負(fù)責(zé)控制Application的生命周期,包括應(yīng)用程序何時開始何時結(jié)束等;資源管理器負(fù)責(zé)各方面的資源分配與整合,便于開發(fā)人員對資源進行訪問,提高了工作效率;內(nèi)容提供器提供了數(shù)據(jù)跨平臺訪問的功能,不同程序之間可以通過調(diào)用ContentProvider來實現(xiàn)數(shù)據(jù)的交互;視圖系統(tǒng)提供了開發(fā)可視化頁面的功能。系統(tǒng)運行庫層:主要由程序庫和Android運行庫組成。程序庫又可分為系統(tǒng)C庫、媒體庫、數(shù)據(jù)庫SQLite等。媒體庫可以用于對音頻、視頻等媒體文件的播放顯示;SQLite為安卓自帶的輕型數(shù)據(jù)庫,用于存放較小容量的數(shù)據(jù)信息。Linux內(nèi)核層:作為連接軟件與硬件之間的橋梁。主要負(fù)責(zé)進程間的管理、內(nèi)存存儲的管理以及網(wǎng)絡(luò)之間通信等功能。2.1.2Android應(yīng)用程序?qū)Π沧繎?yīng)用程序的開發(fā)實際上是對Activity(活動)、Service(服務(wù))、BroadcastReceiver(廣播接收器)、ContentProvider(內(nèi)容提供者)四大組件進行組合。這四大組件之間并非獨立存在,而是通過Intent(意圖)進行相互通信。每個應(yīng)用程序可能包含一個或多個組件,應(yīng)用中用到的組件需要在AndroidManifest中注冊,否則系統(tǒng)不能識別到這些組件,組件也不能發(fā)揮出相應(yīng)的功能。Activity:是用戶操作的可視化界面;它為用戶提供了一個完成操作指令的窗口。當(dāng)我們創(chuàng)建完畢Activity之后,需要調(diào)用setContentView()方法來完成界面的顯示;以此來為用戶提供交互的入口。在AndroidApp中只要能看見的幾乎都要依托于Activity,所以Activity是在開發(fā)中使用最頻繁的一種組件。Activity的生命周期如圖2-2所示。圖2-2Activity的生命周期Service:Android中實現(xiàn)程序后臺運行的解決方案,它非常適合去執(zhí)行那些不需要和用戶交互而且還要求長期運行的任務(wù)。服務(wù)的運行不依賴于任何用戶界面,即使程序被切換到后臺,或者用戶打開了另外一個應(yīng)用程序,服務(wù)仍然能夠保持正常運行。BroadcastReceiver:在Android中,廣播是一種廣泛使用的在應(yīng)用程序之間傳輸信息的機制。廣播接收器是一種過濾、接收和響應(yīng)廣播的組件。廣播接收器可用于使應(yīng)用程序響應(yīng)外部事件。例如,當(dāng)電話呼叫的外部事件到來時,廣播接收器可用于處理。ContentProvider:用于在不同應(yīng)用間進行數(shù)據(jù)交互。2.1.3Android頁面布局管理為了豐富界面的多樣性,安卓系統(tǒng)提供的布局設(shè)置發(fā)揮了巨大作用,一個較為美觀的頁面往往采用了多種布局的相互組合。在開發(fā)過程中常用的布局有5種。LinearLayout(線性布局):最常用也是最簡單的一種布局方式,LinearLayout按照垂直或者水平的順序依次排列子元素(通過android:orientation屬性來控制),每一個子元素都位于前一個元素之后。RelativeLayout(相對布局):RelativeLayout按照控件之間相對位置或相對父容器位置進行排列布局,組件與組件之間存在很強依賴性。TableLayout(表格布局):以行和列的形式對控件進行管理,每一行為一個TableRow對象,或一個View控件。FrameLayout(框架布局):整個界面被當(dāng)成一塊空白備用區(qū)域,所有的子元素都不能被指定放置的位置,它們統(tǒng)統(tǒng)放于這塊區(qū)域的左上角,并且后面的子元素直接覆蓋在前面的子元素之上,將前面的子元素部分和全部遮擋。AbsoluteLayout(絕對布局):絕對布局相比其它幾種布局,更為直觀,只需依據(jù)子元素android:layout_x和android:layout_y屬性,即相當(dāng)于x坐標(biāo)和y坐標(biāo)。但是因為各手機屏幕并不相同,使用絕對布局會導(dǎo)致頁面錯亂,嚴(yán)重影響用戶體驗。FrameLayout(幀布局):幀布局是幾種布局中最簡略的。由于其糟糕的界面風(fēng)格,開發(fā)人員很少使用它。對于布局中使用的組件,前一個組件將覆蓋后一個組件,并且效果處于層疊狀態(tài)。2.2AndroidStudio簡介AndroidStudio是用于開發(fā)Android應(yīng)用的官方集成開發(fā)環(huán)境(IDE),以IntelliJIDEA為基礎(chǔ)構(gòu)建而成。除了IntelliJ強大的代碼編輯器和開發(fā)者工具,AndroidStudio還提供更多可提高Android應(yīng)用構(gòu)建效率的功能,例如:基于Gradle的靈活構(gòu)建系統(tǒng)快速且功能豐富的模擬器統(tǒng)一的環(huán)境(供您開發(fā)適用于所有Android設(shè)備的應(yīng)用)ApplyChanges功能可將代碼和資源更改推送到正在運行的應(yīng)用,而無需重啟應(yīng)用代碼模板和GitHub集成,可協(xié)助您打造常見的應(yīng)用功能及導(dǎo)入示例代碼大量的測試工具和框架Lint工具,能夠找出性能、易用性和版本兼容性等方面的問題C++和NDK支持內(nèi)置對GoogleCloudPlatform的支持,可輕松集成GoogleCloudMessaging和AppEngine2.3AndroidSDK簡介SDK的中文全稱是軟件開發(fā)工具包,它是軟件工程師建立應(yīng)用軟件的開發(fā)工具的集合,AndroidSDK是指Android專屬的軟件開發(fā)包。它包含了Android模擬器、Android的調(diào)試工具、Android的反匯編工具、開發(fā)Android應(yīng)用程序的API等,是Android開發(fā)中不可缺少的一部分,開發(fā)人員可以利用它開發(fā)Android應(yīng)用程序。2.4Android模擬器通過AndroidStudio中內(nèi)置的Android模擬器我們可以在電腦上運行Android應(yīng)用程序。新建模擬器時,我們可以模擬Android設(shè)備上相應(yīng)的硬件和軟件環(huán)境,可以選擇設(shè)備型號、SDK的版本、CPU類型、屏幕樣式、SD卡大小等。通過模擬器,我們可以模擬應(yīng)用程序在智能手機、智能平板、智能電視、智能手表等智能終端上的運行效果,不需要準(zhǔn)備相應(yīng)的硬件設(shè)備,大大節(jié)約了開發(fā)成本。模擬器目前還有一些功能上的限制,比如不支持撥打接聽真實的電話、不支持USB連接等,開發(fā)中我們可以運用真實的設(shè)備進行測試。2.5RGB介紹2.5.1RGB色彩模式RGB代表紅,綠,藍(lán)三個通道的顏色。它是一種目前行業(yè)使用最為廣泛的標(biāo)準(zhǔn)顏色模式,要獲得各種顏色,就得通過紅色(R),藍(lán)(B),綠色(G)三個顏色通道的變化,以及另一個偏移量的疊加來實現(xiàn)。這個標(biāo)準(zhǔn)幾乎能組合成人眼能夠別的所有的顏色。圖像中每一個像素的RGB分量分配一個0到255范圍內(nèi)的強度值為RGB色彩模式。例:白色的R、G、B都為255;純紅色R值為255、G值為0、B為0;黑色的R、G、B都為0。RGB圖像按照不同的比例混合三種顏色,就可以使它們在屏幕上重現(xiàn)16777216種顏色。當(dāng)三種顏色的值相等時,會產(chǎn)生灰色的陰影。2.5.2RGB原理RGB色彩模型的設(shè)計和發(fā)展的原則即為顏色的光。另一種說法即為加法混合,如紅色,綠色,和藍(lán)色的光的方式,顏色混合時,它們重疊彼此的光,和亮度等于的兩個亮度之和,更高的亮度即為更多顏色混合,即如同加法器。此外,有色的光被無色的光稀釋和亮度加強,如藍(lán)光和白光遭遇,藍(lán)色光被白光淡化,導(dǎo)致出現(xiàn)明亮的淺藍(lán)色光。知道RGB混合原理,我們可以了解設(shè)置各種顏色的軟件。加法混合的特點:越疊加越明亮。也就是說,將紅,綠,藍(lán)三盞燈的疊加時,中心三色疊加的最亮的部分為白色。紅色,綠色和藍(lán)色通道,每種顏色各分為255級的亮度,“燈”最弱為0,即為被關(guān)閉,并在255出現(xiàn)亮的“燈”。當(dāng)三色值是255是為最亮的白色,三色數(shù)值相同時為無色彩的灰度色,而三色數(shù)值都為0時為黑色。2.5.3RGB參數(shù)表參數(shù)名類型有效值范圍含義RedInteger0-255指定顏色中紅色分量強度GreenInteger0-255指定顏色中綠色分量強度BlueInteger0-255指定顏色中藍(lán)色分量強度2.63開發(fā)的可行性與需求分析3.1可行性分析可行性分析是開發(fā)過程中非常重要的一部分。進行可行性分析并不是要解決任何技術(shù)問題或設(shè)計難點,而是要從各個方面考慮本次研究的整個過程是否可行。在這個過程中,我們會考慮項目的技術(shù)難點和解決方案,采用什么技術(shù),如何開發(fā)等方面來說明整個項目是可以完成的。除了技術(shù)上的可行性,我們還會說明這個開發(fā)周期在經(jīng)濟上是可行的,也就是說整個開發(fā)過程的成本預(yù)算在我們的控制范圍之內(nèi),或者說開發(fā)系統(tǒng)未來的經(jīng)濟價值是非常可觀的。操作可行性是指交付給用戶使用后能夠在預(yù)期范圍時間內(nèi)掌握使用的基本原理。時間可行性是指整個開發(fā)過程符合我們的日期計劃。法律可行性是指開發(fā)過程中不涉及任何法律侵權(quán)問題,不冒用或者抄襲他人的科學(xué)成果。但事實并非如此??尚行苑治鍪情_發(fā)過程的基礎(chǔ)。下面我們將從技術(shù),經(jīng)濟,操作,時間和法律五個角度剖析本次學(xué)生成績管理系統(tǒng)的可行性。3.1.1技術(shù)可行性隨著手機硬件技術(shù)的不斷發(fā)展,一般的智能手機完全可以滿足圖像處理的性能需求。Android系統(tǒng)本身也提供了繪制2D和3D圖形的方法,采用AndroidStudio作為編程工具,Java語言作為編程語言,技術(shù)上完全能實現(xiàn)。3.1.2經(jīng)濟可行性經(jīng)濟可行性指我們的開發(fā)過程符合我們之前的開發(fā)預(yù)算,整個開發(fā)過程的費用都有清晰的記錄,符合開發(fā)過程的要求。而在系統(tǒng)完成后,此圖像處理app在實用性上具有很好的前景,具有很高的經(jīng)濟價值,這也符合我們在系統(tǒng)開發(fā)之前考慮的。綜上所述,我們認(rèn)為該系統(tǒng)的設(shè)計和開發(fā)在經(jīng)濟上是可行的。3.1.3操作可行性此app大部分功能都已經(jīng)通過設(shè)計好的圖形界面來實現(xiàn),圖像的獲取調(diào)用了系統(tǒng)集成的相機或相冊app,在操作上簡單直接,不會給用戶帶來歧義。綜上所述,我們可以得出結(jié)論:本次開發(fā)從操作上來講是可行的。3.1.4時間可行性在app開發(fā)之前,我們已經(jīng)制定了詳細(xì)的工作計劃,整個開發(fā)將按照既定的時間表進行,充分保證整個開發(fā)計劃的時間可行性。從2020年11月開始,我們要完成對系統(tǒng)的需求分析,同時也要學(xué)習(xí)相關(guān)的開發(fā)知識,積累有關(guān)的經(jīng)驗。從2021年3月開始,這一階段我們逐步完善了系統(tǒng)各個模塊的功能,并進行了相關(guān)的測試。2021年4月開始,將總結(jié)前幾個階段的工作并對系統(tǒng)功能上的不足進行匯總,同時開始撰寫論文。2021年5月,整個開發(fā)過程進入尾聲,論文即將完成并提交審閱。3.1.5法律可行性從法律角度上講,我們在整個開發(fā)過程中未出現(xiàn)知識產(chǎn)權(quán)問題,開發(fā)使用的技術(shù)資料都是通過合法渠道獲取,開發(fā)過程中并未抄襲任何app。綜上所述,此app的開發(fā)過程在法律上是可行的。3.2需求分析在這一部分,我們將主要介紹本文的需求分析部分。需求分析是指在對項目有了具體的了解之后,開始對要實現(xiàn)的功能進行一定的分析,并圍繞功能實現(xiàn)、程序操作以及安全運行等方面給出一些實現(xiàn)目標(biāo),以便于下一步的開發(fā)過程。3.2.1功能需求(1)圖像的獲取與保存。系統(tǒng)首先需要獲取圖像,才能對進行下一步的操作。根據(jù)手機上應(yīng)用程序的特點,獲取圖像的方式可以包括從系統(tǒng)圖庫獲取圖像、手機相機拍照獲取圖像、瀏覽文件獲取圖像三種方式,用戶從不同途徑獲取到的圖像應(yīng)該都能被處理。(2)圖像基本信息的分析。系統(tǒng)需要能夠?qū)D像信息進行計算和分析,包括文件路徑、大小、圖像分辨率,在跳轉(zhuǎn)activity時這些信息顯得尤為重要,而且可以選擇將這些信息呈現(xiàn)給用戶也能為后續(xù)的處理提供一些依據(jù)。(3)獲取RGB值。系統(tǒng)通過點擊屏幕獲取坐標(biāo)數(shù)據(jù),通過屏幕坐標(biāo)與圖片坐標(biāo)間的轉(zhuǎn)換關(guān)系計算出需要提取RGB點的坐標(biāo)。通過Bitmap內(nèi)置函數(shù)將RGB值提取出,顯示給用戶。圖像處理軟件最主要的功能就是處理圖像,該功能是系統(tǒng)的核心功能,包括了對圖像的調(diào)整、編輯,為圖像增加特效及其它相關(guān)處理。實現(xiàn)的處理的功能應(yīng)該考慮手機的性能情況和手機用戶實際需求,不應(yīng)該采用過于耗時的算法和用戶難以理解用途的功能,所以對算法的效率和功能的便捷性有要求,用戶通過這些功能能夠方便快速的對圖像進行編輯和處理。在實現(xiàn)這些功能時,應(yīng)該考慮到手機用戶對應(yīng)用軟件便捷性的要求,每個處理功能都不能有過于復(fù)雜的操作步驟。(4)計算油摻雜含量系統(tǒng)通過調(diào)用自定義算法,通過獲取到的RGB值計算出油摻雜含量。油摻雜含量的精準(zhǔn)度由RGB值的準(zhǔn)確性和算法的準(zhǔn)確性決定。3.2.2非功能需求1.性能需求(1)本系統(tǒng)運行具有穩(wěn)定性(2)本系統(tǒng)具有較高的兼容性,可以大多數(shù)安卓智能手機運行2.系統(tǒng)頁面需求界面設(shè)計美觀、簡單,方便用戶進行操作3.可靠性需求系統(tǒng)在運行期間需要保證數(shù)據(jù)的準(zhǔn)確性,不會對用戶造成誤導(dǎo)。4系統(tǒng)分析與總體設(shè)計4.1總模塊劃分該系統(tǒng)作為一款手機圖像編輯處理軟件,要實現(xiàn)的功能較多,將系統(tǒng)功能模塊化能幫助我們將大的系統(tǒng)轉(zhuǎn)換為若干個小的功能模塊去分塊實現(xiàn)。根據(jù)需求的功能,該系統(tǒng)可以分為以下幾個模塊:圖像獲取、圖像編輯、圖像顯示、圖像分析、圖像保存。功能模塊劃分如圖4-1所示,接下來將說明各個模塊的功能設(shè)計。圖4-1系統(tǒng)總功能模塊圖4.2圖像獲取模塊圖像獲取模塊可以通過三種途徑獲取手機上的圖像。用戶可以點擊桌面上的圖標(biāo)打開本軟件,在系統(tǒng)圖庫中選擇要處理的圖片,或者使用手機攝像頭,將拍照現(xiàn)得的圖像交由本軟件處理。也可以在系統(tǒng)的文件管理功能中,瀏覽圖片文件,長按住圖片文件的名字,在彈出框中選擇“打開方式”,此時出現(xiàn)可以選擇的程序的列表,在列表中選擇本軟件即可打開軟件處理此圖片。圖4-2展示了通過不同方式獲取圖片數(shù)據(jù)的傳遞及模塊間的跳轉(zhuǎn)。調(diào)用系統(tǒng)圖庫和手機攝像頭可以用Android中的Intent,中文意思是“意圖,意向”,它可以幫助應(yīng)用程序的交互和溝通。我們可以通過Intent機制,通知Android系統(tǒng)打開系統(tǒng)圖庫或手機相機,并將用戶操作得到的結(jié)果圖像傳遞給本軟件。應(yīng)用程序可以注冊系統(tǒng)的默認(rèn)打開方式,例如音樂播放軟件會注冊MP3等格式的打開方式,圖書軟件會注冊txt、pdf等格式的打開方式。當(dāng)有多個程序注冊了某一種格式文件的打開方式,用戶在長按住此種格式文件時,會彈出可選程序列表,用戶可選擇希望的程序打開。我們可以在AndroidManifest.xml中注冊打開方式,并且代碼中根據(jù)不同情況接受系統(tǒng)傳來的數(shù)據(jù)并做出相關(guān)處理。圖4-2系統(tǒng)操作流程圖4.3圖像顯示模塊圖像顯示模塊負(fù)責(zé)在從系統(tǒng)圖庫或相機中選擇完圖片后進行圖片的預(yù)展示功能,該模塊為用戶提供圖像的縮放與拖拽功能,用戶可以在縮放、拖拽后對圖片某部分進行截圖保存,該截圖為下一步提取某像素RGB值得預(yù)處理,縮小選擇范圍。程序的圖像窗口能同時檢測到縮放手勢與拖拽手勢并做出相應(yīng)的處理??s放手勢的特征為雙指按下,隨著手指移動兩指間的距離發(fā)生變化;拖動手勢的特征是一個手指按下,然后在屏幕上移動。程序中可以定義三個狀態(tài):zoom、drag、none,分別表示縮放狀態(tài)、拖拽狀態(tài)及普通狀態(tài)。根據(jù)屏幕監(jiān)測到的用戶手勢的變化,狀態(tài)也發(fā)生變化,如圖4-3所示。其中,狀態(tài)間切換的觸摸事件的含義如下:①ACTION_DOWN:單點觸摸動作。用戶手指第一次按下時觸發(fā)。②ACTION_UP:單點離開動作。用戶手指完全離開時觸發(fā)。③ACTION_POINTER_DOWN:多點觸控動作。屏幕上已經(jīng)有觸點,又有一個手指按壓。④ACTION_POINTER_UP:多點觸摸離開動作。有手指離開,但屏幕上還有觸點。此外,還有一個重要的觸摸事件ACTION_MOVE,即觸摸位置發(fā)生變化的事件,它發(fā)生于觸摸的按下與松開之間。在拖拽狀態(tài)和移動狀態(tài)下系統(tǒng)都基于ACTION_MOVE事件對圖片的顯示進行處理。圖4-3手勢操作狀態(tài)圖drag狀態(tài)由none狀態(tài)下通過ACTION_DOWN事件跳轉(zhuǎn)進入,或者在zoom狀態(tài)下通過ACTION_POINTER_UP事件跳轉(zhuǎn)進入。用戶第一次按下,或屏幕上兩指按下時一個手指離開,此時獲取初始觸摸點的坐標(biāo)。然后在ACTION_MOVE時記錄當(dāng)前按壓位置的坐標(biāo),計算出圖像的在水平方向的位移與垂直方向的位移,此時將圖像位移后顯示。zoom狀態(tài)由drag狀態(tài)通過第二個手指按下的事件跳轉(zhuǎn)進入。ACTION_POINTER_DOWN事件發(fā)生時通過觸摸的兩點坐標(biāo)獲得兩點間的距離Distance1,及兩點的中心坐標(biāo)(x,y)。然后在ACTION_MOVE時記錄按壓的兩點的坐標(biāo),算出此時兩點間的距離Distance2,則圖像的縮放倍數(shù)為Distance2/Distance1,此時將圖片縮放后顯示。圖像對比功能要求能將處理的結(jié)果圖像與原圖進行對照比較,幫助用戶觀察比較來判斷對圖像的處理是否合適。處理方法比較簡單,當(dāng)用戶按下對比顯示按鈕,即按鈕監(jiān)聽到ACTION_DOWN事件,顯示的圖像切換到原圖。當(dāng)用戶松開對比顯示按鈕,即按鈕監(jiān)聽到ACTION_UP事件,顯示的圖像切換為處理后的圖像。4.4圖像保存模塊圖像的保存模塊包括了對圖像的臨時保存和永久保存。臨時保存數(shù)據(jù)是將圖像的數(shù)據(jù)放在內(nèi)存中,它用來保存圖像的原始數(shù)據(jù)和當(dāng)前處理操作下的圖像數(shù)據(jù),利用臨時存儲還能便于圖像數(shù)據(jù)在不同模塊間的傳輸。各功能模塊由不同的Activity實現(xiàn),處理好的圖像的數(shù)據(jù)要在不同的模塊間實現(xiàn)傳輸。通常,不同Activity間傳遞數(shù)據(jù)可以用intent.putExtras(Bundleextras)方法實現(xiàn),但用來傳輸圖像數(shù)據(jù)可能會遇到問題。因為google規(guī)定了傳輸數(shù)據(jù)的大小限制,所以在傳遞數(shù)據(jù)量比較大的圖像文件時會發(fā)生OOM錯誤(內(nèi)存溢出)。為了保證程序的穩(wěn)定性和健壯性,本系統(tǒng)采用的方法是通過靜態(tài)鍵值對的形式把圖像保存到內(nèi)存上,不同Activity間只傳遞鍵的數(shù)據(jù)而不傳遞值的數(shù)據(jù)。永久保存就是將圖像通過數(shù)據(jù)流保存到外部存儲上,系統(tǒng)支持將圖片轉(zhuǎn)化為PNG、WEBP或JPEG格式保存。當(dāng)圖像保存到手機上時,手機相冊不能立即找到并顯示保存的圖像,還需要將文件插入到系統(tǒng)圖庫中并通知圖庫更新,這樣保存的圖片文件可以實時的顯示在系統(tǒng)的圖庫中。4.5圖像處理模塊4.5.1圖像處理算法通過RGB計算某像素點油摻雜含量時使用到的自定義算法如下:RGB中紅色分量與油摻雜含量之間的關(guān)系ffx代表指定顏色中紅色分量強度,RGB中藍(lán)色分量與油摻雜含量之間的關(guān)系ffx代表指定顏色中藍(lán)色分量強度,RGB中油摻雜含量與藍(lán)色分量、紅色分量比值之間的關(guān)系ffx代表r/b,xRGB中油摻雜含量與綠色分量、紅色分量比值之間的關(guān)系ffx代表r/g,x4.5.2圖像處理過程作為系統(tǒng)的核心模塊,該模塊負(fù)責(zé)對圖像顯示模塊預(yù)處理后的圖像進行再處理。通過點擊屏幕提取屏幕坐標(biāo),通過屏幕坐標(biāo)與圖片坐標(biāo)間的對應(yīng)關(guān)系計算出圖片坐標(biāo),調(diào)用Bitmap中的方法獲取該像素點上的RGB值,通過自定義圖像處理算法獲取此RGB值計算出油摻雜含量,采用Toast消息提示框的方式顯示最終結(jié)果。
5系統(tǒng)的詳細(xì)設(shè)計與實現(xiàn)5.1系統(tǒng)文件的整體結(jié)構(gòu)本系統(tǒng)基于Android平臺,采用AndroidStudio集成開發(fā)環(huán)境編程。系統(tǒng)的工程命名為prj_graduation,文件目錄的整體結(jié)構(gòu)如圖5-1所示。圖5-1Manifests文件夾下的AndroidManifest.xml是項目中重要的配置文件,它配置了程序的許多全局變量。java:主要為源代碼和測試代碼res:主要為資源目錄,存儲所有的項目資源。res文件夾下以drawable開頭的幾個包下存放了程序所需要的圖片,layout包下存放了xml格式的頁面布局文件,系統(tǒng)中大部分界面上的內(nèi)容都在這里實現(xiàn),values包下存放了字符串、樣式等資源文件。5.2系統(tǒng)界面的實現(xiàn)Android實現(xiàn)系統(tǒng)界面主要有三種方式:通過xml文件配置生成頁面;直接在java代碼中繪制和控制頁面內(nèi)容;通過繼承View類自定義頁面組件。這三種方法各有優(yōu)劣,比如通過xml文件配置生成頁面實現(xiàn)簡單、代碼量較少,將負(fù)責(zé)邏輯控制的java代碼與界面的代碼相分離,程序結(jié)構(gòu)更加合理,但功能上不夠靈活;在java代碼中實現(xiàn)界面程序代碼比XML文件實現(xiàn)繁瑣,但功能上比較靈活,可以將變化流程較復(fù)雜的界面組成部分交給java代碼實現(xiàn);自定義頁面組件的方式需要繼承View類,重寫相關(guān)的方法,能夠按照需求實現(xiàn)對界面的靈活控制。本系統(tǒng)中大部分界面的由XML文件實現(xiàn),配合java代碼對界面進行輔助實現(xiàn)。比如按鈕按下后顏色發(fā)生變化、某些頁面元素的隱藏和顯示、獲取圖片資源并按特定要求顯示,這些利用java代碼才能靈活的控制。系統(tǒng)中的縮放移動查看圖片、涂鴉和添加文字功能因為需要監(jiān)聽用戶的觸屏操作并做出反饋,所以需要自定義頁面組件實現(xiàn)相關(guān)功能。例如點擊屏幕獲取某像素點RGB值的功能,在GetRgbActivity類中編寫內(nèi)部類監(jiān)聽ImageView的觸摸事件進行RGB值得獲取。5.3系統(tǒng)功能的實現(xiàn)5.3.1導(dǎo)航界面打開應(yīng)用后,程序首先進入導(dǎo)航界面。界面效果如圖5-2所示。在這個界面下,提供兩個按鈕供用戶選擇圖像的獲取方式。實現(xiàn)此功能的類是MainActivity,它負(fù)責(zé)處理用戶關(guān)于讀取圖片方式的選取。MainActivity中為兩種選取方式對應(yīng)按鈕添加setOnClickListener監(jiān)聽,setOnClickListener參數(shù)采用匿名內(nèi)部類方式傳入。事件觸發(fā)時調(diào)用不同的處理函數(shù)。由于如今手機相機成像功能越來越強,照片的分辨率及體積也越來越大,導(dǎo)致使用Intent傳遞圖片資源時會出現(xiàn)OOM(OutOfMemory)。解決方案采用將圖片緩存到本地的方式,使用全局變量的方式將圖片資源的全限定路徑傳入Intent給其他Activity。圖5-2系統(tǒng)導(dǎo)航界面5.3.2圖像預(yù)覽在通過用戶選擇的方式獲得到圖片資源后,程序會為用戶提供預(yù)覽界面,若用戶對圖像不滿意可及時返回進行重新獲取,點擊圖片后可以跳轉(zhuǎn)到圖片全屏展示,為選取像素點提供便利,如圖5-3所示。圖片預(yù)覽展示此頁面在系統(tǒng)中由ShowActivity完成相應(yīng)功能,在頁面創(chuàng)建完成后首先要將圖片顯示到ImageView控件中,圖片的全限定路徑由MainActivity通過Intent傳遞字符串采用Map即key-value的方式傳輸?shù)絊howActivity。在ShowActivity的onCreate方法中調(diào)用Intent的getExtra(key)方法得到圖片的全限定路徑,再通過BitmapFactory.decodeStream()方法將圖片資源以字節(jié)流的方式讀入到內(nèi)存中并保存到位圖局部變量中,通過調(diào)用ImageView的setImageBitmap()方法將位圖顯示到頁面上。圖片點擊跳轉(zhuǎn)全屏點擊圖片實現(xiàn)跳轉(zhuǎn)Activity,使用了setOnClickListener()方法為圖片添加了點擊事件監(jiān)聽,當(dāng)事件發(fā)生時系統(tǒng)會新建一個Intent對象并將圖片資源的全限定路徑傳入給下一個Activity。此頁面還提供了一個保存照片按鈕,以方便用戶對圖片進行保存下次使用。保存功能采用對按鈕進行點擊事件監(jiān)聽完成,當(dāng)點擊按鈕時系統(tǒng)會發(fā)送一條掃描文件的廣播通知相冊掃描此目錄以便將圖片保存到媒體庫。此處使用方法sendBroadcast(mediaScanIntent)來實現(xiàn)功能。圖5-3預(yù)覽界面5.3.3獲取RGB值1.圖片的顯示圖片全屏,并且刪除時間及標(biāo)題的實現(xiàn)requestWindowFeature(Window.FEATURE_NO_TITLE);getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);為了實現(xiàn)機型的自動適配,此Activity中對于不同分辨率手機的顯示做了自適應(yīng)處理,效果如圖5-4所示。實現(xiàn)方式如下:調(diào)用getWindowManager().getDefaultDisplay().getMetrics(dm)方法,傳入一個DisplayMetrics對象,將屏幕分辨率等信息傳給DisplayMetrics,最終通過調(diào)用DisplayMetrics對象的widthPixels及heightPixels方法得到手機的實際長寬像素個數(shù)。將得到的手機像素個數(shù)賦給用來展示圖片的ImageView,以使ImageView可以全屏顯示。調(diào)用imageView的setLayoutParams()方法,將新建的LayoutParams(width,height)對象傳入,width,height即為要傳入的手機長寬像素個數(shù)。2.點擊屏幕提取坐標(biāo)本系統(tǒng)在GetRgbActivity中通過對imageView添加觸摸事件監(jiān)聽setOnTouchListener獲取屏幕坐標(biāo)數(shù)據(jù)。事件發(fā)生時會調(diào)用內(nèi)部類中的onTouch(Viewv,MotionEventevent)方法對事件進行處理,在onTouch()方法中調(diào)用event參數(shù)的getX()及getY()方法可以獲取到imageView被點擊到的位置的坐標(biāo)。因為imageView的大小和bitmap的實際大小并不吻合,所以需要將imageView的坐標(biāo)轉(zhuǎn)換到bitmap的坐標(biāo),才能找到bitmap上觸摸對應(yīng)點的RGB值。此處采用比例法轉(zhuǎn)換,經(jīng)實測精度可以達(dá)到使用要求。3.提取像素點的RGB得到bitmap上的坐標(biāo)后,調(diào)用bitmap的getPixel(x,y)方法得到用來表示顏色的int型數(shù)據(jù)resu
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年黑龍江林業(yè)職業(yè)技術(shù)學(xué)院馬克思主義基本原理概論期末考試題帶答案解析
- 2025年左貢縣招教考試備考題庫附答案解析(必刷)
- 2024年遷西縣幼兒園教師招教考試備考題庫帶答案解析
- 2025年南陽科技職業(yè)學(xué)院馬克思主義基本原理概論期末考試模擬題附答案解析(奪冠)
- 2026年中山職業(yè)技術(shù)學(xué)院單招職業(yè)適應(yīng)性考試模擬測試卷附答案解析
- 2025年柳河縣幼兒園教師招教考試備考題庫附答案解析
- 2025年松陽縣幼兒園教師招教考試備考題庫帶答案解析(奪冠)
- 醫(yī)保培訓(xùn)內(nèi)容課件
- 2026年及未來5年市場數(shù)據(jù)中國特種水產(chǎn)品行業(yè)發(fā)展監(jiān)測及投資戰(zhàn)略數(shù)據(jù)分析研究報告
- 助理培訓(xùn)班開班
- 2026中國電信四川公用信息產(chǎn)業(yè)有限責(zé)任公司社會成熟人才招聘備考題庫及參考答案詳解1套
- 思政教師培訓(xùn)心得課件
- 2026國家國防科技工業(yè)局所屬事業(yè)單位第一批招聘62人備考題庫及參考答案詳解
- 大型船舶拆除方案范本
- GB/T 44233.2-2024蓄電池和蓄電池組安裝的安全要求第2部分:固定型電池
- DL∕T 612-2017 電力行業(yè)鍋爐壓力容器安全監(jiān)督規(guī)程
- 2024年國企行測題庫
- 煙囪技術(shù)在血管腔內(nèi)修復(fù)術(shù)中的應(yīng)用
- 崗位聘用登記表
- 2023年高鐵信號車間副主任述職報告
- 第3章 圓錐曲線的方程【精簡思維導(dǎo)圖梳理】高考數(shù)學(xué)高效備考 人教A版2019選擇性必修第一冊
評論
0/150
提交評論