毕业论文-基于Android的文件管理器设计与开发_第1页
毕业论文-基于Android的文件管理器设计与开发_第2页
毕业论文-基于Android的文件管理器设计与开发_第3页
毕业论文-基于Android的文件管理器设计与开发_第4页
毕业论文-基于Android的文件管理器设计与开发_第5页
已阅读5页,还剩44页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 太原理工大学毕业设计(论文)用纸.前言11选题经过 在这个科技不断发展经济越来越发达的时代,电子技术获得了飞速的发展,移动设备越来越普及,其硬件性能也得到了极大的提升。从最早的“大哥大”,到现在的商务PDA手机、智能手机、音乐手机等等,功能也从单纯的打电话发展到了发短信、听歌、上网等。手机和我们生活的联系越来越紧密,手机的功能成为很多人们关注的焦点。与此同时,产生的大量软件文件的管理也备受人们的关注。人们希望手机的文件管理界面简洁,文件使用方便。目前国内最常见的移动开发平台有Symbian,iPhone,Windows Phone以及当下正在逐步兴起的Android。其中的安卓操作系统,由于

2、其免费、开源和良好产业运作策略而发展迅猛,为其在智能手机市场赢得更多的发展机遇。因此,根据Android市场和手机市场,开发一个完善的多功能文件管理系统将会具有良好的市场和应用前景。 普通的非智能手机已经不能满足人们日常生活的需求,电话,短信,上网,成为了人们选择手机必不可少的条件,但是现在已经有更高需求的用户选择了更高需求的手机。那就是Android , 作为Android 手机用户来说。使用应用程序来完成日常生活需要,也是必不可少的了,手机的使用越来越多。随着要处理的信息的增多,手机SDcard内存越来越大,手机上存储的文件也越来越多,但是对于一般的手机用户来说,这些文件管理起来非常麻烦。

3、随着基于Android的文件管理工具日益增多,对于处于发展初级阶段的Android来说,一个很完善的文件管理工具还不是很多。能满足用户需求的工具更是少之又少。所以为了大多数用户的需求,也方便开发者使用,选择了这个基于Android的文件管理器的题目来进行深入的研究。 本次设计运用Android平台手机作为研究开发对象,配合Java语言程序设计以及面向对象思想设计了一种手机文件浏览器。本设计完成后,能够实现以下功能:文件的浏览、文件的一些基本操作,一些远程模块的调用、根据不同文件扩展名来实现打开文件的功能。 在设计时,按照设计的要求,从可靠性、经济性、安全性三个方面进行考虑,通过设计方案的比较,

4、确定出来一套即经济又可行的方案。本次设计是对所学知识的综合运用,把理论知识和实践相结合。在本次设计与检验过程中遇到了许多实际问题,比如Android平台手机及其运行环境的选择,不熟悉Eclipse软件的使用方法,不熟悉开发技巧,可能会发生一些微小功能不能实现、软件运行不稳定,如何设计软件的最佳外观效果等。所有的这些问题,我们都通过查阅资料,咨询老师一一解决了,为设计的成功提供了保障。12 Android发展的国内外动态Google一开始并没有创造Android。Android一开始属于Android公司,这个公司是由Andy Rubin创立的,发展了一段时间后,Google才收购了它。而且Go

5、ogle公司的Android产品负责人也成了Andy Rubin。Android1.0手机系统是最老版本的,2007年11月由Google发布,一开始并没有获得广大的支持。直到Android1.5手机操作系统版本的发布,Android才引起了广大开发爱好者的关注。从这以后,版本更新就变得很快了,现在最新的版本已经达到了Android4.4.21。现在Android手机系统的使用人数已经远远超过了IOS,成了世界上使用最广的一款手机操作系统Android开发平台是一个完全开放式的手机平台,从国内的环境看来,已经有一大部分手机生产商家生产Android系统的手机,他们不用掏钱便能使用,何乐不为?无

6、论是出名的手机生产商家也好,数量庞大的山寨手机生产商家也罢,单从减少开发费用的角度想一想,Android平台都是一个很好的选择。在国外,Google 于2007年11月5日宣布推出基于Linux平台的开源手机操作系统Android。Android凭借其良好的用户体验,低廉的成本和较高的开放性吸引着越来越多的终端厂商采用,因此基于Android系统的手机增量也成为业内津津乐道的话题,根据Gartner等国际研究机构的报告,Android在2010年第三季度全球智能手机市场的份额已达25.5%,而在去年同期Android市场份额只有3.5%。Android出现之前,智能手机OS市场中Symbian

7、和WM两者占据大部分市场份额,但在移动互联网的快速发展,终端+应用的趋势逐渐成为主流的情况下,两者的劣势逐渐突出。Symbian由于发展多年,底层架构较为陈旧,且对触摸屏支持不佳,用户体验交叉;再加上系统较为封闭,支持的应用较少。WM系统同样较为封闭,对终端厂商来讲引入成本较为昂贵,娱乐性平平,多用于商务机型。2007年,苹果iPhone上市后IOS凭借iPhone优秀的用户体验和App Store 在线商店模式获得了巨大的成功,特别值得一提的是App Store 应用开发分成模式刺激了开发者的不断进入,截止2010年8月,可用于IOS的应用已超25万,苹果公司顺应了终端+应用的智能手机发展趋

