基于android平台的手机相册软件的开发与实现.docx
- 文档编号:25722661
- 上传时间:2023-06-11
- 格式:DOCX
- 页数:25
- 大小:1.97MB
基于android平台的手机相册软件的开发与实现.docx
《基于android平台的手机相册软件的开发与实现.docx》由会员分享,可在线阅读,更多相关《基于android平台的手机相册软件的开发与实现.docx(25页珍藏版)》请在冰豆网上搜索。
基于android平台的手机相册软件的开发与实现
工业园区服务外包职业学院
毕业设计(论文)
论文题目:
基于android平台的手机相册软件的开发与实现
届别
2016届
系别
网络与通信技术系
专 业
移动通信运营与服务
班 级
通信13
(1)
姓名
戚秀
学 号
130121001
指导教师
金霞
毕业设计(论文)独创性声明
本人声明,所呈交的毕业设计(论文)系在指导老师的指导下本人独立完成的研究成果。
论文中依法引用他人的成果,均已做出明确标注或得到许可。
论文容未包含法律意义上已属于他人的任何形式的研究成果,如论文涉及任何知识产权纠纷,本人将承担一切责任。
学生签名:
__________日期:
__________
基于android平台的手机相册软件
摘要:
本系统在AndroidSDK2.3.3平台下进行,使用Java语言进行开发,使系统具有良好的可移植性和扩展性。
系统具有动态查看相册,拍摄相片,编辑相片,查看相片的详细信息等功能,用户可以针对某相片分享到新浪微博,新浪微博分享的初次使用需授权、认证以及账号绑定,下次使用无需再次输入账号和密码。
本程序在开发平台上运行之后产生可以直接安装在Android2.3.3版本手机上的apk文件,并且完美运行。
关键词:
AndroidSDK,Linux,新浪微博,授权,分享,apk
Abstract:
AndroidistheopensourcemobileoperatingsystembasedontheLinuxplatformwhichGooglecompanylaunchedin2007,withAndroidversionchangedfrom1.1to4.2.2sofar,Androidmobileapplicationserviceismoreandmoreaccepted,andwidelyfavoredbyusers,mobilephonephotoalbumapplicationisoneofthemanyAndroidapplications.
ThissystemisrunningintheAndroidSDK2.3.3platform,withthedevelopmentlanguageofJavamakesthesystemingoodportabilityandscalability.Thesystemhasadynamicviewthephotoalbum,shootingphotos,editphotos,seephotosfordetailedinformation,andsoon,userscansharetosinamicro-bloginaphoto,thefirstuseofthefunctionofshareinsinamicro-blogneedtoauthorization,authenticationandaccountbinding,whileusersdon’thavetoinputaccountandpasswordforthenexttime.Afterrunningthisprogramonthedevelopmentplatform,therewillbegeneratedanapkfilethatcandirectlyinstalledintheAndroid2.3.3releaseofmobilephone.
【Keywords】AndroidSDK,Linux,sinamicro-blog,authorization,share,apk
第一章系统论述
1.1课题背景
Android手机操作系统是在2007年推出的基于Linux平台的完全开源手机操作系统,由谷歌开发,引领潮流的手机制造商把他们的目光投向了这一款手机操作系统。
Android手机操作系统也也一天天的变得更加成熟。
随着Android手机的广泛使用,基于Android平台的各种应用软件也变得炙手可热,这个市场有很大的发展前景,无数的软件开发商和开发人员将会被吸引,然后投入到市场中。
目前,Android应用市场琳琅满目,主要的应用市场包括猎豹清理等等,这其中每个市场中展示的Android应用多如牛毛,有官方的,也有非官方的,但是各种应用体现了Android手机操作系统的时代性。
越来越多免费的Android应用不仅符合了大众化的需求,更促进了应用市场的不断多样化的发展。
本课题的研究正是处在这样的一种大环境下,Android手机相册应用在众多的Android应用中只是一个小角色,但是相册软件对于移动设备却是必不可少的。
以往人们用数码相机或者其他拍摄相片的设备拍摄出来的照片只能上传到电脑上才能更好实现的浏览功能,然而并不是每个人、每个时刻、每个地方携带电脑都是一件轻松的事情。
当我们出门旅行的时候,轻松便捷是我们的首选,这时候,Android移动手机的拍摄功能以及一个与之配套的相册浏览功能便能很好的满足人们的需求,随拍随看随分享的体念让这款应用更具有价值。
1.2Android系统相册软件现状
目前,应用市场上的相册软件众多,虽然功能小异,但是每种软件无论在界面风格的设计上还是在实现的设计上都独具特色。
就拿Android系统自带的几款相册浏览工具来说,比较好的有快图浏览和Gallery3D两种。
1.2.1快图浏览
快图浏览是一个以文件夹模式为基准的轻量级图片浏览器,可以又快又清晰的预览缩略图,同时它的2D浏览体验也极其流畅幻灯片播放、滑动切换图片等功能,此软件都可以提供;用户在看图的时候如果想处理图片,这个软件也是可以做到的,缩小放大还有裁剪等都可以操作,如图1.1所示。
图1.1快图浏览
1.2.2Gallery3D
Gallery3D是一款具有3D效果的图片浏览器,流动式的显示每个文件夹中的缩略图,支持多点触屏缩放、滑动切换图片、幻灯片播放、调用系统照相机、照片的编辑、时时分享以及视频的播放功能,但是不足之处就是当图库中的图片过多时刷新速度过慢的缺点影响了用户的体验效果,如图1.2所示。
图1.2Gallery3D
第二章Android开发平台
2.1Android的由来
Android一词最早出现于科幻小说《未来夏娃》中,外形像人一样的机器被来自法国的作家利尔亚当命名为Android。
Android公司是由鲁宾等人在2003年的创办一家美国公司,他把手机软件和手机操作系统设置为该公司的主要业务。
2007年Google公司宣布Android是基于Linux平台的开源手机操作系统的名称,从此走上了新的舞台。
2.2Windows系统中Android开发平台在Eclipse上的搭建
对于一个开发者而言,在进行Android应用的开发之前,第一步需要完成Android开发平台的搭建。
虽然这款全新的Android应用开发软件在2003年被谷歌公司在I/O大会上公布,但Eclipse中的ADT依然是之前我们习惯的开发平台,所以这次设计的实现也是在Eclipse中实现的,针对这个要求而言,Android开发平台的搭建是如何在Windows系统中实现,我要来简单描述。
2.2.1建立Java开发环境
在Oracle官网中下载最新的版本为JDK1.7的JDK文件。
最后运行查看版本信息,确定环境配置是否成功。
2.2.2Eclipse的安装
在它的官网中下载EclipseClassic的最新版本,安装并把其安装路径保存在C盘,可以将“C:
\eclipse\workspace”设置工作空间。
2.2.3下载AndroidSDK
访问,选择DownloadtheSDKforWindow下载并解压文件,解压后运行SDKManager.exe文件,如图2.2所示是各个版本的SDK安装向导。
图2.2AndroidSDKManager
2.2.4在eclipse中安装ADT
下载ADT-15.0.0.zip文件(不用解压缩),然后在eclipse中选择help后,点击Add接着选择我们之前已经下载好的未压缩的文件,在Name处写上自己的名字,确定后等待安装成功。
2.2.5新建一个模拟器
图2.3Android模拟器
第三章Android相册系统分析
3.1系统可行性分析
a.经济可行性:
开发工具为免费的eclipse+ADT,因此开发成本非常低。
b.技术可行性:
基于Android系统的相册软件完全使用Android系统中相关组件,分享到新浪微博功能也是使用新浪微博开放平台提供SDK中的相关API接口,基于Android平台的开发所使用的语言有Java和XML,具有非常好的可扩展性和移植性。
c.操作可行性:
相册应用的开发是在eclipse中进行的,开发出来的应用可以直接在模拟器或者实体Android手机上进行调试,只有经过了仔细的测试以及调试之后才能将应用打包为apk文件并进行发布,供用户使用。
也就是说,在用户使用之前,该应用是经过良好而严格的测试的,而且经过一大批测试用户的使用之后才广泛发布到市场上的。
同时在市场上,Android手机或者其他的移动设备具有很高的占有率,并且各大手机制造厂商相继推出具有更高硬件配置的手机终端,因此可知该相册系统在操作上是完全可行的。
3.2系统需求分析
当该相册安装到Android手机上并启动后,用户能够浏览手机相册中的照片,并编辑照片(放大、缩小照片);当用户想拍摄照片时,还能够点击屏幕中的按钮直接进行照片的拍摄;最重要的是用户能够时时的对照片进行社区的分享,例如点击屏幕中的分享按钮,相应的照片就可以分享到新浪微博,加上要说的话就可以和照片一起分享出去,同时对于新浪微博的第一次使用需要授权和认证,当登陆成功之后就能实现账户的绑定,下一次不需要再次输入账号和密码就能直接进行照片的分享。
此应用的功能读者可以通过以上文字了解到。
启动应用程序
如果用户只需要浏览照片,则直接滑动选择想要查看的照片,向左向右能够实现照片的切换浏览
如果用户想编辑照片(放大、缩小照片),则直接点击图片下方的放大、缩小按钮,实现放大或者缩小的照片的查看
如果用户觉得某照片不再需要的时候,可以点击屏幕中的删除按钮,直接将该照片从SD卡的相册文件中删除,但在删除前会显示是否删除,这时需要你再次确定,避免错误的删除了需要留下的照片。
如果用户想查看具体某照片的详细信息,点击屏幕中的详细信息,查看该照片的名字、格式,存放在SD卡中的位置以及拍摄地点。
当用户特别喜欢某照片,希望能够分享该照片时,可以点击屏幕中的分享,将照片分享到需要分享到的平台,我们这里以分享到新浪微博为例。
如果用户是第一次使用该应用的分享功能,我们需要获得新浪的授权认证,所以我们要输入新浪微博的用户名和密码,才可以获得授权。
如果用户已获得授权认证,则可以点击分享到新浪微博按钮,跳转到分享页面,输入想要说的话,你想要分享的照片会在下方显示,当用户点击发布到新浪微博之后,实现了照片和文字的分享。
3.3基于Android平台手机相册软件的建设原则
考虑周全需求,面面俱到、分布设计。
坚持标准化和系统的可行性。
保证系统的稳定性、持续性和安全性。
系统人机界面稳定,操作简单,能被很容易的理解,使用也很方便。
做一个Android手机的相册应用技术简单,但是做好这个应用却是很难,一个良好的系统对用户来说应该具有亲和力。
首先,就应该保证该应用不会在安装于用户Android系统手机之后,占用系统大量的存而造成死机,长时间等待,或者程序响应异常;其次,应用界面的设计会大大影响用户对该应用的体验效果,所以应用界面的美观也需要考虑到尽量使设计变得更完美。
第四章Android相册概要设计
4.1系统设计目标
1)通过手机相册应用,让用户能够浏览照片、编辑照片、拍摄照片,并将喜欢的照片分享到新浪微博。
2)通过良好的具有亲和力的人机界面,使得用户更加喜欢拍照和分享身边的景象。
4.2系统模块设计
4.2.1系统功能模块划分
系统概要设计中的一个重要环节就是确定该系统的模块构成,以及构成系统的这些模块之间的联系。
因而在进行Android手机相册概要设计时,在分析系统的基础之上,确定了该系统应该具有的模块如下图4.1所示。
图4.1系统功能模块图
4.2.2系统总体结构设计
系统总体结构设计是在系统功能模块划分的基础之上确定各个模块之间的相互关系。
例如:
在浏览照片时如果在相册文件夹中没有发现照片,则需要调用拍摄照片功能模块确定用户是否决定拍照并返回照片;只有通过了新浪微博的授权和认证之后,才能分享照片到新浪微博。
相册应用没有想象中的那么简单,实际上它的容很复杂。
在界面布局方面,采用AndroidUI技术,使系统具有良好的布局和美观的操作界面,通过屏幕点击或者触摸进行操作,使用户可以简单明了的操作同时也不缺乏乐趣。
在系统的安全方面,在分享照片到新浪微博时,采用的是OAuth2.0(OpentheAuthentication)的认证方式。
这种协议会保证用户的信息安全,不会被第三方应用触及。
因为用户输入的信息是完全与新浪微博的服务器进行交互的。
OAuth当中有四种角色:
第一种:
ServiceProvider(服务提供者),一般是,一些受限制的资源通常被保存在这些中。
只有用户提供用户名和密码来确认自己的身份才可以查看到相关的资源信息。
第二种:
User(用户),用户可以通过提供的用户名和密码保存私人的信息,例如照片、日记和金钱交易等等。
这些最隐私的信息用户需要将其共享给其他但又希望不被公开。
第三种:
Consumer(客户),客户是希望用户私人信息可以被访问的应用程序,想要访问相应的资源必须得到Consumer授权。
第四种:
ProtectedResources(被保护的资源),比如备忘录,照片等等。
以上四种角色在认证时的关系如图4.2所示:
图4.2OAuth角色关系
新浪微博OAuth2.0的认证过程是:
在新浪微博开放平台注册应用,新浪为该应用提供相应的appId,appSecret,callbackUrl,组装认证url,以WebView为桥梁,向开发平台认证中心发起授权。
应用的出处将由认证中心判断,合法跳转到用户授权界面,账号和密码在被用户输入后就表示同意授权向认证中心发起授权。
授权请求会由认证中心处理,以callbackUrl加参数的方式Redirect,这是拦截Redirecturl后附带的参数,通过这个可以知道认证结果。
open_id,access_token,expires_in等参数,这些参数将在认证成功后获得,有了这些数据就可以向新浪微博开放平台的业务层接口发起请求了。
如图4.3所示为OAuth2.0的认证流程:
图4.3OAuth2.0认证原理
4.2.3系统模块用例分析
1)照片浏览模块
功能描述:
当进入应用程序之后,屏幕上展现给用户的是相片文件夹中的首照片,用户可以通过左右滑动屏幕实现照片浏览的动态切换。
参与者:
用户。
前置条件:
前一照片。
后置条件:
后一照片。
如下图4.4所示:
图4.4用户浏览照片用例图
2)拍摄照片模块
功能描述:
当用户想要拍摄照片时,可以通过点击菜单按钮选择拍照。
参与者:
用户。
前置条件:
点击拍摄按钮。
后置条件:
通过拍照传回来相片到相册文件夹中。
该模块的用例图如下图4.5所示:
图4.5拍照用例图
3)分享照片到新浪微博模块
功能描述:
如果用户是第一次使用分享功能,则需要先输入账号和密码进行新浪微博的授权和认证;如果用户已经得到新浪微博的授权,则可以直接分享照片到新浪微博。
参与者:
用户。
前置条件:
用户具有新浪微博的账号和密码。
后置条件:
用户将自己手机上的照片分享到新浪微博。
该模块的用例图如下图4.6所示:
图4.6分享功能模块用例图
用户分享照片到新浪微博模块流程图如下图4.7所示:
图4.7分享功能流程图
4)删除照片模块
功能描述:
如果用户对某一照片不满意,点击屏幕中的删除按钮即可。
参与者:
用户。
前置条件:
已点击删除按钮。
后置条件:
该照片从相册文件夹中删除。
该模块的用例图如下图4.8所示:
图4.8删除照片模块用例图
5)查看照片详细信息模块
功能描述:
当用户点击查看详细信息后,显示当前照片的名字,在SD卡中的存放位置,拍摄地点。
参与者:
用户
前置条件:
已点击查看详细信息按钮
后置条件:
显示照片详细信息
该模块的用例图如下图4.9所示:
图4.9查看照片详细信息模块用例图
6)编辑照片模块
功能描述:
当用户点击图片下方的放大缩小按钮时,可以实现照片的放大和缩小。
参与者:
用户。
前置条件:
以点击放大或者缩小按钮。
后置条件:
照片呗方法或者缩小。
该模块的用例图如下图4.8所示:
图4.8编辑照片模块用例图
第五章Android相册的功能实现
本应用主要实现了六个主要的模块,包括浏览模块;拍摄照片模块;分享照片到新浪微博模块;删除照片模块;照片详细信息模块和编辑照片模块,以下针对于每个模块给出具体的实现方法和实现之后的效果。
5.1浏览照片功能模块实现
应用启动之后,用户直接能看到可以左右滑动的缩略图,在整个屏幕中显示的是该缩略图的大图,如果用户选择了向左滑动缩略图,则屏幕同步显示前一照片的大图;反之,则屏幕同步显示后一照片的大图。
效果如图5.1所示。
图5.1浏览照片界面
核心算法分析:
定义一个Map
这样一来,map中保存了camera相册文件夹中所有的照片文件。
定义一个适配器ImageAdapter类,该类继承自android.widget.BaseAdapter类,重写里面的方法中重要的一个方法是getView()方法,此方法在gallery切换时自动调用。
为了有效的解决Android系统中关于Bitmap(位图)操作的OOM(OutOfMemory)问题,在获得位图的时候,在设计上使用BitmapFactory.decodeStream()从文件中取得图片文件的流,以缩略图的方式显示,BitmapFactory.Optionsoptions=newBitmapFactory.Options();options.inSampleSize=2;以上代码表示获取的位图为原图的四分之一。
5.2拍摄照片模块实现
当用户在浏览照片的同时有了拍摄照片的需求后,用户可以按下菜单按钮,选择拍照菜单项进行拍照,如果用户对拍摄的效果满意的话,点击确定按钮从而拍摄的照片会自动存放到camera文件夹中,然后又返回浏览照片的界面上,如果用户对拍摄的效果不是很满意,用户可以点击取消按钮,然后重新拍摄。
如图5.2所示。
图5.2拍摄照片界面
核心算法分析:
其中的MediaStore.ACTION_IMAGE_CAPTURE为系统的照相机的功能,这里定义一个指向系统照相机的意向,当点击拍照菜单项的之后,自动从原来的Activity转到系统拍照的Activity,第二个方法为带返回数据的启动意向,TAKE_PHOTOS为自定义的常量,代表请求参数。
重写onActivityResult()方法,当请求码与TAKE_PHOTOS相等时,取出系统照相机拍摄后的照片,Bundlebundle=data.getExtras();Bitmapbitmap=(Bundle)bundle.get(“data”);当取出照片之后,将照片文件写入相册文件夹camera之中,在写入文件的同时,考虑到的一个问题就是如何给照片起名。
因为拍摄照片是在不同的时间拍摄的,为了保证文件名字在相同目录下必须唯一的特性,在实现的时候将照片拍摄的时间设置为照片的文件名字。
5.3分享照片到新浪微博模块实现
如果用户是第一次使用分享功能,就需要输入用户名和密码获得新浪微博的授权认证,认证成功后用户就能够成功分享。
如图5.3所示。
图5.3授权到新浪微博界面
核心算法分析:
;
其中CONSUMER_KEY为新浪微博开发平台分配给每个第三方的appkey,用于鉴别身份,显示来源等功能。
当点击授权到新浪微博按钮时,页面跳转到新浪微博的授权和认证页面。
当用户授权认证成功之后,为了实现用户账号的绑定,需要获得access_token(访问令牌)和expires_in(剩余有效时间)并保存到本地,下一次直接从本地文件中读取即可,这样就可以避免用户每次登陆的麻烦,方便了用户的使用。
当用户已经成功实现了新浪微博的授权和认证之后,即实现了用户账号的绑定功能,用户可以直接对需要分享的图片进行描述并分享到新浪微博。
效果如图5.4所示。
图5.4分享到新浪微博界面
核心算法分析:
取得保存在本地上的access_token(访问令牌)和expires_in(剩余有效时间),实现自动登陆,无需用户再次输入同户名和密码,调用StatusesAPI中的upload()方法,实现文字和图片的上传,实现真正的分享。
5.4删除照片模块实现
当用户对某照片不满意的时候,可以点击屏幕上的删除按钮,对照片进行删除。
但是在真正删除之前,系统会给用户“确定”或者“取消”的提示以防止用户误删除操作。
效果如图5.5所示。
图5.5删除照片界面
核心算法分析:
为删除按钮设置监听,监听为一个信息警告,当用户选择“确定”时,又实现一个监听,此时照片在相册文件夹中进行删除;当用户选择“取消”时,退出提示并不做任何处理。
5.5照片详细信息模块实现
当用户点击屏幕中的查看照片详细信息按钮的时候,出现一个对话框,显示照片的名字、存储于SDcard中的位置和照片拍摄的地点。
效果如图5.6所示。
图5.6照片详细信息界面
核心算法分析:
为详细信息按钮设置监听,监听为一个信息提示框,提示过map中取得的entry对象获得照片文件的名称、位置和拍摄地点。
第六章系统测试
系统的测试分为单元测试与集成测试。
单元测试指对软件中的最小的可测试单元进行检查和验证;集成测试是在单元测试的基础上,将所有的模块按照设计要求组装成系统或者子系统。
6.1单元测试
1)测试一:
当相册文件中不存在照片,程序是否会有相应的提示。
具体操作:
删除camera相册中的所有照片文件,重新启动本应用。
结果:
显示“相册中没有相片,启动照相机进行拍照”。
结论:
提示功能正常,不会出现文件不存在的异常。
2)测试二:
当一照片已经从相册文件夹中删除之后,再次点击删除按钮,是否会出现相应提示。
具体操作:
对一照片连续点击的两次删除按钮。
结果:
显示“照片
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 android 平台 手机 相册 软件 开发 实现