绘画基于Android的绘图软件开发硕士学位论文1

android 5 1  时间:2021-01-22  阅读:()

浙江大学硕士学位论文 摘要

硕士学位论文

基于Android的绘图软件开发i

浙江大学硕士学位论文 摘要

摘要

Andro id是Goo gle于2007年发布的一款开源手机操作系统 由于Andro id最近几年的软件和硬件高速发展越来越多的人开始使用Andro id并作为娱乐和工作平台。 与此同时随着现代绘图软件的发展这使得通过数码手段复制自然绘画体验成为可能传统意义上的纸上作图已经失去优势。但是 目前Andro id平台并没有很多具有很好绘图效果的绘画工具应用。考虑到Andro id绘图软件的开发价值和很好的应用前景本文主要研究基于Andro id移动平台的绘图软件开发。

本文所做的研究工作主要在以下几个方面

1.将开源绘图软件MyP a int的笔刷引擎以Java语言重写并移植到Andro id平

台并以此引擎进行本文的Andro id绘图软件的开发。

2.将开源视频编码库FFMPEG成功移植到Andro id平台利用此库进行用

户绘画过程的录制并生成MP4格式的视频。

3.分析了 Android底层开发的原理和方法探讨了一种利用JNI机制进行

Andro id底层c/c++开发技术。

4. 实现了Andro id绘图软件的开发。

关键词 Andro id, M yP a int, F F MP EG, N DK,绘图软件ii

浙江大学硕士学位论文 Ab stract

Abstract

Android is the opensource mobile operation system which release by Google in

2007. In recent years,more and more people begin to use Android devices asentertainment and working platform, because of the high speed development ofAndro id so ftware and hardware.Meanwhile,with the development o f modern drawingsoftware, the traditional drawing has lost its advantage, and made it possible copyingnature painting experience through digital method.But the Android platform didn'thave a lot of application which have good effect of paint.This paper mainly discussabout Android painting software development, considering of the value and goodprospect for Android painting so ftware.

In this paper, the main research work done in the following aspects:

1. Rewrite the MyPaint's brush engine in Java language and transplant it inAndroid platform.We will use this engine in our painting software development.

2. Transplant the FFMPEG to Android platform succeed and using it forrecording user's painting process, at last it will generate video file which is MP4format.

3. Analysis the principle and method of low level component development inAndroid and discusses one of c/c++developmenttechnologyby using JNI method.

4. Ofthe painting software for Android development is realized.

Key Wo rds AndroidMyPaint, FFMPEG, NDK, Painting Softwareiii

浙江大学硕士学位论文 图目录

目录

摘要. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .ii

Abstract. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .iii

目录. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .IV

图目录. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .VI

第1章绪论. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1

1.1课题背景及意义. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1

1. 1. 1课题背景. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1

1. 1. 2课题意义. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1

1.2论文主要内容. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2

1.3本章小结. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2

第2章Andro id平台整体结构分析. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3

2.1 Andro id系统架构. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3

2.2 Andro id应用组件. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .6

2. 2. 1 Andro idManifest.xml. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .6

2. 2. 2 Activity. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .6

2. 2. 3 Service. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .10

2. 2. 4 BroadcastReceiver. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .10

2.3本章小结. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .10

第3章MyP a int笔刷引擎原理简介. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .11

3.1 MyPaint介绍. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .11

3.2 MyPaint笔刷引擎主要结构体介绍. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .11

3. 2. 1 MyPaintF ixedTiledS urface结构介绍. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .11

3. 2. 2 MyPaintBrush结构介绍. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .14

3.3 MyPaint笔刷引擎工作原理. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .16

3. 3. 1 MyPaint的基本绘制单位——笔触. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .16

3. 3. 2笔刷引擎的工作流程. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .19

3.4本章小结. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .24

第4章MyP a int笔刷引擎的Andro id版本移植. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .25

4.1 Andro id版本改写原因. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .25

4.2 MyPaintF ixedTiledS urface的移植. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .25

4. 2. 1 View介绍. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .25

4. 2. 2 Surface类的设计. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .26

4. 2. 3 MyPaintBrush类的改写. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .29

4. 2. 4实现结果分析对比. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .32

4.3本章小结. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .33

第5章绘图软件应用界面开发设计与实现. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .34

IV

浙江大学硕士学位论文 图目录

5.1绘图软件的功能模块. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .34

5.2笔刷选择模块. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .34

5.3颜色选取模块设计. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .37

5.4笔刷属性调节模块设计. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .38

5.5绘图Ac t iv it y设计. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .39

5.6本章小结. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .40

第6章Andro id底层组件开发方法. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .41

