基于Android平臺的電子相冊設計與實現格式修改后_第1頁
基于Android平臺的電子相冊設計與實現格式修改后_第2頁
基于Android平臺的電子相冊設計與實現格式修改后_第3頁
基于Android平臺的電子相冊設計與實現格式修改后_第4頁
基于Android平臺的電子相冊設計與實現格式修改后_第5頁
已閱讀5頁,還剩42頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

基于Android平臺的電子相冊設計與實現格式修改后資料內容僅供參考,如有不當或者侵權,請聯系本人改正或者刪除。本科畢業論文題目:基于Android平臺的電子相冊的設計與實現姓名:班級:學號:日期致謝本論文的工作是在我的導師***的悉心指導下完成的,****嚴謹的治學態度和科學的工作方法給了我極大的幫助和影響。在此衷心感謝二年來***對我的關心和指導。***悉心指導我們完成了論文項目相關的科研工作,在學習上和生活上都給予了我很大的關心和幫助,在此向***表示衷心的謝意。***對于我的科研工作和論文都提出了許多的寶貴意見,在此表示衷心的感謝。 在工作及撰寫論文期間,周飛宇同學對我論文在寫作規范和格式方面的存在的問題提出了很多寶貴的意見,在此向她表示我的感激之情。中文摘要隨著智能手機走進普通人的生活,它將成為人們獲取信息的主要設備。因此,手機的應用服務將會有很大的發展空間,手機電子相冊服務就是其中的一項。Android平臺支持各種應用的開發,它是當前最流行的開源智能手機操作系統,最新的版本是android3.0,提供了便捷靈活的開發接口。本課題在AndroidSDK2.2平臺下,設計了一個手機電子相冊。采用了Android平臺的Framework層提供的接口,實現了圖片預覽、圖片動態切換、停止播放等功能,支持jpg,bmp,png和gif圖片格式,該程序是獨立的apk文件,能夠安裝在android2.2以上的系統內。它能夠讓手機成為一個電子相冊,用戶能夠將其放在心儀的地方,來展示美好的圖片,而不必再去購買別的設備就能擁有精美的電子相冊了。本程序具有很好的可移植性和可繼承性,開發者能夠在其基礎之上,建立更多的功能,來設計更加專業級的電子相冊。關鍵詞:Android,framework,電子相冊,預覽AbstractSmartcellphonehasfloodedourlife,anditwillbecomemainequipmentforacquiringinformation.Andcellphone’sE-albumservicewillhaveagreatfuture,asoneofapplicationserviceofcellphone.Androidplatformsupportsallapplicationresearch.Itisthemostpopularopen-sourcesmartcellphoneoperatingsystem.ThenewestversionisAndroid3.0,anditoffersconvenientandfastconnector.OnAndroidSDK2.2platform,thissubjectdesignsacellphoneE-album.Frameworkrealizespicturepreview,pictureexchange,stopfunctionsandsoon,andsupportsjpg,bmp,pngandgif.Thisprojectisasaperateapkfile,andmaysetupinsystemaboveAndroid2.2.ItwillmakecellphoneasE-album,guestsmayputitatanyplacesheorshelikestoshowwonderfulpictures,noneedtopurchaseotherequipment.Thisprocesshasgreatportableandinheritable,researchermaybuildmorefunctionsbasedonittodesignmoreprofessionalE-album.Keywords:Android,Framework,E-album,preview目錄中文摘要 IAbstract II目錄 III第一章緒論 11.1當前現狀 11.2本設計的背景和研究意義 31.3本設計的目標 31.4論文結構 3第二章 電子相冊研究 42.1電子相冊簡介 42.2電子相冊的結構 42.3電子相冊的性能 42.4電子相冊的特點 5第三章Andriod平臺介紹 63.1Android系統介紹 63.2Windows里的Android開發環境搭建 15第四章Android平臺的電子相冊的設計與實現 174.1FadeIn/FadeOut特效與運行線程 174.2主要功能模塊的設計與開發 174.3用手指移動相冊里的照片 184.4主界面的圖片切換 204.5本章總結 22第五章總結與展望 235.1總結 235.2展望 23參考文獻 23第一章緒論Android平臺對我們來說已經不陌生了,從Google推出Android系統,已經經歷了2年多的發展,當前最新的版本是Android3.0。作為全球最大的搜索引擎提供者,Google提供的服務實際上遠不止搜索,還包括Gmail、GoogleMap、GoogleEarth、GoogleTalk、YouTube、iGoogle、GoogleDocs、Picasa、GoogleWebAPI、Blogger、GoogleNotebook、桌面搜索、GoogleAnswers、Google音樂搜索、GoogleStreetView等數量眾多的服務。基于免費、開放的互聯網精神,這些服務本身是不收費的。可是,經過這些有創意的服務,Google吸引了大量互聯網用戶,并成功地藉由廣告服務,獲取了巨額利潤。 Google主持開發Android平臺,其目的是推動全世界30億手機用戶,更方便、成本更低地訪問互聯網。Google公司宣稱的目標是”組織世界上所有信息,讓所有人方便地訪問”。Google認為,手機價格越來越低,而其中手機平臺的價格變化不大,在手機成本中所占比例越來越大。基于此,Google希望提供一個免費、開放、功能強大的手機操作系統,使用戶承擔的手機價格更低,同時更方便、更頻繁地訪問互聯網。當然,Google本身也將因此而受益。 電子相冊是指能夠在電腦上或者是在移動終端上觀賞的區別于CD/VCD的靜止圖片的特殊文檔,其內容不局限于攝影照片,也能夠包括各種藝術創作圖片。電子相冊具有傳統相冊無法比擬的優越性:圖、文、聲、像并茂的表現手法,隨意修改編輯的功能,快速的檢索方式,永不褪色的恒久保存特性,以及廉價復制分發的優越手段。 本文就是在Android平臺上,基于SDK2.2開發的一款電子相冊軟件,包括圖片預覽、圖片播放、動態切換、停止播放等功能。當然,由于時間的關系,本文僅實現了電子相冊的基礎功能,后續還有很多工作能夠完善和深入。1.1當前現狀國內外百花齊放電子相冊制作軟件顧名思義,則是用戶制作電子相冊的軟件。當前國內外電子相冊繁多,如圖1.1所示,\o"查看圖片"