8、势,取得了快速的发展。但IOS也遇到了许多问题。IOS属于半开放的OS,实现移动互联网产业链上的各环节的普赢是较为困难;其次iPhone定价较高,短期内难以满足中低端市场的需求,反观Android系统,拥有低廉的引入成本,良好的用户体验开放性较强的特点,加上Android Market 和众多第三方应用商店做后盾,在应用资源也非常丰富;虽然Android目前存在安全性和版本混乱等问题,但由于其适应了移动互联网的发展趋势,切合了移动互联网产业链各方的发展变化和需求,所以取得了迅猛的发展。 2014年3月10日早间消息,谷歌(1214.79, -4.82, -0.40%)Android、应用和Ch

9、rome高级副总裁桑达尔皮采(Sundar Pichai)上周六在SXSW互动大会上宣布,该公司很快就将推出针对可穿戴设备设计的Android SDK(软件开发套件)。 谷歌将在SDK中向开发者阐述谷歌对该市场运作方式的愿景。从拉斯维加斯国际消费电子展(CES)到巴塞罗那移动世界大会(MWC),可穿戴设备一直都是今年各大科技盛会的重要主题。 可穿戴设备中那些体积小巧、性能强大的芯片将给Android带来巨大提升,他对这一前景颇感振奋。 这一新的SDK不仅是针对智能手表的。谷歌的职责是为开发者提供系统软件和API(应用编程接口),而具体针对哪种产品进行开发,则取决于开发者和合作伙伴。 在国内,电

10、信运管商方面,通过产业链优势(销售渠道优势、用户优势、资源整合优势)向操作系统领域进行扩张,达到控制更多产业链话语权的目的是现阶段移动互联网发展的必然趋势。相对于其他系统 Android 的开放性和可定制性使得运营商从系统层面打造自己的用户界面,并内置增值服务更加容易。终端厂商方面,企业纷纷开始从单纯出售手机向终端+服务/应用的业务模式转型,操作系统作为承载 应用的平台,对于智能手机终端厂商的重要性不言而喻。在 Android 问世之前,智能手机大多使用 WM 平 台,不仅成本较高,而且系统封闭应用体验较差。而 Android 系统除了低廉的成本和良好的用户体验外,因采用了开源的平台,给予了终

11、端厂商和开发者更大的灵活性,开发者在程序的开发移植上更为方便且不需要考虑厂商端内容审核等问题,终端厂商则可以按需深度定制系统开发本地化应用环境,用户可选择的 应用资源将会进一步丰富。在国内三星、摩托罗拉等手机厂商也延续着这一策略,纷纷推出 Android 新机,创新工厂旗下的点心操作系统。未来这些企业可能会凭借 Android 的特性,定制针对细分应用市场的 OS,推动 Android 的多样化发展。而从用户的角度,Android 良好发展前景主要源于优秀的用户体验和高性价比这两个方面,中国手机用户对价格较为敏感,中国移动也在近期完成了 600 万台 TD 终端的采购,其中大部分为1500 元

12、以下的 Android 手机终端;而 WM 和 IOS的机种目前市场价普遍在 2000 元以上, Android 如此的价格定位,对占大多数的中低端消费者有很大吸引力。而根据各大手机卖场的回馈情况表示,55%的计划换机的用户都对 Android 手机表示了较强的购买意愿。 当然,经历了热议和快速发展的 Android 同样面临着一些挑战。 首先,目前 Android 由于过于开放,版本繁多造成发展分裂的状况,引来了兼容性和安全方面的问题; 不同版本 Android 之间的硬件要求不同造成了 Android 及其衍生系统的应用兼容性下降,在一定程度上影 响了用户体验。而过于开放带来许多安全问题,

13、例如最近的“Android SD 卡漏洞”爆发后一些基于 Android 的定制系统无法及时有效应对,而“安卓短信卧底”等病毒木马也频频出现,威胁 Android 用户的安全。Android 在发展中虽遇到一些问题,而在多方面因素推动下,总体趋势仍旧看好。当前,Android 在国内的迅速发展才起步不久,预计随着 HTC 进入中国市场,以及酷派、华为、中兴等终端厂商的发力,Android 手机在中国市场的销量在未来还将有较大发展空间。 随着新技术的不断开发与应用,近年来Java技术发展十分迅速,一个以Java应用为主的新技术革命浪潮正在蓬勃兴起。而基于Andriod的软件开发是一个前景很大的技

