基于android的绘图软件开发硕士学位毕业论文.doc
《基于android的绘图软件开发硕士学位毕业论文.doc》由会员分享,可在线阅读,更多相关《基于android的绘图软件开发硕士学位毕业论文.doc(76页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、浙江大学硕士学位论文 摘要基于Android的绘图软件开发 摘要Android是Google于2007年发布的一款开源手机操作系统,由于Android最近几年的软件和硬件高速发展,越来越多的人开始使用Android并作为娱乐和工作平台。与此同时随着现代绘图软件的发展,这使得通过数码手段复制自然绘画体验成为可能,传统意义上的纸上作图已经失去优势。但是,目前Android平台并没有很多具有很好绘图效果的绘画工具应用。考虑到Android绘图软件的开发价值和很好的应用前景,本文主要研究基于Android移动平台的绘图软件开发。本文所做的研究工作主要在以下几个方面:1. 将开源绘图软件MyPaint的
2、笔刷引擎以Java语言重写并移植到Android平台,并以此引擎进行本文的Android绘图软件的开发。2. 将开源视频编码库FFMPEG成功移植到Android平台,利用此库进行用户绘画过程的录制,并生成MP4格式的视频。3. 分析了Android底层开发的原理和方法,探讨了一种利用JNI机制进行Android底层c/c+开发技术。4. 实现了Android绘图软件的开发。关键词: Android, MyPaint, FFMPEG, NDK, 绘图软件ii浙江大学硕士学位论文 AbstractAbstractAndroid is the opensource mobile operation
3、 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 drawi
4、ng has lost its advantage, and made it possible copying nature painting experience through digital method. But the Android platform didnt have a lot of application which have good effect of paint. This paper mainly discuss about Android painting software development, considering of the value and goo
5、d prospect for Android painting software.In this paper, the main research work done in the following aspects:1.Rewrite the MyPaints brush engine in Java language and transplant it in Android platform.We will use this engine in our painting software development.2.Transplant the FFMPEG to Android plat
6、form succeed and using it for recording users painting process, at last it will generate video file which is MP4 format.3.Analysis the principle and method of low level component development in Android and discusses one of c/c + + development technology by using JNI method.4. Of the painting softwar
7、e for Android development is realized.Key Words:Android,MyPaint, FFMPEG, NDK, Painting Software VI浙江大学硕士学位论文 图目录目录摘要iAbstractii目录III图目录V第1章 绪论11.1 课题背景及意义11.1.1 课题背景11.1.2 课题意义11.2 论文主要内容21.3 本章小结2第2章 Android平台整体结构分析32.1 Android系统架构32.2 Android应用组件62.2.1 AndroidManifest.xml62.2.2 Activity62.2.3 Serv
8、ice102.2.4 BroadcastReceiver102.3 本章小结10第3章 MyPaint笔刷引擎原理简介113.1 MyPaint介绍113.2 MyPaint笔刷引擎主要结构体介绍113.2.1 MyPaintFixedTiledSurface结构介绍113.2.2 MyPaintBrush 结构介绍143.3 MyPaint笔刷引擎工作原理163.3.1 MyPaint的基本绘制单位笔触163.3.2 笔刷引擎的工作流程193.4 本章小结24第4章 MyPaint笔刷引擎的Android版本移植254.1 Android版本改写原因254.2 MyPaintFixedTil
9、edSurface的移植254.2.1 View介绍254.2.2 Surface类的设计264.2.3 MyPaintBrush类的改写294.2.4 实现结果分析对比324.3 本章小结33第5章 绘图软件应用界面开发设计与实现345.1 绘图软件的功能模块345.2 笔刷选择模块345.3 颜色选取模块设计375.4 笔刷属性调节模块设计385.5 绘图Activity设计395.6 本章小结40第6章 Android底层组件开发方法416.1 JNI机制416.1.1 JNI简介416.1.2 JNI的使用426.2 Android NDK简介426.3 Android底层组件开发步骤
10、436.4 本章小结44第7章 基于FFMPEG库的绘画过程录制实现457.1 FFmpeg简介457.2 绘图过程录制需求分析477.3 FFmpeg Android平台移植477.4 编写FFmpeg封装层C代码517.4.1 FFmpeg常用数据结构517.4.2 底层编码流程517.5 编写Android应用层代码607.6 完整录制绘画过程流程637.7 绘画过程录制功能效果分析657.8 本章小结66第8章 结束语678.1 论文工作总结678.2 问题与展望67参考文献69图目录图 2.1 Android系统架构图3图 2.2 Acitvity栈结构7图 2.3 Activity
11、的四种状态的变换关系图8图 2.4 Activity生命周期9图 3.1 MyPaint常见的一些笔刷效果11图 3.2 MyPaintFixedTiledSurface组成结构12图 3.3 MyPaintFixedTiledSurface数据抽象形式13图 3.4 MyPaintBrush结构图15图 3.5 笔触图16图 3.6 笔画放大图16图 3.7 hardness与opaque关系图17图 3.8 笔触透明度在不同hardness和d的分布17图 3.9 喷枪效果笔刷18图 3.10 椭圆形笔触18图 3.11 椭圆形笔触的绘画效果19图 3.12 笔触进行线性插值21图 3.1
12、3 基于tile笔触分割22图 3.14 Normal_and_Eraser混合算法24图 4.1 Surface结构图26图 4.2 Android版本与MyPaint版本的笔触对比图29图 4.3 铅笔效果对比32图 4.4 带透明度笔刷效果32图 4.5 涂抹效果笔刷对比33图 5.1 绘图软件功能模块图34图 5.2 笔刷选择模块实现效果图37图 5.3 颜色选取模块图38图 5.4 笔刷属性条件模块图38图 5.5 绘图软件界面40图 6.1 FFmpeg编译调用关系46图 6.2 直接编码写入文件流程53图 6.3 编码生成通用视频格式文件流程55图 6.4 完整实现底层录制流程5
13、8图 6.5 Android端调用编码接口逻辑62图 6.6 绘画录制开始流程63图 6.7 编码一帧图像流程64图 6.8 结束流程64浙江大学硕士学位论文第1章 绪论第1章 绪论1.1 课题背景及意义1.1.1 课题背景2007年11月,Google和84家硬件开发商、软件开发商以及电信运营商成立开放手持联盟来共同开发和改良Android系统,随后Google以Apache的免费开源许可的授权方式发布了Android源码,并更新至今1。Android操作系统后来逐渐地拓展到平板电脑及其他领域上。Google通过官方网上商店平台Google Play(之前叫做Google Market),提
14、供应用程序和游戏等应用供用户下载,截止至2012年6月,Google Play商店拥有超过60万个官方认证应用程序。随着现代智能手机的快速发展,它已成为移动生活的最重要的承载设备,在人们的日常生活中扮演的角色也越来越重要。加上手机开发厂商和Google的大力推广,以Android为操作系统的智能手机越来越流行。随着Android平台的蓬勃发展,消费者对于基于Android手机应用需求也越来越强烈,正是基于这种原因,相应的手机应用软件领域也变得火暴起来。从中我们不难看出基于Android平台软件开发蕴含广阔的发展前景。正因为Android平台的硬件和软件高速发展,人们在Android等移动设备上
15、办公娱乐的需求逐渐增强,一些对于美术感兴趣的人开始渐渐利用身边的移动设备上来进行绘画,用绘画来记录身边发生的事和物,并及时的和他人进行分享。本文将实现一款基于Android平台的绘图软件的开发,方便人们随时随地使用身边的移动设备进行创作。1.1.2 课题意义绘图软件,是一种利用现代技术来仿真传统绘画笔刷效果的模拟自然绘画的软件2。它能够通过数字手段来模拟出传统笔刷效果。它是图片处理软件和传统的纸上绘图的结合,吸取了两者的优势。它比图片处理软件优势在于它能够模拟自然绘画过程,提高了用户体验。比纸上做图的优势就更明显了,可以实现纸张上很多难以实现的效果,同时可以更便于长久保存和修改,数字化做图也节
16、省了大量的纸质资源。使得人们可以从传统中解放出来,颠覆了传统的绘画过程,大大提高了绘图效率,改善了绘图体验,将现代技术和传统方法相结合,形成了很特别的绘画体验。但是,Android平台上大多数绘画软件功能都很弱,没有丰富效果的笔刷,缺少良好的用户体验。由于Android是一款开源平台,开发文档丰富,很适合开发学习。随着Android的越来越流行和完善,且市场上已经出现很多支持笔的压力感应的设备,可以更好的模拟自然绘画。结合这些绘图软件面临的问题和他们的优势,使得基于Android 移动平台的易用的模拟自然绘画的绘图软件会有很好前景。1.2 论文主要内容根据所研究的内容,本文主要介绍一款基于An
17、droid的绘图软件开发过程:1. 从开源项目MyPaint(一款画图软件)中提取出笔刷引擎(C语言开发),分析其实现原理,将其改写成java版本,并使它针对自己项目进行一些优化、改进、定制,以使其适应自己项目的需求。选择选择Mypaint的理由是,他支持丰富的模拟自然绘画的笔刷,且性能高,而且他的库可以很好的支持笔的压力感应,能最大程度上模拟出自然绘画的效果。2. 提出一种Android底层模块开发方法,并利用此方法和FFmpeg(开源视频编解码库)来进行用户绘画过程的录制,将其编码成MP4格式的视频文件。使用FFmpeg库的原因是它目前最主流的免费开源的视频编解码库,具有很好的跨平台性,支
18、持x86,arm架构的处理器。3. 在上述工作基础上编写Android绘图软件界面程序,处理Android事件的响应逻辑,实现了Android平台上的绘图软件开发。1.3 本章小结本章主要介绍了Android绘图软件的研究背景和研究意义,并介绍了本论文的主要的工作内容。2浙江大学硕士学位论文第2章Android平台整体结构分析第2章 Android平台整体结构分析为了进行Android平台上的软件开发,就必须要对Android平台的架构和各大组建进行分析,本章会对主要组件逐个进行分析。2.1 Android系统架构Android的系统架构采用了分层的架构,和其他大部分的系统类似,从底向上一共分
19、了4层,每一层都把底层实现封装,并暴露调用接口给上一层3。Android系统架构如图2.1所示:图 2.1 Android系统架构图(1) 第一层Linux内核(Linux Kernel) Android操作系统的内核从Linux的一个分支而来,Google针对移动平台做了部分优化,该Linux层主要负责对上层的Dalvi虚拟机进行调度。 这一层主要用于保证进程的安全性,和对进程以及内存的进行一些管理,同时Android根据自身的需要,添加了一些内核驱动,比如触屏驱动,Binder驱动等。(2) 第二层本地框架和Java运行环境(LIBRARIES 和 ANDROID RUNTIME)。该层分
20、为两个部分,分别为系统类库和Android运行时组件:第一部分:系统类库 系统库是由C/C+编写,是连接应用程序框架层与Linux内核层的重要纽带,它支撑着整个应用程序框架,这些库是Android系统中共用的,上层应用都可以通过Android应用层序框架来使用这些系统库,其主要分为如下几个部分:a) Surface Manager:主要用于控制图像合成和绘制,管理显示的数据。b) Media Framework:以OpenCore为基础进行开发,主要用于对多媒体功能的支持。c) SQLite:轻量级的数据库,其特点在于轻量性的设计结构,适合在手机上使用、占用资源非常少,运行高效可靠,可移植性好
21、。d) OpenGL|ES:根据OpenGL ES 1.0API标准实现的3D绘图函数库,该库可以将硬件的3D功能进行最佳化处理和现实,能够很好的使用硬件加速或者优化后的软件加速。OpenGL ES 是从 OpenGL 裁剪定制而来的,他去除了OpenGL中 glBegin/glEnd,四边形(GL_QUADS)、多边形(GL_POLYGONS)等复杂图元等许多非绝对必要的特性,以使其更加适合移动设备4。e) FreeType:提供点阵字与向量字的描绘与显示。f) SSL:是Secure Socket Layer的缩写,处理保护网页通讯的协议。g) WebKit:一套网页浏览器的软件引擎。h)
22、 Libc:一套标准的C系统函数库,它继承自BSD,并专门为基于Linux嵌入式移动设备进行优化和定制。i) SGL:Skia图形库,底层的2D图形引擎。第二部分:Android 运行时。Android应用程序在Android RunTime中执行,其运行时分为核心库和优化过的Java虚拟机Dalvik。a) 核心库:包含了Android运行时所需要的库函数。b) Dalvik虚拟机:Google针对移动平台对Java虚拟机进行了优化,形成了Dalvik虚拟机,它更加快速和高效,更适合移动设备。但是Dalvik虚拟机只执行.dex的可执行文件。当Java程序通过编译,最后还需要通过SDK中的工
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 android 绘图 软件 开发 硕士学位 毕业论文
限制150内