基于android平台的手机相册软件的开发与实现
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
工业园区服务外包职业学院毕业设计(论文)
论文题目:基于android平台的手机相册软件的开发与实现届别2016届
系别网络与通信技术系
专业移动通信运营与服务
班级通信13(1)
姓名戚秀
学号130121001
指导教师金霞
毕业设计(论文)独创性声明
本人声明,所呈交的毕业设计(论文)系在指导老师的指导下本人独立完成的研究成果。
论文中依法引用他人的成果,均已做出明确标注或得到许可。
论文容未包含法律意义上已属于他人的任何形式的研究成果,如论文涉及任何知识产权纠纷,本人将承担一切责任。
学生签名:__________日期:__________
目录
第一章系统论述 (3)
1.1课题背景 (3)
1.2 Android系统相册软件现状 (3)
1.2.1快图浏览 (3)
1.2.2 Gallery 3D (4)
第二章Android开发平台 (6)
2.1 Android的由来 (6)
2.2 Windows系统中Android开发平台在Eclipse上的搭建 (6)
2.2.1 Java开发环境的建立 (6)
2.2.2 Eclipse的安装 (6)
2.2.3 下载Android SDK (6)
2.2.4 在eclipse中安装ADT(Android Development Tools) (7)
2.2.5 新建一个模拟器 (7)
第三章Android相册系统分析 (8)
3.1 系统可行性分析 (8)
3.2 系统需求分析 (8)
3.3 基于Android平台手机相册软件的建设原则 (9)
第四章Android相册概要设计 (9)
4.1 系统设计目标 (9)
4.2 系统模块设计 (9)
4.2.1 系统功能模块划分 (9)
4.2.2 系统总体结构设计 (10)
4.2.3 系统模块用例分析 (12)
第五章Android相册的功能实现 (14)
5.1浏览照片功能模块实现 (15)
5.2拍摄照片模块实现 (16)
5.3 分享照片到新浪微博模块实现 (17)
5.4 删除照片模块实现 (18)
5.5 照片详细信息模块实现 (19)
第六章系统测试 (20)
6.1 单元测试 (20)
6.2 集成测试 (21)
6.3 测试结果 (21)
致 (22)
参考文献 (22)
基于android平台的手机相册软件
摘要:本系统在Android SDK 2.3.3平台下进行,使用Java语言进行开发,使系统具有良好的可移植性和扩展性。
系统具有动态查看相册,拍摄相片,编辑相片,查看相片的详细信息等功能,用户可以针对某相片分享到新浪微博,新浪微博分享的初次使用需授权、认证以及账号绑定,下次使用无需再次输入账号和密码。
本程序在开发平台上运行之后产生可以直接安装在Android 2.3.3版本手机上的apk文件,并且完美运行。
关键词:Android SDK,Linux,新浪微博,授权,分享,apk
Abstract: Android is the open source mobile operating system based on the Linux platform which Google company launched in 2007, with Android version changed from 1.1 to 4.2.2 so far, Android mobile application service is more and more accepted, and widely favored by users, mobile phone photo album application is one of the many Android applications.
This system is running in the Android SDK 2.3.3 platform, with the development language of Java makes the system in good portability and scalability. The system has a dynamic view the photo album, shooting photos, edit photos, see photos for detailed information, and so on, users can share to sina micro-blog in a photo, the first use of the function of share in sina micro-blog need to authorization, authentication and account binding, while users don’t have to input account and password for the next time. After running this program on the development platform, there will be generated an apk file that can directly installed in the Android 2.3.3 release of mobile phone.
【Key words】Android SDK, Linux, sina micro-blog, authorization, share, apk
第一章系统论述
1.1课题背景
Android手机操作系统是在2007年推出的基于Linux平台的完全开源手机操作系统,由谷歌开发,引领潮流的手机制造商把他们的目光投向了这一款手机操作系统。
Android手机操作系统也也一天天的变得更加成熟。
随着Android手机的广泛使用,基于Android平台的各种应用软件也变得炙手可热,这个市场有很大的发展前景,无数的软件开发商和开发人员将会被吸引,然后投入到市场中。
目前,Android应用市场琳琅满目,主要的应用市场包括猎豹清理等等,这其中每个市场中展示的Android应用多如牛毛,有官方的,也有非官方的,但是各种应用体现了Android手机操作系统的时代性。
越来越多免费的Android应用不仅符合了大众化的需求,更促进了应用市场的不断多样化的发展。
本课题的研究正是处在这样的一种大环境下,Android手机相册应用在众多的Android应用中只是一个小角色,但是相册软件对于移动设备却是必不可少的。
以往人们用数码相机或者其他拍摄相片的设备拍摄出来的照片只能上传到电脑上才能更好实现的浏览功能,然而并不是每个人、每个时刻、每个地方携带电脑都是一件轻松的事情。
当我们出门旅行的时候,轻松便捷是我们的首选,这时候,Android移动手机的拍摄功能以及一个与之配套的相册浏览功能便能很好的满足人们的需求,随拍随看随分享的体念让这款应用更具有价值。
1.2 Android系统相册软件现状
目前,应用市场上的相册软件众多,虽然功能小异,但是每种软件无论在界面风格的设计上还是在实现的设计上都独具特色。
就拿Android系统自带的几款相册浏览工具来说,比较好的有快图浏览和Gallery 3D两种。
1.2.1快图浏览
快图浏览是一个以文件夹模式为基准的轻量级图片浏览器,可以又快又清晰的预览缩略图,同时它的2D浏览体验也极其流畅幻灯片播放、滑动切换图片等功能,此软件都可以提供;用户在看图的时候如果想处理图片,这个软件也是可以做到的,缩小放大还有裁剪等都可以操作,如图1.1所示。
图1.1 快图浏览
1.2.2 Gallery 3D
Gallery 3D是一款具有3D效果的图片浏览器,流动式的显示每个文件夹中的缩略图,支持多点触屏缩放、滑动切换图片、幻灯片播放、调用系统照相机、照片的编辑、时时分享以及视频的播放功能,但是不足之处就是当图库中的图片过多时刷新速度过慢的缺点影响了用户的体验效果,如图1.2所示。
图1.2 Gallery 3D
第二章Android开发平台
2.1 Android的由来
Android一词最早出现于科幻小说《未来夏娃》中,外形像人一样的机器被来自法国的作家利尔亚当命名为Android。
Android公司是由鲁宾等人在2003年的创办一家美国公司,他把手机软件和手机操作系统设置为该公司的主要业务。
2007年Google公司宣布Android是基于Linux平台的开源手机操作系统的名称,从此走上了新的舞台。
2.2 Windows系统中Android开发平台在Eclipse上的搭建
对于一个开发者而言,在进行Android应用的开发之前,第一步需要完成Android开发平台的搭建。
虽然这款全新的Android应用开发软件在2003年被谷歌公司在I/O大会上公布,但Eclipse中的ADT依然是之前我们习惯的开发平台,所以这次设计的实现也是在Eclipse中实现的,针对这个要求而言,Android 开发平台的搭建是如何在Windows系统中实现,我要来简单描述。
2.2.1 建立Java开发环境
在Oracle官网中下载最新的版本为JDK 1.7的JDK文件。
最后运行查看版本信息,确定环境配置是否成功。
2.2.2 Eclipse的安装
在它的官网中下载Eclipse Classic的最新版本,安装并把其安装路径保存在C盘,可以将“C:\eclipse\workspace”设置工作空间。
2.2.3 下载Android SDK
访问,选择Download the SDK for Window下载并解压文件,解压后运行SDK Manager.exe文件,如图2.2所示是各个版本的SDK安装向导。
图2.2 Android SDK Manager
2.2.4 在eclipse中安装ADT
下载ADT-15.0.0.zip文件(不用解压缩),然后在eclipse中选择help后,点击Add接着选择我们之前已经下载好的未压缩的文件,在Name处写上自己的名字,确定后等待安装成功。
2.2.5 新建一个模拟器
图2.3 Android模拟器
第三章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 系统总体结构设计
系统总体结构设计是在系统功能模块划分的基础之上确定各个模块之间的相互关系。
例如:在浏览照片时如果在相册文件夹中没有发现照片,则需要调用拍摄照片功能模块确定用户是否决定拍照并返回照片;只有通过了新浪微博的授权和认证之后,才能分享照片到新浪微博。
相册应用没有想象中的那么简单,实际上它的容很复杂。
在界面布局方面,采用Android UI技术,使系统具有良好的布局和美观的操作界面,通过屏幕点击或者触摸进行操作,使用户可以简单明了的操作同时也不缺乏乐趣。
在系统的安全方面,在分享照片到新浪微博时,采用的是OAuth 2.0(Open the Authentication)的认证方式。
这种协议会保证用户的信息安全,不会被第三方应用触及。
因为用户输入的信息是完全与新浪微博的服务器进行交互的。
OAuth当中有四种角色:
第一种:Service Provider(服务提供者),一般是,一些受限制的资源通常
被保存在这些中。
只有用户提供用户名和密码来确认自己的身份才可以查看到相关的资源信息。
第二种:User(用户),用户可以通过提供的用户名和密码保存私人的信息,例如照片、日记和金钱交易等等。
这些最隐私的信息用户需要将其共享给其他但又希望不被公开。
第三种:Consumer(客户),客户是希望用户私人信息可以被访问的应用程序,想要访问相应的资源必须得到Consumer授权。
第四种:Protected Resources(被保护的资源),比如备忘录,照片等等。
以上四种角色在认证时的关系如图4.2所示:
图4.2 OAuth 角色关系
新浪微博OAuth 2.0的认证过程是:
在新浪微博开放平台注册应用,新浪为该应用提供相应的appId,appSecret,callbackUrl,组装认证url,以WebView为桥梁,向开发平台认证中心发起授权。
应用的出处将由认证中心判断,合法跳转到用户授权界面,账号和密码在被用户输入后就表示同意授权向认证中心发起授权。
授权请求会由认证中心处理,以callbackUrl加参数的方式Redirect,这是拦截Redirect url后附带的参数,通过这个可以知道认证结果。
open_id,access_token,expires_in等参数,这些参数将在认证成功后获得,有了这些数据就可以向新浪微博开放平台的业务层接口发起请求了。
如图4.3所示为OAuth 2.0的认证流程:
图4.3 OAuth 2.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<File, String> map的全局变量,然后遍历已知的camera相册文件夹,判断里面的文件是否为文件,如果是文件并且是以“jpg、jpeg、bmp、png、gif”为后缀名的,则将该文件加入map中去,map中的Key为该文件,value为该文件所处的SD卡中的位置。
这样一来,map中保存了camera相册文件夹中所有的照片文件。
定义一个适配器ImageAdapter类,该类继承自android.widget.BaseAdapter 类,重写里面的方法中重要的一个方法是getView()方法,此方法在gallery切换时自动调用。
为了有效的解决Android系统中关于Bitmap(位图)操作的OOM (Out Of Memory)问题,在获得位图的时候,在设计上使用BitmapFactory.decodeStream()从文件中取得图片文件的流,以缩略图的方式显示,BitmapFactory.Options options = new BitmapFactory.Options();options.inSampleSize = 2;以上代码表示获取的位图为原图的四分之一。
5.2拍摄照片模块实现
当用户在浏览照片的同时有了拍摄照片的需求后,用户可以按下菜单按钮,选择拍照菜单项进行拍照,如果用户对拍摄的效果满意的话,点击确定按钮从而拍摄的照片会自动存放到camera文件夹中,然后又返回浏览照片的界面上,如果用户对拍摄的效果不是很满意,用户可以点击取消按钮,然后重新拍摄。
如图5.2所示。
图5.2 拍摄照片界面
核心算法分析:
其中的MediaStore.ACTION_IMAGE_CAPTURE为系统的照相机的功能,这里定义一个指向系统照相机的意向,当点击拍照菜单项的之后,自动从原来的Activity转到系统拍照的Activity,第二个方法为带返回数据的启动意向,TAKE_PHOTOS为自定义的常量,代表请求参数。
重写onActivityResult()方法,当请求码与TAKE_PHOTOS相等时,取出系统照相机拍摄后的照片,Bundle bundle = data.getExtras();Bitmap bitmap = (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 照片详细信息模块实现
当用户点击屏幕中的查看照片详细信息按钮的时候,出现一个对话框,显示照片的名字、存储于SD card中的位置和照片拍摄的地点。
效果如图5.6所示。
图5.6 照片详细信息界面
核心算法分析:
为详细信息按钮设置监听,监听为一个信息提示框,提示过map中取得的entry对象获得照片文件的名称、位置和拍摄地点。
第六章系统测试
系统的测试分为单元测试与集成测试。
单元测试指对软件中的最小的可测试单元进行检查和验证;集成测试是在单元测试的基础上,将所有的模块按照设计要求组装成系统或者子系统。
6.1 单元测试
1)测试一:
当相册文件中不存在照片,程序是否会有相应的提示。
具体操作:删除camera相册中的所有照片文件,重新启动本应用。
结果:显示“相册中没有相片,启动照相机进行拍照”。
结论:提示功能正常,不会出现文件不存在的异常。
2)测试二:
当一照片已经从相册文件夹中删除之后,再次点击删除按钮,是否会出现相应提示。
具体操作:对一照片连续点击的两次删除按钮。
结果:显示“照片已删除”的提示信息
结论:删除功能正常,不会对已删除的照片再次进行删除
3)测试三:
连续滑动gallery缩略图,是否会出现程序(OOM)异常。
具体操作:在gallery视频上连续进行左右的滑动。
结果:屏幕同步显示gallery中的照片。
结论:程序图片处理功能良好,没有出现OOM异常。
4)测试四:
当对新浪微博授权和认证之后,仍点击授权和认证按钮,是否会有相应的提示信息。
具体操作:点击过授权按钮之后再次点击授权按钮
结果:程序不再出现授权应用到新浪微博的页面,而是提示用户已经授权的验证。
结论:用户账号绑定新浪微博功能正常。
6.2 集成测试
在单元测试完成之后,验证所有的测试结果都为正常之后,就可以对系统进行集成测试了。
此阶段是将概要设计确定的各个模块进行集成,在集成的过程中进行相应的测试,可以参照概要设计时的用例图进行功能测试。
6.3 测试结果
安卓平台手机相册系统运行流畅、稳定。
系统具有可靠性。
总结
软件的开发是需要坚持和耐心的,开发一个软件,我们必须经过系统分析、测试等过程,每一阶段的处理都会影响我们下一阶段的分析,所以在开发软件的时候,开发者需要拥有严谨而的态度。
对本课题“基于Android平台的手机相册软件”的研究,不论是从从界面的美观程度还是从功能的完善程度上来说都不算完美,但是在自己的实际开发之中,投入了大量的辛勤与努力。
参考了大量的书籍资料后,很好的学习到开发软件所必备的专业修养和品德修养。
在完成过程中尽管遇到了很多挫折,但是面对挫折不曾退缩,在这过程中让我了解到这不仅仅是我们的毕业设计,更是对我们的磨练。