14、术,然而市面上基于Android的文件浏览器虽然有不少种,各种的文件浏览器都能实现文件浏览的功能的应用,但是由于版本繁多,开发思路不同,加之Google开放的源代码,Android的SDK的版本不同,API不同使得各种文件浏览器的版本、实现的功能也进而不同。所以基于Android的文件浏览器卡发显得非常必要。13课题内容以及意义131课题研究内容 目前Android平台手机渗透到我们生活,20世纪末,电子技术获得了飞速的发展,在其推动下,基于Android平台手机的现代电子产品在我们生活的各个角落都能见到,有力地推动了社会信息化程度的提高,同时也使现代电子产品性能进一步提高,产品更新换代的节奏

15、也越来越快。基于Android平台手机的发展趋势,本设计以Android平台手机为核心制作了一个文件浏览器。本课题的主要任务是针对Android平台的手机文件管理系统的设计和实现,基于Android系统应用开发的特征和现实需求,设计出一款可以满足手机使用者对文件进行浏览、对文件进行操作等一系列的需求,同时能够很好的融入整套开发系统平台的应用软件解决方案。本文对Android发展的国内外现状做了介绍,从实际的要求出发,结合软件使用功能等方面,通过具体的操纵流程和要实现的目标的概述,制定了详尽的Android手机文件管理系统的开发需求。在明确需求的前提下,通过对整个Android系统架构和应用开发

16、背景的分析,设计出Android文件管理器的整体解决方法。系统总体设计完成后,文件管理器的软件架构在Android系统中的层次也就明确了。本文对应用开发中的重要技术也做了详细的研究,结合Android基本编程技术等其它一些知识,论述了文件管理应用的具体实现过程。132课题研究意义 理论上,看似简单的文件管理器,由于采用Android平台开发,所以对界面的要求比较高。由于本文件管理器是基于手机或者平板等移动终端,所以对开发的难度大大提高。因此,解决对于平台的选择,不仅重要,而且有助于本文件管理器的系统的真正推广以及应用,具有着重要的意义。在现实生活中,一方面,如前所述,文件管理器本质上是一种日常

17、应用,在大量现实应用中,我们不难发现,一个很好的文件管理器能够让用户很方便的管理手机中的文件,甚至对手机中的应用程序管理更加方便,我们通常,对于文件管理器要求不是很高,但是本文件管理器中。对于开发者和普通用户来说区别很大,很容易让Android用户群中的两类用户产生浓厚的兴趣。因此,我所做的文件管理器,在代码完成方面会由一定难度,而已,在界面的简洁程度,以及推广方面,也有一定难度。因为这一程序的必要,所以为不得不开发一款这样的应用程序。 1.4相关技术及开发工具简介Android:Android是基于Linux核心的软体平台和作业系统,早期由Google,后由开放手机联盟开发。 美国检索公司G

18、oogle在2007年11月5日公布的手机系统平台。该平台由操作系统、中间件、用户界面和应用软件组成,号称是首个为移动终端打造的真正开放和完整的移动软件。它采用了软体堆层2(software stack,又名以软体叠层)的架构,主要分为三部分。 低层以Linux核心工作为基础,只提供基本功能,其他的应用软体则由名公司自行开发,以java作为编写程式的一部分。 另外,为了推广此技术,Google和其它几十个手机公司建立了开放手机联盟(Open Handset Alliance)。 Eclipse: Eclipse 是一款相当优秀的开放源代码的、基于 Java 的可扩展的集成开发环境。就其本身而言

19、,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括 Java 开发工具(Java Development Tools,JDT)。Eclipse是一个开放源代码的软件开发项目,专注于为高度集成的工具开发提供一个全功能的、具有商业品质的工业平台。要想开发Android还必须在Eclipse上安装ADT插件和Android SDK。ADT是Android Development Tools的缩写,是布置开发环境时为了方便在Ecplise里开发Android程序而装的插件。Android SDK是用于Android开发的工具包,里面有各种版

20、本用于开发、检测、调试的API文档和开发工具。下载好Android SDK后,开始安装,Android SDK采用了HYPERLINK /view/229611.htmJava语言,所以需要先安装JDK 5.0及以上版本。直接下载jdk安装文件安装更为方便。Android SDK不用安装,下载后,直接解压即可, 将下载后的SDK的HYPERLINK /view/3090351.htm压缩包解压到适当的位置,就这么简单;SDK安装OK。其中需要注意的是使用Eclipse进行HYPERLINK /view/1241829.htmAndroid应用开发需要给HYPERLINK /subview/23

21、576/9374802.htmEclipse装adt插件,这样HYPERLINK /subview/23576/9374802.htmEclipse就可以和Android sdk建立连接,可以在Eclipse中启动Android模拟器进行HYPERLINK /view/182316.htm程序调试等ADT插件安装这里不再累赘,插件的安装URL为:也可以下载adt的zip包安装 安装完插件后,需要做一些简单的配置:在HYPERLINK /subview/23576/9374802.htmEclipse中,选择Window Preference;从左侧的菜单中,选择Android项;设置SDK L

