基于Android平台的电子相册设计与实现Word格式文档下载.docx
《基于Android平台的电子相册设计与实现Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《基于Android平台的电子相册设计与实现Word格式文档下载.docx(21页珍藏版)》请在冰豆网上搜索。
Android平台支持各种应用的开发,它是目前最流行的开源智能手机操作系统,最新的版本是android3.0,提供了便捷灵活的开发接口。
本课题在AndroidSDK2.2平台下,设计了一个手机电子相册。
采用了Android平台的Framework层提供的接口,实现了图片预览、图片动态切换、停止播放等功能,支持jpg,bmp,png和gif图片格式,该程序是独立的apk文件,可以安装在android2.2以上的系统。
它可以让手机成为一个电子相册,用户可以将其放在心仪的地方,来展示美好的图片,而不必再去购买别的设备就能拥有精美的电子相册了。
本程序具有很好的可移植性和可继承性,开发者可以在其基础之上,建立更多的功能,来设计更加专业级的电子相册。
关键词:
Android,framework,电子相册,预览
Abstract
Smartcellphonehasfloodedourlife,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
第一章绪论
Android平台对我们来说已经不陌生了,从08年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所示,
图1.1电子相册封面
不同的软件,制作出的电子相册都会有不同。
随着数码相机在家庭中越来越普及,人们在可以更方便的拍摄照片却又不需要把拍摄的照片都冲印的时候,更多就选择了打包保存在电脑或光盘中,电子相册制作软件就在这一过程中充当了非常重要的作用。
通过电子相册制作软件,我们的照片可以更加动态、更加多姿多彩的展现,通过电子相册制作软件的打包,相片可以更方便的以一个整体分发给亲朋好友,刻录在光盘上保存,或在影碟机上播放。
COOZINE(XBOOKSKY)
COOZINE基于Flash技术,是实现在线和离线电子相册、电子图书的核心,它应用在需要从PDF文件或JPEG文件源制作的电子杂志的情况,它同时提供一些协助处理工具软件,方便批量的处理,而且帮助文档较详细,还提供了演示下载包,可以稍作修改即可。
COOZINE与目前的几类电子杂志软件不同,它把阅读以及低成本批量制作作为首要追求目标。
每一本COOZINE电子杂志(电子图书)由COOZINE、JPEG图片和XML文件3部分组成。
PortableScribus1.3.5.0
PortableScribus是一款类似AdobePagemaker的开源电子相册制作软件,可以用来制作个人文件、列表、电子杂志类型的电子文档。
它体积很小,可以放在U盘里,只需插入相应的电脑就可以使用。
WindowsMovieMaker
WindowsMovieMaker是普通电脑最常见的可制作电子相册的软件
软件介绍:
是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活动Activity
2.意图Intent
3.服务Service
4.容提供器ContentProvider
需要注意的是,并不是每个Android应用程序都必须构建这4个组件,有些可能由这4个组件的组合而成。
一旦你确定了你的应用程序中需要的组件,那么你就应该在AndroidManifest.xml中列出他们。
这是一个XML配置文件,它用于定义应用程序中需要的组件、组件的功能及必要条件等。
四种组件说明如下:
活动Activity
Activity是Android构造块中最基本的一种,在应用中,一个Activity通常就是一个单独的屏幕。
每一个Activity都被实现为一个独立的类,并且继承于Activity这个基类。
这个Activity类将会显示由几个Views控件组成的用户接口,并对事件做出响应。
大部份的应用都会包含多个的屏幕。
例如,一个短消息应用程序将会有一个屏幕用于显示联系人列表,第二个屏幕用于写短消息,同时还会有用于浏览旧短消息及进行系统设置的屏幕。
每一个这样的屏幕,就是一个Activity。
从一个屏幕导航到另一个屏幕是很简单的。
在一些应用中,一个屏幕甚至会返回值给前一个屏幕。
当一个新的屏幕打开后,前一个屏幕将会暂停,并保存在历史堆栈中。
用户可以返回到历史堆栈中的前一个屏幕。
当屏幕不再使用时,还可以从历史堆栈中删除。
默认情况下,Android将会保留从主屏幕到每一个应用的运行屏幕。
意图Intent
Android使用了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
一个服务是具有一段较长生命周期且没有用户界面的程序。
比较好的一个例子就是一个正在从播放列表中播放歌曲的媒体播放器。
在一个媒体播放器的应用中,应该会有多个活动,让使用者可以选择歌曲并播放歌曲。
然而,音乐重放这个功能并没有对应的活动,因为使用者当然会认为在导航到其它屏幕时音乐应该还在播放的。
在这个例子中,媒体播放器这个活动会使用Context.startService()来启动一个服务,从而可以在后台保持音乐的播放。
同时,系统也将保持这个服务一直执行,直到这个service运行结束。
(可以通过阅读LifeCycleofanAndroidApplication获取更多关于服务的介绍)。
另外,还可以通过使用Context.bindService()方法,连接到一个服务上(如果这个服务还没有运行将启动它)。
当连接到一个服务之后,还可以通过服务提供的接口与它进行通讯。
拿媒体播放器这个例子来说,还可以进行暂停、重播等操作。
容提供器ContentProvider
应用程序能够将它们的数据保存到文件、SQLite数据库中,甚至是任何有效的设备中。
当开发者想将其的应用数据与其它的应用共享时,容提供其将会很有用。
一个容提供器类实现了一组标准的方法,从而能够让其它的应用保存或读取此容提供器处理的各种数据类型。
3.1.3Android平台独特技术特征
Dalvik虚拟机
Dalvik是Android平台的虚拟机,它运行经过存和运行效率优化的.dex格式文件。
该虚拟机是基于寄存器的,它可以执行由Java编译器编译的类,只需将该编译结果用dx工具转换为本地格式的.dex文件。
该虚拟机运行在Posix兼容的操作系统(如Linux系统)之上,虚拟机会依赖底层操作系统的某些功能(如线程管理和存管理)。
Dalvik核心类库为之前使用标准Java语言的开发者提供了类似的开发体验,它更提供了对小型移动设备的支持。
Dal