【正文】
隱藏在應(yīng)用后面的是一系列的服務(wù)和系統(tǒng)[5],其中包括:a) Activity Manager:管理著Activity的生命周期以及維護這Activity的棧結(jié)構(gòu)。第二部分:Android 運行時。f) SSL:是Secure Socket Layer的縮寫,處理保護網(wǎng)頁通訊的協(xié)議。c) SQLite:輕量級的數(shù)據(jù)庫,其特點在于輕量性的設(shè)計結(jié)構(gòu),適合在手機上使用、占用資源非常少,運行高效可靠,可移植性好。 這一層主要用于保證進程的安全性,和對進程以及內(nèi)存的進行一些管理,同時Android根據(jù)自身的需要,添加了一些內(nèi)核驅(qū)動,比如觸屏驅(qū)動,Binder驅(qū)動等。 本章小結(jié)本章主要介紹了Android繪圖軟件的研究背景和研究意義,并介紹了本論文的主要的工作內(nèi)容。選擇選擇Mypaint的理由是,他支持豐富的模擬自然繪畫的筆刷,且性能高,而且他的庫可以很好的支持筆的壓力感應(yīng),能最大程度上模擬出自然繪畫的效果。由于Android是一款開源平臺,開發(fā)文檔豐富,很適合開發(fā)學(xué)習(xí)。它比圖片處理軟件優(yōu)勢在于它能夠模擬自然繪畫過程,提高了用戶體驗。本文將實現(xiàn)一款基于Android平臺的繪圖軟件的開發(fā),方便人們隨時隨地使用身邊的移動設(shè)備進行創(chuàng)作。加上手機開發(fā)廠商和Google的大力推廣,以Android為操作系統(tǒng)的智能手機越來越流行。s painting process, at last it will generate video file which is MP4 format.3. Analysis the principle and method of low level ponent development in Android and discusses one of c/c + + development technology by using JNI method.4. Of the painting software for Android development is realized.Key Words:Android,MyPaint, FFMPEG, NDK, Painting Software VI浙江大學(xué)碩士學(xué)位論文 圖目錄目錄摘要 iAbstract ii目錄 III圖目錄 V第1章 緒論 1 課題背景及意義 1 課題背景 1 課題意義 1 論文主要內(nèi)容 2 本章小結(jié) 2第2章 Android平臺整體結(jié)構(gòu)分析 3 Android系統(tǒng)架構(gòu) 3 Android應(yīng)用組件 6 6 Activity 6 Service 10 BroadcastReceiver 10 本章小結(jié) 10第3章 MyPaint筆刷引擎原理簡介 11 MyPaint介紹 11 MyPaint筆刷引擎主要結(jié)構(gòu)體介紹 11 MyPaintFixedTiledSurface結(jié)構(gòu)介紹 11 MyPaintBrush 結(jié)構(gòu)介紹 14 MyPaint筆刷引擎工作原理 16 MyPaint的基本繪制單位——筆觸 16 筆刷引擎的工作流程 19 本章小結(jié) 24第4章 MyPaint筆刷引擎的Android版本移植 25 Android版本改寫原因 25 MyPaintFixedTiledSurface的移植 25 View介紹 25 Surface類的設(shè)計 26 MyPaintBrush類的改寫 29 實現(xiàn)結(jié)果分析對比 32 本章小結(jié) 33第5章 繪圖軟件應(yīng)用界面開發(fā)設(shè)計與實現(xiàn) 34 繪圖軟件的功能模塊 34 筆刷選擇模塊 34 顏色選取模塊設(shè)計 37 筆刷屬性調(diào)節(jié)模塊設(shè)計 38 繪圖Activity設(shè)計 39 本章小結(jié) 40第6章 Android底層組件開發(fā)方法 41 JNI機制 41 JNI簡介 41 JNI的使用 42 Android NDK簡介 42 Android底層組件開發(fā)步驟 43 本章小結(jié) 44第7章 基于FFMPEG庫的繪畫過程錄制實現(xiàn) 45 FFmpeg簡介 45 繪圖過程錄制需求分析 47 FFmpeg Android平臺移植 47 編寫FFmpeg封裝層C代碼 51 FFmpeg常用數(shù)據(jù)結(jié)構(gòu) 51 底層編碼流程 51 編寫Android應(yīng)用層代碼 60 完整錄制繪畫過程流程 63 繪畫過程錄制功能效果分析 65 本章小結(jié) 66第8章 結(jié)束語 67 論文工作總結(jié) 67 問題與展望 67參考文獻 69圖目錄圖 Android系統(tǒng)架構(gòu)圖 3圖 Acitvity棧結(jié)構(gòu) 7圖 Activity的四種狀態(tài)的變換關(guān)系圖 8圖 Activity生命周期 9圖 MyPaint常見的一些筆刷效果 11圖 MyPaintFixedTiledSurface組成結(jié)構(gòu) 12圖 MyPaintFixedTiledSurface數(shù)據(jù)抽象形式 13圖 MyPaintBrush結(jié)構(gòu)圖 15圖 筆觸圖 16圖 筆畫放大圖 16圖 hardness與opaque關(guān)系圖 17圖 筆觸透明度在不同hardness和d的分布 17圖 噴槍效果筆刷 18圖 橢圓形筆觸 18圖 橢圓形筆觸的繪畫效果 19圖 筆觸進行線性插值 21圖 基于tile筆觸分割 22圖 Normal_and_Eraser混合算法 24圖 Surface結(jié)構(gòu)圖 26圖 Android版本與MyPaint版本的筆觸對比圖 29圖 鉛筆效果對比 32圖 帶透明度筆刷效果 32圖 涂抹效果筆刷對比 33圖 繪圖軟件功能模塊圖 34圖 筆刷選擇模塊實現(xiàn)效果圖 37圖 顏色選取模塊圖 38圖 筆刷屬性條件模塊圖 38圖 繪圖軟件界面 40圖 FFmpeg編譯調(diào)用關(guān)系 46圖 直接編碼寫入文件流程 53圖 編碼生成通用視頻格式文件流程 55圖 完整實現(xiàn)底層錄制流程 58圖 Android端調(diào)用編碼接口邏輯 62圖 繪畫錄制開始流程 63圖 編碼一幀圖像流程 64圖 結(jié)束流程 64浙江大學(xué)碩士學(xué)位論文 第1章 Error! No text of specified style in document.第1章 緒論 課題背景及意義 課題背景2007年11月,Google和84家硬件開發(fā)商、軟件開發(fā)商以及電信運營商成立開放手持聯(lián)盟來共同開發(fā)和改良Android系統(tǒng),隨后Google以Apache的免費開源許可的授權(quán)方式發(fā)布了Android源碼,并更新至今[1]。4. 實現(xiàn)了Android繪圖軟件的開發(fā)。考慮到Android繪圖軟件的開發(fā)價值和很好的應(yīng)用前景,本文主要研究基于Android移動平臺的繪圖軟件開發(fā)。浙江大學(xué)碩士學(xué)位論文 Error! No text of specified style in document.基于安卓的繪圖軟件開發(fā)Android是Google于2007年發(fā)布的一款開源手機操作系統(tǒng),由于Android最近幾年的軟件和硬件高速發(fā)展,越來越多的人開始使用Android并作為娛樂和工作平臺。本文所做的研究工作主要在以下幾個方面:1. 將開源繪圖軟件MyPaint的筆刷引擎以Java語言重寫并移植到Android平臺,并以此引擎進行本文的Android繪圖軟件的開發(fā)。關(guān)鍵詞: Android, MyPaint, FFMPEG, NDK, 繪圖軟件i浙江大學(xué)碩士學(xué)位論文 AbstractAbstractAndroid is the opensource mobile operation system which release by Google in 2007. In recent years, more and more people begin to use Android devices as entertainment and working platform, because of the high speed development of Android software and hardware. Meanwhile, with the development of modern drawing software, the traditional drawing has lost its advantage, and made it possible copying nature painting experience through digital method. But the Android platform didn39。Android操作系統(tǒng)后來逐漸地拓展到平板電腦及其他領(lǐng)域上。隨著Android平臺的蓬勃發(fā)展,消費者對于基于Android手機應(yīng)用需求也越來越強烈,正是基于這種原因,相應(yīng)的手機應(yīng)用軟件領(lǐng)域也變得火暴起來。 課題意義繪圖軟件,是一種利用現(xiàn)代技術(shù)來仿真?zhèn)鹘y(tǒng)繪畫筆刷效果的模擬自然繪畫的軟件[2]。比紙上做圖的優(yōu)勢就更明顯了,可以實現(xiàn)紙張上很多難以實現(xiàn)的效果,同時可以更便于長久保存和修改,數(shù)字化做圖也節(jié)省了大量的紙質(zhì)資源。隨著Android的越來越流行和完善,且市場上已經(jīng)出現(xiàn)很多支持筆的壓力感應(yīng)的設(shè)備,可以更好的模擬自然繪畫。2. 提出一種Android底層模塊開發(fā)方法,并利用此方法和FFmpeg(開源視頻編解碼庫)來進行用戶繪畫過程的錄制,將其編碼成MP4格式的視頻文件。2浙江大學(xué)碩士學(xué)位論文 第2章Error! No text of specified style in document.第2章 Android平臺整體結(jié)構(gòu)分析為了進行Android平臺上的軟件開發(fā),就必須要對Android平臺的架構(gòu)和各大組建進行分析,本章會對主要組件逐個進行分析。(2) 第二層本地框架和Java運行環(huán)境(LIBRARIES 和 ANDROID RUNTIME)。d) OpenGL|ES:根據(jù)OpenGL ES ,該庫可以將硬件的3D功能進行最佳化處理和現(xiàn)實,能夠很好的使用硬件加速或者優(yōu)化后的軟件加速。g) WebKit:一套網(wǎng)頁瀏覽器的軟件引擎。 Android應(yīng)用程序在Android RunTime中執(zhí)行,其運行時分為核心庫和優(yōu)化過的Java虛擬機Dalvik。當Java程序通過編譯。b) Window Manager:管理Android系統(tǒng)中的所有窗口程序。f) Resource Manager:管理應(yīng)用程序中的所有資源文件,它可以根據(jù)不同的設(shè)備分辨率、大小、方向、當前語言來加載不同資源文件,提高了Android的自適應(yīng)性[6]。這其中包括客戶端、短信、日歷、地圖、瀏覽器、聯(lián)系人管理程序等等。 Android應(yīng)用組件通常Android主要由以下幾個組件來構(gòu)建一個完整的Android程序。由于Activity是整個Android幾大組件中最重要的一個,下面將進行詳細介紹。當一個Activity不需要時,也可以將其從歷史堆棧中移除。b) 暫停狀態(tài):當Activity被另一個透明或者Dialog樣式的Activity覆蓋部分遮擋時,此時它依然和窗口管理器相連,系統(tǒng)會繼續(xù)維護其內(nèi)部狀態(tài),但是他已失去焦點,不能進行UI交互。即Activity被殺掉以后和啟動之前,要手動終止Activity可以在程序中調(diào)用finish方法。他具有自己的生命周期。c) onRestart()方法:當Activity從停止狀態(tài)進入活動狀態(tài)前,調(diào)用該函數(shù),該方法總是在onStart()方法以后執(zhí)行。調(diào)用后,此時的Activity位于Activity棧的棧頂。它可以長期在后臺運行,進程優(yōu)先級較高,不會輕易被系統(tǒng)回收,也不受Activity切換的影響。 BroadcastReceiverBroadcastReceiver是用于接收廣播的模塊,廣播是一種同時通知多個對象的事件通知機制[6]。 本章小結(jié)本章首先對Android的系統(tǒng)架構(gòu)進行詳細的層次化分析,對Android中常用的幾個組件進行簡單的介紹,特別對Android的Activity進行詳細介紹,介紹了其生命周期和他的Activity棧結(jié)構(gòu)。圖 MyPaint常見的一些筆刷效果: MyPaint筆刷引擎主要結(jié)構(gòu)體介紹在MyPaint筆刷引擎中,含有兩個主要的結(jié)構(gòu),一個為MyPaintBrush,它負責(zé)更新當前筆刷參數(shù)和加載新的筆刷參數(shù),另一個為MyPaintFixedTiledSurface,它主要維護當前繪畫區(qū)域中數(shù)據(jù)。a) MyPaintFixedTiledSurface MyPaintFixedTiledSurface維護了整個畫布區(qū)域的數(shù)據(jù),該數(shù)據(jù)主要包含用戶繪畫的內(nèi)容,畫布數(shù)據(jù)為寬為width,長為height,數(shù)據(jù)類型為uint16_t的矩形區(qū)域,這塊數(shù)據(jù)由uint16_t 類型的指針tile_buffer進行維護。 :圖 MyPaintFixedTiledSurface數(shù)據(jù)抽象形式b) _MyPaintTiledSurface _MyPaintTiledSurface的職責(zé)為響應(yīng)外部請求。 _OperationQueue為一個map,它的鍵為需要更新的tile在畫布中的x,y坐標,值為所操作的tile需要的外部參數(shù)。它被定義