22、ocation,点Browse选择SDK的安装根目录;OK,完成。2文件管理系统的需求分析和可行性论述21系统要达到的目标和要解决的问题 本章需求分析的目的是规范化本软件的编写,旨在于提高软件开发过程中的能见度,便于对软件开发过程中的控制与管理,同时提出了本软件开发过程,并作为工作成果的原始依据,同时也表明了本软件的共性,以期能够获得更大范围的应用。 在Android系统在手机平台风靡的同时,文件管理器在系统中越来越普及,人们通文件管理软件对文件进行文件管理,既方便了用户,又为传统文件管理带来了革新的契机。现今Android操作系统逐渐成熟,尤其是伴随着各大手机厂商如三星(Samsung),多

23、普达(HTC)出款的多款Android手机大热。人们不仅要求采用手机连接PC进行文件管理,更加盼望在手机操作系统上实现快捷方便的文件管理。随之带来的是android手机给功能强大,使用简单快捷,拥有良好操作界面的手机文件管理系统的具体需求。跟电脑上的文件管理界面一样,手机文件管理工具就像是一座桥梁用来连通用户和手机文件系统,准确的让用户了解到手机上文件的信息,并且让用户对这些文件进行简单的操作以便达到管理的目的。本软件基于Android技术开发,规模不大,开发本软件意图是为了深入学习Android技术,锻炼自主学习能力,为以后开发积累经验,锻炼发现问题解决问题的能力。现在,有很多手机软件使手机

24、的应用更方便,本设计开发的目的就是开发一款实用的手机文件管理器对一系列的手机软件及文件进行管理,方便快捷。本设计为Android系统的手机用户提供服务,可以安装到手机上使用。由于Android手机基于Linux内核开发,所以对于Linux 文件来说就由安全性的问题,同时也由这用户权限的问题,对于一些非普通用户来说,有一些文件是无法访问的,如果一旦访问就会出现一些系统级的问题,所以对于此处Android 文件管理器中需要注意将用户不需要也不应该访问的文件目录隐藏从而达到安全有效的使用文件列表需要过滤。文件打开,复制,粘贴,重命名,删除,打开文件需要针对每一种类型的文件选择适应的打开方式,以及打开

25、形式。 复制粘贴文件,可能需要判断文件的类型,对文件采取必要的保护措施。 重命名文件,可能需要对其进行修改权限处理。删除文件,需要用户的权限来判断,也需要判断删除之后是否会对系统造成损失,如果是文件夹,需要了解是否可以删除文件夹的文件或者空文件夹处理。文件检索:对文件的过滤,对文件夹的过滤。文件信息查看:文件信息处理,对文件信息的采集,文件夹内容的遍历。文件收藏:存储文件路径信息。文件移动:文件位置的改变。文件路径的权限。在应用程序管理中,应用程序安装:对可支持的应用程序安装。应用程序卸载:对安全,可卸载的应用程序卸载。应用程序备份:应用程序打包处理。应用程序信息查看:查看应用程序信息。获取应

26、用文件。应用程序运行:安全的执行应用程序。进程管理:对用户想关闭的进程进行关闭处理。22系统主要功能需求文件管理工具最终是要安装到手机上以供用户操作,所以应该从用户出发和Android系统手机的使用者进行不断的沟通,深入了解以便很好的获取需求。将用户的模糊需求转化成为具体的软件模型,这样才能简化用户的操作,使用户更加方便的管理自己手机里面存放的文件。本课题所设计的基于Android的文件管理应用,安装到手机上后,能够识别手机SD卡和手机内存中存放的文件。221文件的浏览打开FileManager之后,主界面就会显示/sdcard路径下的所有东西,包括各种文件和目录并且通过不同的图标加以区分,我

27、们也可以在稍后的浏览过程中对这个目录的信息进行操作。如果要进行目录的跳转,可以选择所在目录一个子文件夹点击,或者返回到所在目录的上一级目录。目录跳转的时候要预先判断有效性,保证所在目录和要跳到的文件夹所处的状态,动态的监听新建文件、文件删除或者一些其他的事情造成的路径的变化情况,对文件列表进行动态的更新。文件管理工具FileManger打开之后的主界面相当于是一个列表,每一个列表显示的是一个对应目录下的所有内容,列表又分成许多的行,每一行或是一个可以打开的目录,或是一个可以通过手机上的其他应用打开的实实在在的信息文件,为了让系统的反应更加迅速,每一行不能包括很多的信息,要尽量做的简洁,让用户一

28、目了然。222文件的操作 文件管理工具不光能显示文件让用户浏览文件,还要让用户能够操作文件,例如新建文件、新建文件夹、删除文件、复制、剪切、粘贴等一系列操作。当用户长按文件列表上的某一行或者点击手机上的菜单按钮的情况下,就会弹出许多供选择的操作,只要接着点击选择想要进行的操作就行了。23系统非功能性需求 Android文件管理系统面向用户功能明确,并且由于是基于Android系统手机嵌入式软件,所以满足文件管理主要功能的同时,还需要满足一些非功能性需求。非功能性需求在以往的软件开发中经常被研发人员忽视,导致非功能性需求得不到保障,进而致使保障不了功能性需求的定义和实现。为了更好的实现文件管理系

