1、- .工业园区效劳外包职业学院毕业设计论文论文题目:基于android平台的手机相册软件的开发与实现届 别 2016届系 别网络与通信技术系专业移动通信运营与效劳班级通信131姓 名 戚秀学 号130121001指导教师 金霞毕业设计论文独创性声明本人声明,所呈交的毕业设计论文系在指导教师的指导下本人独立完成的研究成果。论文中依法引用他人的成果,均已做出明确标注或得到许可。论文容未包含法律意义上已属于他人的任何形式的研究成果,如论文涉及任何知识产权纠纷,本人将承当一切责任。 学生签名:_日期:_. word.zl- . 目 录第一章 系统论述21.1课题背景21.2 Android系统相册软件
2、现状31.2.1快图浏览31.2.2 Gallery 3D4第二章 Android开发平台52.1 Android的由来52.2 Windows系统中Android开发平台在Eclipse上的搭建52.2.1 Java开发环境的建立52.2.2 Eclipse的安装52.2.3 下载Android SDK62.2.4 在eclipse中安装ADTAndroid Development Tools62.2.5 新建一个模拟器6第三章 Android相册系统分析73.1 系统可行性分析73.2 系统需求分析73.3 基于Android平台手机相册软件的建立原那么8第四章 Android相册概要设计
3、84.1 系统设计目标84.2 系统模块设计84.2.1 系统功能模块划分84.2.2 系统总体构造设计94.2.3 系统模块用例分析11第五章 Android相册的功能实现135.1浏览照片功能模块实现145.2拍摄照片模块实现155.3 分享照片到新浪微博模块实现165.4 删除照片模块实现175.5 照片详细信息模块实现18第六章 系统测试196.1 单元测试196.2 集成测试206.3 测试结果20致21参考文献21基于android平台的手机相册软件摘 要:本系统在Android SDK 2.3.3平台下进展,使用Java语言进展开发,使系统具有良好的可移植性和扩展性。系统具有动态
4、查看相册,拍摄相片,编辑相片,查看相片的详细信息等功能,用户可以针对某相片分享到新浪微博,新浪微博分享的初次使用需授权、认证以及账号绑定,下次使用无需再次输入账号和密码。本程序在开发平台上运行之后产生可以直接安装在Android 2.3.3版本手机上的apk文件,并且完美运行。关键词:Android SDK, Linux, 新浪微博, 授权, 分享, apkAbstract:Android is the open source mobile operating system based on the Linux platform which Google pany launched in 20
5、07, 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 develo
6、pment 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 micr
7、o-blog need to authorization, authentication and account binding, while users dont 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 phon
8、e.【Key words】Android SDK, Linux, sina micro-blog, authorization, share, apk 第一章 系统论述1.1课题背景Android手机操作系统是在2007年推出的基于Linux平台的完全开源手机操作系统,由谷歌开发,引领潮流的手机制造商把他们的目光投向了这一款手机操作系统。Android手机操作系统也也一天天的变得更加成熟。随着Android手机的广泛使用,基于Android平台的各种应用软件也变得炙手可热,这个市场有很大的开展前景,无数的软件开发商和开发人员将会被吸引,然后投入到市场中。目前,Android应用市场琳琅满目,主
9、要的应用市场包括猎豹清理等等,这其中每个市场中展示的Android应用多如牛毛,有官方的,也有非官方的,但是各种应用表达了Android手机操作系统的时代性。越来越多免费的Android应用不仅符合了群众化的需求,更促进了应用市场的不断多样化的开展。本课题的研究正是处在这样的一种大环境下,Android手机相册应用在众多的Android应用中只是一个小角色,但是相册软件对于移动设备却是必不可少的。以往人们用数码相机或者其他拍摄相片的设备拍摄出来的照片只能上传到电脑上才能更好实现的浏览功能,然而并不是每个人、每个时刻、每个地方携带电脑都是一件轻松的事情。当我们出门旅行的时候,轻松便捷是我们的首选
10、,这时候,Android移动手机的拍摄功能以及一个与之配套的相册浏览功能便能很好的满足人们的需求,随拍随看随分享的体念让这款应用更具有价值。1.2 Android系统相册软件现状 目前,应用市场上的相册软件众多,虽然功能小异,但是每种软件无论在界面风格的设计上还是在实现的设计上都独具特色。就拿Android系统自带的几款相册浏览工具来说,比拟好的有快图浏览和Gallery 3D两种。1.2.1快图浏览快图浏览是一个以文件夹模式为基准的轻量级图片浏览器,可以又快又清晰的预览缩略图,同时它的2D浏览体验也极其流畅幻灯片播放、滑动切换图片等功能,此软件都可以提供;用户在看图的时候如果想处理图片,这个
11、软件也是可以做到的,缩小放大还有裁剪等都可以操作,如图1.1所示。 图1.1 快图浏览1.2.2 Gallery 3DGallery 3D是一款具有3D效果的图片浏览器,流动式的显示每个文件夹中的缩略图,支持多点触屏缩放、滑动切换图片、幻灯片播放、调用系统照相机、照片的编辑、时时分享以及视频的播放功能,但是缺乏之处就是当图库中的图片过多时刷新速度过慢的缺点影响了用户的体验效果,如图1.2所示。图1.2 Gallery 3D第二章 Android开发平台2.1 Android的由来 Android一词最早出现于科幻小说?未来夏娃?中,外形像人一样的机器被来自法国的作家利尔亚当命名为Android
12、。Android公司是由鲁宾等人在2003年的创办一家美国公司,他把手机软件和手机操作系统设置为该公司的主要业务。2007年Google公司宣布Android是基于Linux平台的开源手机操作系统的名称,从此走上了新的舞台。2.2 Windows系统中Android开发平台在Eclipse上的搭建对于一个开发者而言,在进展Android应用的开发之前,第一步需要完成Android开发平台的搭建。虽然这款全新的Android应用开发软件在2003年被谷歌公司在I/O大会上公布,但Eclipse中的ADT依然是之前我们习惯的开发平台,所以这次设计的实现也是在Eclipse中实现的,针对这个要求而言
13、,Android开发平台的搭建是如何在Windows系统中实现,我要来简单描述。2.2.1 建立Java开发环境在Oracle官网中下载最新的版本为JDK 1.7的JDK文件。 最后运行查看版本信息,确定环境配置是否成功。2.2.2 Eclipse的安装在它的官网中下载Eclipse Classic的最新版本,安装并把其安装路径保存在C盘 ,可以将“C:eclipseworkspace设置工作空间。2.2.3 下载Android SDK访问,选择Download the SDK for Window下载并解压文件,解压后运行SDK Manager.exe文件,如图2.2所示是各个版本的SDK安
14、装向导。图2.2 Android SDK Manager2.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系统中相关组件,分享到新浪微博功能也是使用新浪微博开放平
15、台提供SDK中的相关API 接口,基于Android平台的开发所使用的语言有Java和XML,具有非常好的可扩展性和移植性。c.操作可行性:相册应用的开发是在eclipse中进展的,开发出来的应用可以直接在模拟器或者实体Android手机上进展调试,只有经过了仔细的测试以及调试之后才能将应用打包为apk文件并进展发布,供用户使用。也就是说,在用户使用之前,该应用是经过良好而严格的测试的,而且经过一大批测试用户的使用之后才广泛发布到市场上的。同时在市场上,Android手机或者其他的移动设备具有很高的占有率,并且各大手机制造厂商相继推出具有更高硬件配置的手机终端,因此可知该相册系统在操作上是完全
16、可行的。3.2 系统需求分析当该相册安装到Android手机上并启动后,用户能够浏览手机相册中的照片,并编辑照片放大、缩小照片;当用户想拍摄照片时,还能够点击屏幕中的按钮直接进展照片的拍摄;最重要的是用户能够时时的对照片进展社区的分享,例如点击屏幕中的分享按钮,相应的照片就可以分享到新浪微博,加上要说的话就可以和照片一起分享出去,同时对于新浪微博的第一次使用需要授权和认证,当登陆成功之后就能实现账户的绑定,下一次不需要再次输入账号和密码就能直接进展照片的分享。此应用的功能读者可以通过以上文字了解到。启动应用程序如果用户只需要浏览照片,那么直接滑动选择想要查看的照片,向左向右能够实现照片的切换浏
17、览如果用户想编辑照片放大、缩小照片,那么直接点击图片下方的放大、缩小按钮,实现放大或者缩小的照片的查看如果用户觉得某照片不再需要的时候,可以点击屏幕中的删除按钮,直接将该照片从SD卡的相册文件中删除,但在删除前会显示是否删除,这时需要你再次确定,防止错误的删除了需要留下的照片。如果用户想查看具体某照片的详细信息,点击屏幕中的详细信息,查看该照片的名字、格式,存放在SD卡中的位置以及拍摄地点。当用户特别喜欢某照片,希望能够分享该照片时,可以点击屏幕中的分享,将照片分享到需要分享到的平台,我们这里以分享到新浪微博为例。如果用户是第一次使用该应用的分享功能,我们需要获得新浪的授权认证,所以我们要输入
18、新浪微博的用户名和密码,才可以获得授权。如果用户已获得授权认证,那么可以点击分享到新浪微博按钮,跳转到分享页面,输入想要说的话,你想要分享的照片会在下方显示,当用户点击发布到新浪微博之后,实现了照片和文字的分享。3.3 基于Android平台手机相册软件的建立原那么考虑周全需求,面面俱到、分布设计。坚持标准化和系统的可行性。保证系统的稳定性、持续性和平安性。系统人机界面稳定,操作简单,能被很容易的理解,使用也很方便。 做一个Android手机的相册应用技术简单,但是做好这个应用却是很难,一个良好的系统对用户来说应该具有亲和力。首先,就应该保证该应用不会在安装于用户Android系统手机之后,占
19、用系统大量的存而造成死机,长时间等待,或者程序响应异常;其次,应用界面的设计会大大影响用户对该应用的体验效果,所以应用界面的美观也需要考虑到尽量使设计变得更完美。第四章 Android相册概要设计4.1 系统设计目标1) 通过手机相册应用,让用户能够浏览照片、编辑照片、拍摄照片,并将喜欢的照片分享到新浪微博。2) 通过良好的具有亲和力的人机界面,使得用户更加喜欢拍照和分享身边的景象。4.2 系统模块设计4.2.1 系统功能模块划分系统概要设计中的一个重要环节就是确定该系统的模块构成,以及构成系统的这些模块之间的联系。因而在进展Android手机相册概要设计时,在分析系统的根底之上,确定了该系统
20、应该具有的模块如下列图4.1所示。相册客户端用户浏览照片拍摄照片分享照片删除照片照片详细信息编辑照片相信信息陆新浪微博授权认证享照片分享到新浪微博图4.1 系统功能模块图4.2.2 系统总体构造设计系统总体构造设计是在系统功能模块划分的根底之上确定各个模块之间的相互关系。例如:在浏览照片时如果在相册文件夹中没有发现照片,那么需要调用拍摄照片功能模块确定用户是否决定拍照并返回照片;只有通过了新浪微博的授权和认证之后,才能分享照片到新浪微博。相册应用没有想象中的那么简单,实际上它的容很复杂。在界面布局方面,采用Android UI技术,使系统具有良好的布局和美观的操作界面,通过屏幕点击或者触摸进展
21、操作,使用户可以简单明了的操作同时也不缺乏乐趣。在系统的平安方面,在分享照片到新浪微博时,采用的是OAuth 2.0Open the Authentication的认证方式。这种协议会保证用户的信息平安,不会被第三方应用触及。因为用户输入的信息是完全与新浪微博的效劳器进展交互的。OAuth当中有四种角色:第一种:Service Provider效劳提供者,一般是,一些受限制的资源通常被保存在这些中。只有用户提供用户名和密码来确认自己的身份才可以查看到相关的资源信息。第二种:User用户,用户可以通过提供的用户名和密码保存私人的信息,例如照片、日记和金钱交易等等。这些最隐私的信息用户需要将其共享
22、给其他但又希望不被公开。第三种:Consumer客户,客户是希望用户私人信息可以被访问的应用程序,想要访问相应的资源必须得到Consumer授权。第四种:Protected Resources被保护的资源,比方备忘录,照片等等。以上四种角色在认证时的关系如图4.2所示:图4.2 OAuth 角色关系新浪微博OAuth 2.0的认证过程是:在新浪微博开放平台注册应用,新浪为该应用提供相应的appId,appSecret,callbackUrl,组装认证url,以WebView为桥梁,向开发平台认证中心发起授权。应用的出处将由认证中心判断,合法跳转到用户授权界面,账号和密码在被用户输入后就表示同意
23、授权向认证中心发起授权。授权请求会由认证中心处理,以callbackUrl加参数的方式Redirect,这是拦截Redirect url后附带的参数,通过这个可以知道认证结果。open_id,access_token,expires_in等参数,这些参数将在认证成功后获得,有了这些数据就可以向新浪微博开放平台的业务层接口发起请求了。如图4.3所示为OAuth 2.0的认证流程:图4.3 OAuth 2.0认证原理4.2.3 系统模块用例分析1) 照片浏览模块功能描述:当进入应用程序之后,屏幕上展现给用户的是相片文件夹中的首照片,用户可以通过左右滑动屏幕实现照片浏览的动态切换。参与者:用户。前置
24、条件:前一照片。后置条件:后一照片。如下列图4.4所示:用户户照片浏览图4.4 用户浏览照片用例图2) 拍摄照片模块功能描述:当用户想要拍摄照片时,可以通过点击菜单按钮选择拍照。参与者:用户。前置条件:点击拍摄按钮。后置条件:通过拍照传回来相片到相册文件夹中。该模块的用例图如下列图4.5所示:用户拍摄照片图4.5 拍照用例图3) 分享照片到新浪微博模块功能描述:如果用户是第一次使用分享功能,那么需要先输入账号和密码进展新浪微博的授权和认证;如果用户已经得到新浪微博的授权,那么可以直接分享照片到新浪微博。参与者:用户。前置条件:用户具有新浪微博的账号和密码。后置条件:用户将自己手机上的照片分享到
25、新浪微博。该模块的用例图如下列图4.6所示:用户通过授权认证分享照片到新浪微博图4.6 分享功能模块用例图用户分享照片到新浪微博模块流程图如下列图4.7所示:开场启动应用是否授权是分享照片否输入账号密码授权图4.7 分享功能流程图4) 删除照片模块功能描述:如果用户对某一照片不满意,点击屏幕中的删除按钮即可。参与者:用户。前置条件:已点击删除按钮。后置条件:该照片从相册文件夹中删除。该模块的用例图如下列图4.8所示:用户删除照片图4.8 删除照片模块用例图5) 查看照片详细信息模块功能描述:当用户点击查看详细信息后,显示当前照片的名字,在SD卡中的存放位置,拍摄地点。参与者:用户前置条件:已点
26、击查看详细信息按钮后置条件:显示照片详细信息该模块的用例图如下列图4.9所示:用户显示照片详细信息图4.9 查看照片详细信息模块用例图6) 编辑照片模块功能描述:当用户点击图片下方的放大缩小按钮时,可以实现照片的放大和缩小。参与者:用户。前置条件:以点击放大或者缩小按钮。后置条件:照片呗方法或者缩小。该模块的用例图如下列图4.8所示:用户照片放大照片缩小图4.8 编辑照片模块用例图第五章Android相册的功能实现本应用主要实现了六个主要的模块,包括浏览模块;拍摄照片模块;分享照片到新浪微博模块;删除照片模块;照片详细信息模块和编辑照片模块,以下针对于每个模块给出具体的实现方法和实现之后的效果
27、。5.1浏览照片功能模块实现应用启动之后,用户直接能看到可以左右滑动的缩略图,在整个屏幕中显示的是该缩略图的大图,如果用户选择了向左滑动缩略图,那么屏幕同步显示前一照片的大图;反之,那么屏幕同步显示后一照片的大图。效果如图5.1所示。图5.1 浏览照片界面核心算法分析:定义一个Map map的全局变量,然后遍历的camera相册文件夹,判断里面的文件是否为文件,如果是文件并且是以“jpg、jpeg、bmp、png、gif为后缀名的,那么将该文件参加map中去,map中的Key为该文件,value为该文件所处的SD卡中的位置。这样一来,map中保存了camera相册文件夹中所有的照片文件。定义一
28、个适配器ImageAdapter类,该类继承自android.widget.BaseAdapter类,重写里面的方法中重要的一个方法是getView方法,此方法在gallery切换时自动调用。为了有效的解决Android系统中关于Bitmap位图操作的OOMOut Of Memory问题,在获得位图的时候,在设计上使用BitmapFactory.decodeStream从文件中取得图片文件的流,以缩略图的方式显示,BitmapFactory.Options options = new BitmapFactory.Options; options.inSampleSize = 2;以上代码表示获
29、取的位图为原图的四分之一。5.2拍摄照片模块实现当用户在浏览照片的同时有了拍摄照片的需求后,用户可以按下菜单按钮,选择拍照菜单项进展拍照,如果用户对拍摄的效果满意的话,点击确定按钮从而拍摄的照片会自动存放到camera文件夹中,然后又返回浏览照片的界面上,如果用户对拍摄的效果不是很满意,用户可以点击取消按钮,然后重新拍摄。如图5.2所示。图5.2 拍摄照片界面核心算法分析:其中的MediaStore.ACTION_IMAGE_CAPTURE为系统的照相机的功能,这里定义一个指向系统照相机的意向,当点击拍照菜单项的之后,自动从原来的Activity转到系统拍照的Activity,第二个方法为带返
30、回数据的启动意向,TAKE_PHOTOS为自定义的常量,代表请求参数。重写onActivityResult方法,当请求码与TAKE_PHOTOS相等时,取出系统照相机拍摄后的照片,Bundle bundle = data.getExtras;Bitmap bitmap = Bundlebundle.get“data;当取出照片之后,将照片文件写入相册文件夹camera之中,在写入文件的同时,考虑到的一个问题就是如何给照片起名。因为拍摄照片是在不同的时间拍摄的,为了保证文件名字在一样目录下必须唯一的特性,在实现的时候将照片拍摄的时间设置为照片的文件名字。5.3 分享照片到新浪微博模块实现如果用户
31、是第一次使用分享功能,就需要输入用户名和密码获得新浪微博的授权认证,认证成功后用户就能够成功分享。如图5.3所示。图5.3 授权到新浪微博界面核心算法分析:;其中CONSUMER_KEY为新浪微博开发平台分配给每个第三方的appkey,用于鉴别身份,显示来源等功能。当点击授权到新浪微博按钮时,页面跳转到新浪微博的授权和认证页面。当用户授权认证成功之后,为了实现用户账号的绑定,需要获得access_token访问令牌和expires_in剩余有效时间并保存到本地,下一次直接从本地文件中读取即可,这样就可以防止用户每次登陆的麻烦,方便了用户的使用。当用户已经成功实现了新浪微博的授权和认证之后,即实
32、现了用户账号的绑定功能,用户可以直接对需要分享的图片进展描述并分享到新浪微博。效果如图5.4所示。图5.4 分享到新浪微博界面核心算法分析:取得保存在本地上的access_token访问令牌和expires_in剩余有效时间,实现自动登陆,无需用户再次输入同户名和密码,调用StatusesAPI中的upload方法,实现文字和图片的上传,实现真正的分享。5.4 删除照片模块实现当用户对某照片不满意的时候,可以点击屏幕上的删除按钮,对照片进展删除。但是在真正删除之前,系统会给用户“确定或者“取消的提示以防止用户误删除操作。效果如图5.5所示。图5.5 删除照片界面核心算法分析:为删除按钮设置监听
33、,监听为一个信息警告,当用户选择“确定时,又实现一个监听,此时照片在相册文件夹中进展删除;当用户选择“取消时,退出提示并不做任何处理。5.5 照片详细信息模块实现当用户点击屏幕中的查看照片详细信息按钮的时候,出现一个对话框,显示照片的名字、存储于SD card中的位置和照片拍摄的地点。效果如图5.6所示。图5.6 照片详细信息界面核心算法分析:为详细信息按钮设置监听,监听为一个信息提示框,提示过map中取得的entry对象获得照片文件的名称、位置和拍摄地点。第六章 系统测试系统的测试分为单元测试与集成测试。单元测试指对软件中的最小的可测试单元进展检查和验证;集成测试是在单元测试的根底上,将所有
34、的模块按照设计要求组装成系统或者子系统。6.1 单元测试1) 测试一:当相册文件中不存在照片,程序是否会有相应的提示。具体操作:删除camera相册中的所有照片文件,重新启动本应用。结果:显示“相册中没有相片,启动照相机进展拍照。结论:提示功能正常,不会出现文件不存在的异常。2) 测试二:当一照片已经从相册文件夹中删除之后,再次点击删除按钮,是否会出现相应提示。具体操作:对一照片连续点击的两次删除按钮。结果:显示“照片已删除的提示信息结论:删除功能正常,不会对已删除的照片再次进展删除3) 测试三:连续滑动gallery缩略图,是否会出现程序OOM异常。具体操作:在gallery视频上连续进展左
35、右的滑动。结果:屏幕同步显示gallery中的照片。结论:程序图片处理功能良好,没有出现OOM异常。4) 测试四:当对新浪微博授权和认证之后,仍点击授权和认证按钮,是否会有相应的提示信息。具体操作:点击过授权按钮之后再次点击授权按钮结果:程序不再出现授权应用到新浪微博的页面,而是提示用户已经授权的验证。结论:用户账号绑定新浪微博功能正常。6.2 集成测试在单元测试完成之后,验证所有的测试结果都为正常之后,就可以对系统进展集成测试了。此阶段是将概要设计确定的各个模块进展集成,在集成的过程中进展相应的测试,可以参照概要设计时的用例图进展功能测试。6.3 测试结果安卓平台手机相册系统运行流畅、稳定。
36、系统具有可靠性。总结软件的开发是需要坚持和耐心的,开发一个软件,我们必须经过系统分析、测试等过程,每一阶段的处理都会影响我们下一阶段的分析,所以在开发软件的时候,开发者需要拥有严谨而的态度。对本课题“基于Android平台的手机相册软件的研究,不管是从从界面的美观程度还是从功能的完善程度上来说都不算完美,但是在自己的实际开发之中,投入了大量的辛勤与努力。参考了大量的书籍资料后,很好的学习到开发软件所必备的专业修养和品德修养。在完成过程中尽管遇到了很多挫折,但是面对挫折不曾退缩,在这过程中让我了解到这不仅仅是我们的毕业设计,更是对我们的磨练。致很幸运,在我大学的最后一次作业的完成中,能得到金霞教
37、师的指导与帮助,在论文完成的过程中,金霞教师一直给了我支持和指导。因为有金霞教师的支持和鼓励,我才能充满信心,尽我最大的努力完成大学最后的也是最重要的一项课题。希望借此时机向金霞教师表示最衷心的感。参考文献1 丰富.Android应用开发揭秘M.:机械工业,2010,49508.2 王世江,佘志龙,昱勋,明杰.Google Android SDK 开发例大全第三版M.:人民邮电,2011,170189.3 刚.疯狂Android讲义M.:电子工业,2011,20212.4 伯特.Android根底教程(第二版)M.:人民邮电,2011,98145.5 丰富.Android技术幕:系统卷第一版M.:机械工业,2011,309402.6 超,梁泉.Android系统级深入开发:移植与调试M.:电子工业,2011,234 327.7 埃克尔.Java编程思想第四版M.:机械工业,2007,560698.8 布洛克.Effective Java中文版第二版M.:机械工业,2009,120167.9 昊斯特曼.JAVA核心技术卷1:根底知识原书第八版M.:机械工业,2008,57117.10 刚.疯狂Java讲义M.:电子工业,2012,99112. word.zl