6.1 JNI机制. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .41

6. 1. 1 JNI简介. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .41

6. 1. 2 JNI的使用. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .42

6.2 Andro id N DK简介. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .42

6.3 Andro id底层组件开发步骤. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .43

6.4本章小结. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .44

第7章基于FFMPEG库的绘画过程录制实现. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .45

7.1 FFmpeg简介. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .45

7.2绘图过程录制需求分析. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .47

7.3 FFmpeg Android平台移植. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .47

7.4编写FFmpeg封装层C代码. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .51

7. 4. 1 FFmpeg常用数据结构. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .51

7. 4. 2底层编码流程. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .51

7.5编写Android应用层代码. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .60

7.6完整录制绘画过程流程. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .63

7.7绘画过程录制功能效果分析. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .65

7.8本章小结. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .66

第8章结束语. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .67

8.1论文工作总结. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .67

8.2 问题与展望. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .67

参考文献. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .69

V

浙江大学硕士学位论文 图目录

图目录

图2. 1 Android系统架构图. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3

图2. 2 Acitvity栈结构. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .7

图2. 3 Activity的四种状态的变换关系图. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .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笔触透明度在不同ha rd ne s s和d的分布. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .17

图 3. 9喷枪效果笔刷. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18

图 3. 10椭圆形笔触. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18

图 3. 11椭圆形笔触的绘画效果. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .19

图 3. 12笔触进行线性插值. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .21

图 3. 13基于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完整实现底层录制流程. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .58

图6. 5 Android端调用编码接口逻辑. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .62

图6. 6绘画录制开始流程. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .63

图6. 7编码一帧图像流程. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .64

图6. 8结束流程. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .64

VI

浙江大学硕士学位论文 第1章绪论

第1章绪论

1.1 课题背景及意义

1. 1. 1课题背景

2007年11月Goo gle和84家硬件开发商、软件开发商以及电信运营商成立开放手持联盟来共同开发和改良Andro id系统随后Goo gle以Apache的免费开源许可的授权方式发布了Andro id源码并更新至今[1] 。Andro id操作系统后来逐渐地拓展到平板电脑及其他领域上。 Google通过官方网上商店平台Google Play之前叫做Goo gle M arket提供应用程序和游戏等应用供用户下载截止至2012年6月 Google Play商店拥有超过60万个官方认证应用程序。

随着现代智能手机的快速发展 它已成为移动生活的最重要的承载设备在人们的日常生活中扮演的角色也越来越重要。加上手机开发厂商和Goo gle的大力推广 以Andro id为操作系统的智能手机越来越流行。随着Andro id平台的蓬勃发展消费者对于基于Andro id手机应用需求也越来越强烈正是基于这种原因相应的手机应用软件领域也变得火暴起来。从中我们不难看出基于Andro id平台软件开发蕴含广阔的发展前景。

正因为Andro id平台的硬件和软件高速发展人们在Andro id等移动设备上办公娱乐的需求逐渐增强一些对于美术感兴趣的人开始渐渐利用身边的移动设备上来进行绘画用绘画来记录身边发生的事和物并及时的和他人进行分享。

本文将实现一款基于Andro id平台的绘图软件的开发方便人们随时随地使用身边的移动设备进行创作。

1. 1. 2课题意义

绘图软件是一种利用现代技术来仿真传统绘画笔刷效果的模拟自然绘画的软件[2] 。 它能够通过数字手段来模拟出传统笔刷效果。 它是图片处理软件和传统的纸上绘图的结合吸取了两者的优势。 它比图片处理软件优势在于它能够模拟自然绘画过程提高了用户体验。 比纸上做图的优势就更明显了可以实现纸张上很多难以实现的效果 同时可以更便于长久保存和修改数字化做图也节省了大量的纸质资源。使得人们可以从传统中解放出来颠覆了传统的绘画过程大大提高了绘图效率 改善了绘图体验将现代技术和传统方法相结合形成了很特别的绘画体验。但是 Andro id平台上大多数绘画软件功能都很弱没有丰富

1

浙江大学硕士学位论文 第1章绪论

效果的笔刷缺少良好的用户体验。

由于Andro id是一款开源平台开发文档丰富很适合开发学习。随着Andro id的越来越流行和完善且市场上已经出现很多支持笔的压力感应的设备可以更好的模拟自然绘画。结合这些绘图软件面临的问题和他们的优势使得基于Andro id移动平台的易用的模拟自然绘画的绘图软件会有很好前景。

1.2论文主要内容

根据所研究的内容本文主要介绍一款基于Andro id的绘图软件开发过程