29、统的带给用户的价值,基于提高软件质量和遵守Android软件设计的主流标准和规范的考虑,文件管理系统非功能性需求有以下几个方面: (1)界面设计需求:此处的界面设计需求不同于详细的界面的设计,主要体现的是用户在手机上使用文件管理软件的体验感觉。作为手机应用,应该注重软件界面设计的美观,简单,大方。由于文件类型的较多,不同文件类型模块间的切换要求平滑实现。界面主题颜色采用醒目亮色。调用Android操作系统的控件时充分考虑系统对控件的支持是否良好和使用范围是否超出软件需求。 (2)执行需求:执行需求要充分考虑当前主流手机的硬件配置,要求文件管理软件精确完成文件操作和完成功能时间在用户可接受的范围

30、之内。软件在响应用户的文件操作时,对初始化界面显示文件列表的速度,完成诸如文件移动,删除,重命名等操作的精确性,完成操作后更新列表的时间,验证root权限的准确度等。 (3)易用性需求:在满足用户功能的需求的同时,软件最终提供给用户的功能的调用要符合用户使用手机软件的习惯操作和对软件的前期期望值。系统需求分析中心围绕的用户的使用习惯展开,细分用户习惯和需求,和软件应用功能相结合,最终达到用户可以更快的操作软件。 (4)适应性需求:适应性需求主要包括文件管理软件对手机软件环境和硬件环境的适应。系统适应的软件环境主要是适应手机Android操作系统,软件适合于Android 21以上的所有版本的系

31、统,可以调用Android相应的服务和Android自带的控件;系统适应的硬件环境主要是识别手机内存和自带的SD卡,软件安装后占有极少的手机空间前提下,提供完整的文件管理功能。 24系统运行环境规定系统基于Android系统进行开发,考虑到Android的基于Linux本质,开发语言选择使用成熟的高级语言Java。在pc端windows平台下使用Android SDK自带移动虚拟手机开发调试,生成软件包,在手机端安装apk来达到最终系统运行的目标。下面讲述下Android虚拟机的组成部分和一些构造原理,在介绍Android虚拟机之前,先要了解下什么是Android操作系统,所谓的Android

32、:是基于Linux内核的软件平台和操作系统,早期由Google开发,后由开放手机联盟Open Handset Alliance)开发。Linux系统中进程间通信的方式有:socket, named pipe,message queque, signal,share memory。Java系统中的进程间通信方式有socket, named pipe等。android应用程序理所当然可以应用JAVA的IPC机制实现进程间的通信,取而代之的是Binder通信。Google为什么要采用这种方式呢,这取决于Binder通信方式的高效率。 Binder通信是通过linux的binder driver来实现

33、的。Binder通信操作类似线程迁移(thread migration),两个进程间IPC看起来就象是一个进程进入另一个进程执行代码然后带着执行的结果返回。Binder的用户空间为每一个进程维护着一个可用的线程池,线程池用于处理到来的IPC以及执行进程本地消息,Binder通信是同步而不是异步。Android中的Binder通信是基于Service与Client的,所有需要IBinder通信的进程都必须创建一个IBinder接口。系统中有一个进程管理所有的system service,Android虚拟机不允许用户添加非授权的System service,当然现在源码开发了,我们可以修改一些代

34、码来实现添加底层system Service的目的。对用户程序来说,我们也要创建server,或者Service用于进程间通信,这里有一ActivityManagerService管理JAVA应用层所有的service创建与连接(connect)。disconnect,所有的 Activity也是通过这个service来启动,加载的。ActivityManagerService也是加载在Systems Servcie中的。Android虚拟机启动之前系统会先启动service Manager进程,service Manager打开binder驱动,并通知binder kernel驱动程序这个进

35、程将作为System Service Manager。然后该进程将进入一个循环,等待处理来自其他进程的数据。用户创建一个System service后,通过defaultServiceManager得到一个远程ServiceManager的接口。通过这个接口我们可以调用 addService函数将System service添加到Service Manager进程中,然后client可以通过getService获取到需要连接的目的Service的IBinder对象。这个IBinder是 Service的BBinder在binder kernel的一个参考,所以service IBinder 在

36、binder kernel中不会存在相同的两个IBinder对象。每一个Client进程同样需要打开Binder驱动程序。对用户程序而言,我们获得这个对象就可以通过binder kernel访问service对象中的方法。Client与Service在不同的进程中,通过这种方式实现了类似线程间的迁移的通信方式,对用户程序而言当调用Service返回的IBinder接口后,访问Service中的方法就如同调用自己的函数。 利用Eclipse开发的Android应用程序,能够与安装有Android操作系统的手机硬件相联系,快速便捷的访问手机SD卡和本机内存中各个类型文件。有条理的将手机文件与系统中