圖1.1電子相冊封面不同的軟件,制作出的電子相冊都會有不同。隨著數碼相機在家庭中越來越普及,人們在能夠更方便的拍攝照片卻又不需要把拍攝的照片都沖印的時候,更多就選擇了打包保存在電腦或光盤中,電子相冊制作軟件就在這一過程中充當了非常重要的作用。經過電子相冊制作軟件,我們的照片能夠更加動態、更加多姿多彩的展現,經過電子相冊制作軟件的打包,相片能夠更方便的以一個整體分發給親朋好友,刻錄在光盤上保存,或在影碟機上播放。COOZINE(XBOOKSKY)COOZINE基于Flash技術,是實現在線和離線電子相冊、電子圖書的核心,它應用在需要從PDF文件或JPEG文件源制作的電子雜志的情況,它同時提供一些協助處理工具軟件,方便批量的處理,而且幫助文檔較詳細,還提供了演示下載包,能夠稍作修改即可。COOZINE與當前的幾類電子雜志軟件不同,它把閱讀以及低成本批量制作作為首要追求目標。每一本COOZINE電子雜志(電子圖書)由COOZINE、JPEG圖片和XML文件3部分組成。PortableScribusPortableScribus是一款類似AdobePagemaker的開源電子相冊制作軟件,能夠用來制作個人文件、郵件列表、電子雜志類型的電子文檔。它體積很小,能夠放在U盤里,只需插入相應的電腦就能夠使用。WindowsMovieMakerWindowsMovieMaker是普通電腦最常見的可制作電子相冊的軟件軟件介紹:是Windows系統會自帶的視頻制作軟件,在軟件中添加圖片后,將圖片拖拉到時間線上,即可將添加的圖片生成wmv視頻。由于作為Windows系統自帶軟件,這款軟件具有廣泛的傳播性,只需將相片簡單制作為視頻能夠直接使用它。但由于軟件功能繁多,在制作電子相冊上效果單一,沒有轉場特效,也沒有其它注釋功能,適用于對相冊效果沒有太多要求的制作者選擇。Premiere軟件特點:premiere是一款專業級具有高級的編輯功能的電子相冊制作軟件,對于專業用戶,它能夠經過不斷增加插件,和用戶的專業水平進行復雜的編輯,制作出專業的絢麗相冊,但由于面向專業用戶,軟件的操作十分復雜,上手時間很長,非專業用戶使用有非常大的難度。1.2本設計的背景和研究意義制作電子相冊首先要獲得數字化的圖片,即圖片文件。用數字相機拍攝,能夠直接得到電子圖片文件。也能夠使用普通相機拍攝,經過掃描儀得到圖片文件。如果是游戲畫面或VCD/DVD畫面,可采用屏幕拷貝或功能更強的截屏軟件獲得圖片。其次要對圖片進行加工處理,專業人士能夠使用專業級的軟件Photoshop,想要操作簡單快速,高畫質也能夠使用國內圖像處理軟件,實現更加精美的相冊制作。最后使用電子相冊制作軟件將處理后的圖片制作成電子相冊,就能夠進行觀看了。1.3本設計的目標本文的目標是在AndroidSDK2.2平臺下,設計了一個手機電子相冊。采用了Android平臺的Framework層提供的接口,實現了圖片預覽、圖片動態切換、停止播放等功能,支持jpg,bmp,png和gif圖片格式。能夠讓手機成為一個電子相冊,讓用戶不必再去購買別的設備就能擁有心儀的電子相冊了。1.4論文結構第一章主要介紹課題的背景和現狀第二章介紹手機電子相冊服務的設計實現原理第三章詳細介紹了基于Android平臺的手機電子相冊軟件的設計與開發第四章對整個論文進行了總結,并進行了展望,對軟件的不足進行了分析,并說明了改進意見。電子相冊研究2.1電子相冊簡介電子相冊分為兩種,一種是軟件類型的電子相冊,一種是硬件類型的電子相冊,上文所講的windowsmediaplayer等制作的電子相冊,都屬于軟件類型,除此之外,還有一種電子相冊為硬件類型,指能夠不借助電腦能夠在LCD面板上顯示數碼照片的電子產品的展示效果,還能夠將照片顯示到電視機上。還可接U盤、SD卡、MMC卡,除播放圖片外,還可播放MP3、內置左右雙喇叭、邊播放圖片邊聽MP3、看手機AVI格式電影、DAT格式或MPEG格式或MPG格式電影(VCD文件)、VOB格式電影(DVD文件)(其它不支持的格式能夠軟件轉換)、輸出音頻視頻到電視機或音響,制作這種電子相冊的產品稱為電子相框,《電子工程雜志》將電子相框分為3類,簡易電子相框、”多媒體”電子相框高級、”多媒體”電子相框。簡易數碼相框只能顯示JPEG格式的圖片,而多媒體數碼相框則能夠播放音樂和視頻。某些高級”多媒體”數碼相框能夠經過因特網從RSS、照片共享網站甚至電子郵件下載圖片。這些型號一般也支持無線傳輸(IEEE802.11)。大部分數碼相框能夠像幻燈一樣按可調整的時間間隔顯示圖片。一些相框還能夠播放MP3音樂或者用相機拍攝的視頻片斷,比如MPEG文件。2.2電子相冊的結構一個電子相冊往往由三部分組成:LCD液晶面板,PCB,外部相框按鈕等構件LCD面板有一個模擬或者是數字的接口,當然其面板尺寸大小可能不同。其中PCB因為容納了設備驅動和運行固件,因而能夠稱得上是電子相框的核心了。2.3電子相冊的性能一些數碼相框只能夠顯示JPEG這種通用格式的圖片,也就是說有些高端產品也是能夠顯示比如png這類型的圖片格式的。大多數數碼相框是以幻燈片的形式顯示照片的,一般你能夠經過調節切換時間間隔來達到滿意的效果。當然有些還能夠發送照片到打印機,甚至支持其它多媒體內容,比如記錄在數碼相機的電影錄像模式的電影剪輯,MPEG視頻文件還有MP3音頻。某些相框還也能夠經過互聯網上的RSS,圖片共享網站如Flickr,Picasa還有電子郵件這些媒介來加載圖片。而具備這種網絡功能的相框一般是支持無線(802.11)連接的。還有些其它的滇西電子相框能夠顯示txt文件的。數碼相框顯示的圖片文件一般是從相機存儲卡讀取的,盡管某些相框還提供內部存儲。某些框架電子相框具備使用USB接口從電腦直接傳輸文件到電子相框的功能。然而,由于價格過高,一般很少有數碼相框內置有記憶體的。其中一些人還包括一個或者是可充電電池的。大多數7英寸(十七點五厘米)相框顯示圖像時候由于將圖片進行了拉伸實現寬高比16:9的顯示,因而存在非常明顯的失真。因此,一般為了達到良好的顯示效果圖片文件最好也選擇合適的尺寸。2.4電子相冊的特點硬件類型的電子相冊相比于軟件類型的電子相冊,具有實時性,軟件類型的電子相冊一經軟件生成,則不需要再次生成,可直接打開和傳播,而硬件類型的電子相冊則實時生成,由于專為電子相冊展示而制作,硬件類型的電子相冊具有更大分辨率,無需再連接電腦即可顯示,更可連接到電視機等硬件上播放。硬件類型的電子相冊的劣勢在于,不能將電子相冊生成,經過U盤等介質存儲共享,在傳播上具有一定的局限性,也不能生成用于刻錄的視頻形式。第三章Andriod平臺介紹3.1Android系統介紹3.1.1Android平臺總體架構 下圖顯示的是Android操作系統的主要組件。每一部分將會在下面具體描述。圖3.1Android系統架構圖應用程序(Applications) Android會同一系列核心應用程序包一起發布,該應用程序包包括email客戶端,SMS短消息程序,日歷,地圖,瀏覽器,聯系人管理程序等。所有的應用程序都是使用JAVA語言編寫的。應用程序框架 開發人員也能夠完全訪問核心應用程序所使用的API框架。該應用程序的架構設計簡化了組件的重用;任何一個應用程序都能夠發布它的功能塊,而且任何其它的應用程序都能夠使用其所發布的功能塊(不過要遵循框架的安全性限制)。同樣,該應用程序重用機制也使用戶能夠方便的替換程序組件。 隱藏在每個應用后面的是一系列的服務和系統,其中包括;豐富而又可擴展的視圖(Views),能夠用來構建應用程序,它包括列表(lists),網格(grids),文本框(textboxes),按鈕(buttons),甚至可嵌入的web瀏覽器。內容提供器(ContentProviders)使得應用程序能夠訪問另一個應用程序的數據(如聯系人數據庫),或者共享它們自己的數據資源管理器(ResourceManager)提供非代碼資源的訪問,如本地字符串,圖形,和布局文件(layoutfiles)。通知管理器(NotificationManager)使得應用程序能夠在狀態欄中顯示自定義的提示信息。活動管理器(ActivityManager)用來管理應用程序生命周期并提供常見的導航回退功能。窗口管理器(WindowManager)用于管理窗口的生命周期及窗口布局。程序包管理器(PackageManager)用于管理所有在Android上安裝的程序包。電話管理(TelephonyManager)用于管理使用者撥打和接聽電話的相關功能。程序庫Android包含一些C/C++庫,這些庫能被Android系統中不同的組件使用。它們經過Android應用程序框架為開發者提供服務。以下是一些核心庫:系統C庫-一個從BSD繼承來的標準C系統函數庫(libc),它是專門為基于embeddedlinux的設備定制的。該庫遵循BSD協議,繼承了GNU/Linux里glibc的大部分接口,但不完全兼容,比glibc更小,運行更快。媒體庫-基于PacketVideoOpenCORE;該庫支持多種常見的音頻、視頻格式回放和錄制,同時支持靜態圖像文件。編碼格式包括MPEG4,H.264,MP3,AAC,AMR,JPG,PNG。SurfaceManager-對顯示子系統的管理,而且為多個應用程序提供了2D和3D圖層的無縫融合。LibWebCore-一個最新的web瀏覽器引擎,支持Android瀏覽器和一個可嵌入的web視圖。SGL-底層的2D圖形引擎,這是應用程序使用最多的渲染方式。3Dlibraries-基于OpenGLES1.0APIs實現;該庫能夠使用硬件3D加速(如果可用)或者使用高度優化的3D軟加速。FreeType-位圖(bitmap)和矢量(vector)字體顯示。SQLite-一個對于所有應用程序可用,功能強勁的輕型關系型數據庫引擎。AudioFlinger–管理聲音的輸出設備(喇叭,有線耳機,藍牙耳機等),能夠混合多路音頻流的輸出。SurfaceFlinger–管理圖形、圖像的顯示,能夠把來自不同應用的多個2D/3D圖形組合,疊加;使用雙緩沖機制。Android運行庫 Android包括了一個核心庫,該核心庫提供了JAVA編程語言核心庫的大多數功能。包括數據結構、工具、文件訪問、網絡訪問、圖形處理等。 每一個Android應用程序都在它自己的進程中運行,都擁有一個獨立的Dalvik虛擬機實例。Dalvik被設計成一個設備能夠同時高效地運行多個虛擬系統。Dalvik虛擬機執行(.dex)的Dalvik可執行文件,該格式文件針對小內存使用做了優化。同時虛擬機是基于寄存器的,所有的類都經由JAVA編譯器編譯,然后經過SDK中的"dx"工具轉化成.dex格式由虛擬機執行。 Dalvik虛擬機依賴于Linux內核的一些功能,比如線程機制和底層內存管理機制。Linux內核 Android的核心系統服務依賴于Linux2.6內核,如安全性,內存管理,進程管理,網絡協議棧和驅動模型。Linux內核也同時作為硬件和軟件棧之間的抽象層。3.1.2Android應用程序的構成 Android平臺的應用程序主要是由以下四個組件構成的:1活動Activity2.意圖Intent3.服務Service4.內容提供器ContentProvider需要注意的是,并不是每個Android應用程序都必須構建這4個組件,有些可能由這4個組件的組合而成。一旦你確定了你的應用程序中需要的組件,那么你就應該在AndroidManifest.xml中列出她們。這是一個XML配置文件,它用于定義應用程序中需要的組件、組件的功能及必要條件等。四種組件說明如下:活動ActivityActivity是Android構造塊中最基本的一種,在應用中,一個Activity一般就是一個單獨的屏幕。每一個Activity都被實現為一個獨立的類,而且繼承于Activity這個基類。這個Activity類將會顯示由幾個Views控件組成的用戶接口,并對事件做出響應。大部份的應用都會包含多個的屏幕。例如,一個短消息應用程序將會有一個屏幕用于顯示聯系人列表,第二個屏幕用于寫短消息,同時還會有用于瀏覽舊短消息及進行系統設置的屏幕。每一個這樣的屏幕,就是一個Activity。從一個屏幕導航到另一個屏幕是很簡單的。在一些應用中,一個屏幕甚至會返回值給前一個屏幕。當一個新的屏幕打開后,前一個屏幕將會暫停,并保存在歷史堆棧中。用戶能夠返回到歷史堆棧中的前一個屏幕。當屏幕不再使用時,還能夠從歷史堆棧中刪除。默認情況下,Android將會保留從主屏幕到每一個應用的運行屏幕。意圖IntentAndroid使用了Intent這個特殊類,實現在屏幕與屏幕之間移動。Intent類用于描述一個應用將會做什么事。在Intent的描述結構中,有兩個最重要的部分:動作和動作對應的數據。典型的動作類型有:MAIN(activity的門戶)、VIEW、PICK、EDIT等。而動作對應的數據則以URI的形式進行表示。例如:要查看一個人的聯系方式,需要創立一個動作類型為VIEW的intent,以及一個表示這個人的URI。與之有關系的一個類叫IntentFilter。相對于intent是一個有效的做某事的請求,一個intentfilter則用于描述一個activity(或者IntentReceiver)能夠操作哪些intent。一個activity如果要顯示一個人的聯系方式時,需要聲明一個IntentFilter,這個IntentFilter要知道怎么去處理VIEW動作和表示一個人的URI。IntentFilter需要在AndroidManifest.xml中定義。經過解析各種Intent,從一個屏幕導航到另一個屏幕是很簡單的。當向前導航時,activity將會調用startActivity(IntentmyIntent)方法。然后,系統會在所有安裝的應用程序中定義的IntentFilter中查找,找到最匹配myIntent的Intent對應的activity。新的activity接收到myIntent的通知后,開始運行。當startActivity方法被調用將觸發解析myIntent的動作,這個機制提供了兩個關鍵好處:A、Activities能夠重復利用從其它組件中以Intent的形式產生的一個請求;B、Activities能夠在任何時候被一個具有相同IntentFilter的新的Activity取代。服務Service一個服務是具有一段較長生命周期且沒有用戶界面的程序。比較好的一個例子就是一個正在從播放列表中播放歌曲的媒體播放器。在一個媒體播放器的應用中,應該會有多個活動,讓使用者能夠選擇歌曲并播放歌曲。然而,音樂重放這個功能并沒有對應的活動,因為使用者當然會認為在導航到其它屏幕時音樂應該還在播放的。在這個例子中,媒體播放器這個活動會使用+b); returnit; } File[]files=f.listFiles(); /*將所有文件存入ArrayList中*/ for(inti=0;i<files.length;i++){ Filefile=files[i]; if(getImageFile(file.getPath())) it.add(file.getPath()); } returnit; }4.3用手指移動相冊里的照片 當你下決心鉆研Android技術的同時,就證明你除了是一位專業的程序工程師之外,還是喜歡接觸新興技術的科技宅男/女。因此,本文相信讀者對微軟的Surface應該也不陌生,Surface最令人稱奇的以偶能夠用,就是在LED面板的桌面上,經過手指來移動桌面上的數字照片,同樣也能經過手指的移動將圖片放大縮小,并傳輸到手機中。其實,在Android的觸控屏幕上,也能夠作出相同的效果。 在本程序中,當程序一啟動,將照片放在屏幕的中央。經過實現onTouchEvent來處理按下(ACTION_DOWN),拖動(ACTION_MOVE)、放開(ACTION_UP)等事件來完成拖動圖片的效果。另外,設置ImageView的onclickListener讓用戶在單擊圖片的同時,回復圖片的初始位置。實現本節功能的主要代碼如下:publicbooleandispatchTouchEvent(MotionEventev){ if(ev.getAction()==MotionEvent.ACTION_DOWN){ downX=ev.getX(); } if(ev.getAction()==MotionEvent.ACTION_UP&&(ev.getX()-downX)>20){ pos++; showPicture(); }elseif(ev.getAction()==MotionEvent.ACTION_UP &&(downX-ev.getX())>20){ pos--; showPicture(); } returnsuper.dispatchTouchEvent(ev); }運行結果如下圖所示:圖4.1程序啟動后第一界面主界面下方提供給用戶能夠拖動的滾動條,能夠預覽/sdcard/pics里面的所有圖片文件。實際上,這個預覽條是個Gallery,那么實現它的代碼如下:gallery=(Gallery)findViewById(R.id.gallery); gallery.setAdapter(newImageAdapter(this));gallery.setOnItemSelectedListener(this);當用戶拖動主界面后,會切換成下一幅圖的展示:見下圖,當然也能夠點擊下方的預覽條來顯示各幅圖片。圖4.2切換下一幅圖4.4主界面

溫馨提示

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

評論

0/150

提交評論