1.从开源项目MyP a int 一款画图软件中提取出笔刷引擎C语言开发分析其实现原理将其改写成java版本并使它针对自己项目进行一些优化、改进、定制 以使其适应自己项目的需求。选择选择M yp a int的理由是他支持丰富的模拟自然绘画的笔刷且性能高 而且他的库可以很好的支持笔的压力感应 能最大程度上模拟出自然绘画的效果。

2.提出一种Andro id底层模块开发方法并利用此方法和FF mp e g 开源视频编解码库来进行用户绘画过程的录制将其编码成MP4格式的视频文件。使用FFmpeg库的原因是它目前最主流的免费开源的视频编解码库具有很好的跨平台性支持x86 a rm架构的处理器。

3. 在上述工作基础上编写Andro id绘图软件界面程序处理Andro id事件的响应逻辑 实现了Andro id平台上的绘图软件开发。

1.3本章小结

本章主要介绍了 Andro id绘图软件的研究背景和研究意义并介绍了本论文的主要的工作内容。

2

浙江大学硕士学位论文 第2章Android平台整体结构分析

第2章Android平台整体结构分析

为了进行Andro id平台上的软件开发就必须要对Andro id平台的架构和各大组建进行分析本章会对主要组件逐个进行分析。

2.1 Android系统架构

Andro id的系统架构采用了分层的架构和其他大部分的系统类似从底向上一共分了4层每一层都把底层实现封装并暴露调用接口给上一层[3] 。

Andro id系统架构如图2. 1所示

图2. 1 Android系统架构图

 1  第一层Linux内核(Linux Kerne l)

3

华为云年中聚惠618活动,新用户专区,云服务器低至88元/年,3年仅580.98元,热销抢购中,最后2天!

华为云怎么样?华为云用在线的方式将华为30多年在ICT基础设施领域的技术积累和产品解决方案开放给客户,致力于提供稳定可靠、安全可信、可持续创新的云服务,做智能世界的“黑土地”,推进实现“用得起、用得好、用得放心”的普惠AI。华为云作为底座,为华为全栈全场景AI战略提供强大的算力平台和更易用的开发平台。本次年终聚惠618活动相当给力,1核2G内存1m云耀云服务器仅88元/年起,送主机安全基础版套餐,...

Contabo美国独立日促销,独立服7月€3.99/月

Contabo自4月份在新加坡增设数据中心以后,这才短短的过去不到3个月,现在同时新增了美国纽约和西雅图数据中心。可见Contabo加速了全球布局,目前可选的数据中心包括:德国本土、美国东部(纽约)、美国西部(西雅图)、美国中部(圣路易斯)和亚洲的新加坡数据中心。为了庆祝美国独立日和新增数据中心,自7月4日开始,购买美国地区的VPS、VDS和独立服务器均免设置费。Contabo是德国的老牌服务商,...

Advinservers:美国达拉斯便宜VPS/1核/4GB/80GB SSD/1Gbps不限流量/月付$2.5/美国10Gbps高防服务器/高达3.5TBDDos保护$149.99元/月

Advinservers,国外商家,公司位于新泽西州,似乎刚刚新成立不久,主要提供美国和欧洲地区VPS和独立服务器业务等。现在有几款产品优惠,高达7.5TB的存储VPS和高达3.5TBDDoS保护的美国纽约高防服务器,性价比非常不错,有兴趣的可以关注一下,并且支持Paypal付款。官方网站点击直达官方网站促销产品第一款VPS为预购,预计8月1日交付。CPU为英特尔至强 CPU(X 或 E5)。官方...

android 5 1为你推荐
金士顿内存卡价格金士顿16G和32G内存卡 价格软银孙正义如何看待中国的首富马云?如何看待日本软银孙正义p图软件哪个好用手机p图软件那个好视频制作软件哪个好哪个 制作视频的软件 比较好用而且是免费的?中文的集成显卡和独立显卡哪个好独立显卡和集成显卡哪个更好些二手车网站哪个好买二手车去哪里买比较划算?oppo和vivo哪个好vivo好还是oppo手机好呢?行车记录仪哪个好我想买一个24小时监控行车记录仪,哪款比较好?51空间登录以前的51空间怎么进?51个人空间登录我在电脑上用的是Q号登录51个人空间,在手机上怎么却不能用Q号登录51个人空间了
查询域名 60g硬盘 12u机柜尺寸 qq云端 中国网通测速 吉林铁通 512mb 中国linux 百度云空间 日本代理ip 贵阳电信 北京主机托管 网站防护 免费赚q币 云主机 dmz主机 主机声音大 网易轻博客 大容量存储模式 qq空间登入 更多