37、划分的文件类型集合相对应,比如系统中分为图片集合,音乐集合等,通过窗口集合的方式显示各个对象和不同类型文件的对应关系。基于Android的文件管理器完成设计编码、调试工作后,不仅可以在Android虚拟机上运行,凡是具有android操作系统的手机,都可使用。25 可行性论述在开发该文件管理器之前,我查询了前人所写过的诸多论文以及源程序,在开发之时,结合了资料中的算法并揉进了自己的一些思想,使程序可以完整实现。(1)技术可行性 文件管理器的应用有很多,但是Android的应用程序,目前还很少在android market中使用,也很少在国内的应用市场中所见到。由于在国内外Android领域中,

38、还处于发展的初级阶段,还很少有开发者能对整体设计有一定的思想以及理念,成熟度非常低,有待于完善的地方也很多。 在开发中可能会遇到的问题,比如android文件的安全性BUG,对于一个屏幕有限制的项目如何展现出尽可能让用户了解更多的内容,对于安全性的问题。所以。对于技术上的实现可能有一定的问题。但是为会努力的克服困难。完成技术方面的问题。(2)操作可行性该文件管理器需要如下的运行环境:CPU:500MHZ及以上;内存:256 M及以上。安装有Android 2.1以上的操作系统。因此,从操作可行性来看,只要系统用户的硬件软件设备满足以上条件,即可用该文件管理器。3系统的整体设计和规划31Andr

39、oid开发平台系统的基本架构 图3-1 Android开发平台系统的基本架构如图3-1可以很明显看出,Android系统架构由五部分组成,分别是:Linux Kernel、Android Runtime、Libraries、Application Framework、Applications。现在我们拿起手术刀来剖析各个部分。其实这部分SDK文档已经帮我们做得很好了,我们要做的就是拿来主义,然后再加上自己理解。下面自底向上分析各层。Linux Kernel:Android基于Linux 2.6提供核心系统服务,例如:安全、内存管理、进程管理、网络堆栈、驱动模型。Linux Kernel4也作为

40、硬件和软件之间的抽象层,它隐藏具体硬件细节而为上层提供统一的服务。分层的好处就是使用下层提供的服务而为上层提供统一的服务,屏蔽本层及以下层的差异,当本层及以下层发生了变化不会影响到上层。也就是说各层各司其职,各层提供固定的SAP(Service Access Point),专业点可以说是高内聚、低耦合。如果你只是做应用开发,就不需要深入了解Linux Kernel层。Android Runtime:Android包含一个核心库的集合,提供大部分在Java编程语言核心类库中可用的功能。每一个Android应用程序是Dalvik虚拟机中的实例,运行在他们自己的进程中。Dalvik虚拟机5设计成,在

41、一个设备可以高效地运行多个虚拟机。Dalvik虚拟机可执行文件格式是.dex,dex格式是专为Dalvik设计的一种压缩格式,适合内存和处理器速度有限的系统。大多数虚拟机包括JVM(Java Virtual Machine即Java虚拟机)都是基于栈的,而Dalvik虚拟机则是基于寄存器的。两种架构各有优劣,一般而言,基于栈的机器需要更多指令,而基于寄存器的机器指令更大。dx 是一套工具,可以將 Java .class 转换成 .dex 格式。一个dex文件通常会有多个.class。由于dex有時必须进行最佳化,会使文件大小增加1-4倍,以ODEX结尾。Dalvik虚拟机依赖于Linux 内核

42、提供基本功能,如线程和底层内存管理。Libraries6:Android包含一个C/C+库的集合,供Android系统的各个组件使用。这些功能通过Android的应用程序框架(application framework)暴露给开发者。Application Framework:通过提供开放的开发平台,Android使开发者能够编制极其丰富和新颖的应用程序。开发者可以自由地利用设备硬件优势、访问位置信息、运行后台服务、设置闹钟、向状态栏添加通知等等,很多很多。开发者可以完全使用核心应用程序所使用的框架APIS。应用程序的体系结构旨在简化组件的重用,任何应用程序都能发布他的功能且任何其他应用程序可

43、以使用这些功能(需要服从框架执行的安全限制)。这一机制允许用户替换组件。所有的应用程序其实是一组服务和系统。Applications:Android装配一个核心应用程序集合,包括电子邮件客户端、SMS程序、日历、地图、浏览器、联系人和其他设置。所有应用程序都是用Java编程语言写的。更加丰富的应用程序有待我们去开发!我们所要做的事情就是在这个架构上设计自己的文件管理应用,它在整个系统中的结构如图3-2所示:图3-2 文件管理在整个系统中的架构层次由于本课设计的是基于Android的文件管理系统,而Android开发使用的是java语言,那么这里就要用到Java中比较重要的一个类File。它直接

44、处理文件和文件系统。也就是说,File类没有指定信息怎样从文件读取或向文件存储;它描述了文件本身的属性。File对象用来获取或处理与磁盘文件相关的信息,例如权限,时间,日期和目录路径。此外,File还浏览子目录层次结构。很多程序中文件是数据的根源和目标。尽管它们在小应用程序中因为安全原因而受到严格限制,文件仍是存储固定和共享信息的主要资源。Java中的目录当成File 对待,它具有附加的属性一个可以被 list( )方法检测的文件名列表下面的构造函数可以用来生成File 对象: File(String directoryPath) File(String directoryPath, Stri

45、ng filename) File(File dirObj, String filename)这里,directoryPath是文件的路径名,filename 是文件名,dirObj 一个指定目录的File 对象。下面的例子创建了三个文件:f1,f2,和f3。第一个File对象是由仅有一个目录路径参数的构造函数生成的。第二个对象有两个参数路径和文件名。第三个File对象的参数包括指向f1文件的路径及文件名。f3和f2指向相同的文件。 File f1 = new File(/); File f2 = new File(/,autoexec.bat); File f3 = new File(f1,

46、autoexec.bat); Java 能正确处理UNIX和Windows/DOS约定路径分隔符。如果在Windows版本的Java下用斜线(/),路径处理依然正确。记住,如果你用Windows/DOS使用反斜线(/)的约定,你需要在字符串内使用它的转义序列(/)。Java约定是用UNIX和URL风格的斜线来作路径分隔符。 File 定义了很多获取File对象标准属性的方法。例如getName( )返回文件名,getParent( )返回父目录名,exists( )在文件存在的情况下返回true,反之返回false。然而File类是不对称的。说它不对称,意思是虽然存在允许验证一个简单文件对象属

47、性的很多方法,但是没有相应的函数来改变这些属性。下面的例子说明了几个File方法:import java.io.File;class FileDemo static void p(String s) System.out.println(s); public static void main(String args) File f1 = new File(/java/COPYRIGHT); p(File Name: + f1.getName(); p(Path: + f1.getPath(); p(Abs Path: + f1.getAbsolutePath(); p(Parent: + f1

48、.getParent(); p(f1.exists() ? exists : does not exist); p(f1.canWrite() ? is writeable : is not writeable); p(f1.canRead() ? is readable : is not readable); p(is + (f1.isDirectory() ? : not + a directory); p(f1.isFile() ? is normal file : might be a named pipe); p(f1.isAbsolute() ? is absolute : is

49、not absolute); p(File last modified: + f1.lastModified(); p(File size: + f1.length() + Bytes); 运行该程序,你将看到下面的结果:File Name: COPYRIGHTPath: /java/COPYRIGHTAbs Path: /java/COPYRIGHTParent: /javaexistsis writeableis readableis not a directoryis normal fileis absoluteFile last modified: 812465204000File s

50、ize: 695 Bytes大多数File方法是自说明的,但isFile( )和isAbsolute( )不是。isFile( )在被文件调用时返回true,在被目录调用时返回false。并且,isFile( )被一些专用文件调用时返回false,例如设备驱动程序和命名管道,所以该方法可用来判定文件是否作为文件执行。isAbsolute( )方法在文件拥有绝对路径时返回true,若是相对路径则返回false。File 还包括两个有用的实用工具方法。第一个是renameTo( ),显示如下:boolean renameTo(File newName)这里,由newName指定的文件名变成了所调用

51、的File 对象的新的名称。如果更名成功则返回ture,文件不能被重命名(例如,你试图重命名文件以使它从一个目录转到另一个目录,或者你使用了一个已经存在的文件名),则返回false。第二个实用工具方法是delete( )该方法删除由被调用的File对象的路径指定的磁盘文件。它的形式如下:boolean delete( )同样可以在目录为空时用delete( )删除目录。如果删除了文件,delete( )返回true,如果文件不能被删除则返回false。 Java还为File类增添了一些新的方法,你会发现在某些场合这些新增方法很有用。一些最有趣的方法显示如下: void deleteOnExit

52、( ) 在java虚拟机终止时删除与调用对象相关的文件 boolean isHidden( ) 如果调用的文件是隐藏的,返回true;否则返回 false。 boolean setLastModified(long millisec) 设置由millisec指定的调用文件的时间标志,Millisec是从1970年1月1号开始的标准时间(UTC)的毫秒数 boolean setReadOnly( ) 设置调用文件为只读并且,因为File类现在支持Comparable 接口,compareTo( )方法也被支持。 32简单概要设计 软件系统和产品设计当中的主体结构和主要矛盾是软件架构,优秀的软件产

53、品肯定是在成熟的软件架构的基础上实现,软件架构的设计对软件系统的实现起到支持和促进作用,主要包括设计软件的组织,选择结构元素及其组成系统所籍接口,规定元素特定于其相互协作的行为,设计结构和行为元素到规模更大的子系统的组成,指导系统结构的架构风格等方面。 基于Android的文件管理软件架构的选择和设计要充分考虑Android系统的分层架构(分为四层,应用程序层,程序框架层,Android系统库层和核心层),基于MVC的基础的同时考虑与Android架构相结合,以此来指导文件管理软件的设计。 根据上一章节的功能性和非功能性需求分析可知,系统需要将文件的类型,数量等信息汇总到前端界面显示的同时,还

54、需要对手机存储空间中的文件进行遍历更新。系统设计成两大核心模块:文件分类模块和文件管理模块。软件架构针对用户的具体需求和系统面向的文件管理,采用面向对象的编程思想,使用基于JAVA的MVC多层次架构设计,加以调用Android系统库和控件,来完成系统主要功能。系统的层次的特点是以手机存储空间内的文件集合为核心,根据文件类型,将不同的功能划分为各个模块。文件分类模块采用设计的前端界面进行区分式显示,体现不同的业务模型。文件管理模块调用控件和服务,对文件进行相应的操作。33系统功能的设计规划低耦合、增强组件的重用性是Android开发比较推崇的,Android的基本编程思想、Android开发的四

55、大组件实际上就是为了实现MVC8架构模式的。M代表模型(Model)是应用程序的主体部分,表示要处理的数据 。V代表视图(View)是应用程序中界面相关的部分,是用户看到并与之交互的界面。 C代表控制器(Controller)就是根据用户的操作,控制View层数据显示和更新Model层对象状态。MVC模式在Android开发中的对应情况如下:Model层是数据层,数据通过文件系统保存在硬件设备上,Linux内核通过相应的驱动会把这些数据映射到一个目录下面,这样我们就可以像浏览文件一样来访问这些存放数据的物理地址。当然,业务控制层的模块就能够访问这些数据了。总的来说就是对底层网络数据和文件信息进

56、行访问,数据层和视图层是相互独立的。View层是应用开发的界面部分,在Android开发中是用.xml文件来实现的,开发的过程中如果想要修改界面的显示效果,可以随意的修改,不会影响到其它层,使用的时候引入也很方便。Controller层的操作是基于具体问题的,处理的东西是数据层的业务逻辑,相当于对数据层的方法做一些调用处理。Android开发中控制层的操作相对来说比较简单,一个Activity有时候包括多个View层的界面,用一些布局方法就能把View层视图的id传递到Activity,进一步来决定用什么视图显示Model层的数据信息。由于大部分应用不一定只有一个Activity,大多数的应用

57、是由多个Activity之间相互跳转来实现的,所以Controller层要处理这些Activity之间的关系。如果过多的代码写到活动层,处理起来比较耗时,有可能会超过Android的活动的响应时间而造成程序被回收的尴尬局面。本课题所研究的基于Android文件管理应用也是根据MVC模式设计的,下面就本课题对每一层的设计进行描述:文件管理应用设计由不同的视图构成,其中有文件浏览的基本界面、文件操作的界面还有菜单界面。文件浏览的基本界面本来可以用ListView9实现,但是我们并没有使用它,我们使用的是ListActivity10,ListActivity显示一个绑定到数组或游标这些数据源的一个列

58、表,并且列表的每一项提供一个点击事件的管理方法,当用户点击其中的列表项的时候就能进行相应的处理,LisActivity的默认布局由一个位于屏幕中心的全屏列表构成。但是,如果你不想使用默认的布局,也可以定义自己的布局。因为ListActivity本身就容纳了ListView对象,这个对象能够被绑定到不同的数据源,这样实现起来就更加简单了。每一个ListView都和一个Adapter绑定在一起,Adapter会把数据源对应到ListView上进行显示。这里我们通过继承BaseAdapter并重写其中的方法来完成ListView自己的适配器,这样就可以把文件对应的图标和文件名字显示到Listview

59、上。对于数据层来说设计所需要的大部分数据资源都放在res目录中,其中包括各种图片资源、颜色资源、字符串资源等,Android会自动的将这些资源封装到一个名字为R的类中以供其它类来调用,如下页图3-3所示。 图3-3 项目中R类中用到的资源这样一来控制层的任务就由src下面的Activity类或其子类结合Android配置文件AndroidManifest.xml来完成。这层设计中需要用到AlertDialog,长按ListView中的每一项时会弹出一系列的操作选项,点击menu按键也会弹出一个操作的菜单,此外还应该有一些操作提示的弹出对话框。34整体设计的流程系统的整体流程如图3-4所示: 图

60、3-4 应用整体的设计流程4.文件管理系统详细功能的实现 如第三章总体设计中所述,文件管理器基本功能部分主要位于Android系统应用层,直接与用户进行交互,完成文件浏览、文件操作管理等功能。本章将结合Android应用开发相关技术,分别介绍文件管理器中文件浏览、文件操作功能的实现及应用中相关数据的存储。41 整个项目中主要包、类的功能的实现 作为应用的主界面,文件系统的浏览、文件操作的执行以及其它一些相关操作都在MainActivity活动中进行,同时该活动也是启动应用后的第一个活动。可以在应用的配置文件Androidmanifest.xml中设置。这样在系统初始化时,文件管理器中MainA

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论