基于android的文件浏览器开发与实现

更新时间:2024-07-10 17:15:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

基于Android的文件浏览器的开发与实现

基于Android的文件浏览器的开发与实现

摘 要

飞速网络时代已经来到了我们的生活,随国家的通信政策和各大运营商的宣传的,3G手机网络已经随处可见,全球信息、技术空前高速发展,信息高速化发展也是社会进步的一个标志。手机已经成了人们日常生活中必不可少的部分,尤其是在电子产飞速发展的今天,我们在平时随处可见的电子产品里,手机就是一个最大的用户集,而各大厂商智能手机则是电子市场的一颗耀眼的明星。其中的代表作有Nokia的塞班系统,摩托的Linux系统,但是其中异军突起的是Google的Andriod系统以其开放的源代码,方便简洁的操作是未来智能手机领域的领头羊。这次毕业设计我选择基于Andriod的文件浏览器,近年来Java技术发展十分迅速。在优势方面,Android平台首先就是其开发性,开发的平台允许任何移动终端厂商加入到Android联盟中来。Android 是运行于Linux kernel之上,但并不是GNU/Linux。因为在一般GNU/Linux 里支持的功能,Android 大都没有支持,包括Cairo、X11、Alsa、FFmpeg、GTK、Pango及Glibc等都被移除掉了。Android又以Bionic 取代Glibc、以Skia 取代Cairo、再以opencore取代FFmpeg等等。Android 为了达到商业应用,必须移除被GNU GPL授权证所约束的部份。显著的开放性可以使其拥有更多的开发者,随着应用的日益丰富,一个崭新的平台也很快走向成熟。而基于Andriod的软件开发是前景很大的技术。Android平台手机渗透到我们生活,电子科技技术获得了飞速发展,基于Android平台手机的现代电子产品在我们生活随处可见,有力地推动了社会信息化程度发展,同时使现代电子产品性能进一步提高,产品更新换代的节奏越来越快。本设计以Android平台为核心制作了一个文件浏览器。[1]

关键词:文件浏览器,Android,Java,Google

基于Android的文件浏览器的开发与实现

The Development And Realize of Filebrowser On Android

ABSRRACT

3G era has slowly integrated into our daily lives, as the country's communications policies and major operators of the impact of propaganda, 3G mobile phones have been everywhere, face of the global information technology unprecedented rapid development of high-speed development of information it is a sign of social progress. In today's global information, mobile phones have become an indispensable daily part of life, especially in the rapidly changing electronic products today, we usually ubiquitous in electronic products, mobile phone users is undoubtedly one of the largest sets, the major smartphone manufacturers of electronic markets is still a bright star. Representative has the promise of which Nokia's Symbian system, Motorola's Linux system, but is still one of the sudden emergence of Google's Andriod open source system for its simplicity and ease of operation must be the future leader in the field of smart phones. We chose this graduation Andriod-based file browser will make our work in the future to provide more opportunities. With the continuous development of new technologies and applications of Java technology developed rapidly in recent years, a Java application of new technology-based revolution is booming. Andriod-based software development is a prospect of great technology, through the graduation project, we can design the software to the actual experience of the software development process, improve our professional competence, team after team co-operation We can learn teamwork, and ultimately able to obtain a strong expertise.

KEY WORLD: file browser, Android platform, Java technology

基于Android的文件浏览器的开发与实现

目录

1文件浏览器可行性分析 .................................................... 1 1.1开发前景 .......................................................... 1 1.2市场可行性 ........................................................ 1 1.3技术可行性 ........................................................ 2

1.3.1Android技术: ............................................... 3 1.3.2Java技术简介 ................................................ 5

2文件浏览器开发条件分析 .................................................. 6 2.1目的 .............................................................. 6 2.2项目意义 .......................................................... 6 2.3应用环境 .......................................................... 8 2.4开发环境 .......................................................... 9 2.5系统组件的搭建 ................................................... 10 3文件浏览器的总体设计 ................................................... 11 3.1总体设计概述 ..................................................... 11

3.1.2项目模块分配 ............................................... 12 3.2基本功能要求 ..................................................... 16 3.3项目部分代码分析 ................................................. 17 4项目测试 ............................................................... 18

4.1.1软件的总示图 ............................................... 19

4.1.2基本操作 ................................................... 20 4.1.3对文件的调用 ............................................... 21

总结 .................................................................... 22 参考文献 ................................................................ 24 附录 .................................................................... 25

基于Android的文件浏览器的开发与实现

1 Android文件浏览器可行性分析

1.1市场发展

Android是一种基于Linux的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由Google公司和开放手机联盟领导及开发。尚未有统一中文名称,中国大陆地区较多人使用“安卓”或“安致”。Android操作系统最初由Andy Rubin开发,主要支持手机。2005年8月由Google收购注资。2007年11月,Google与84家硬件制造商、软件开发商及电信营运商组建开放手机联盟共同研发改良Android系统。随后Google以Apache开源许可证的授权方式,发布了Android的源代码。第一部Android智能手机发布于2008年10月。Android逐渐扩展到平板电脑及其他领域上,如电视、数码相机、游戏机等。2011年第一季度,Android在全球的市场份额首次超过塞班系统,跃居全球第一。 2013年的第四季度,Android平台手机的全球市场份额已经达到78.1%。[1]2013年09月24日谷歌开发的操作系统Android在迎来了5岁生日,全世界采用这款系统的设备数量已经达到10亿台。2014年2月,中国Android智能手机市场在售机型数量超过千款,较上月增长近百款。从品牌格局来看,本月最受关注的前十五家Android智能手机品牌中,六家排名波动,且集中在前十。而从产品格局来看,国产机型的数量基本稳定在半数左右,本月七款产品榜上有名。整体来看,Android手机市场的竞争持续加剧。安卓以互联网为发展中心, 开发出了大量网络应用, 吸引了众多用户的关注。 不过, 安卓也存在着一些缺陷, 如应用程序在各机型上的运行状况不统一, 对手机硬件要求较高, 系统存在一些安全漏洞可能被恶意利用等。 但是这些并不妨碍安卓的稳步发展, 目前, 安卓已涉足数字视频、 监测仪器等其他领域, 有着相当广阔的发展前景。[2]

1.2软件开发前景

Android是谷歌(Google)公司与多家公司携手成立的“开放手持设备联盟” 共同开发的。 在2010年苹果推出IPhone四个月后, 安卓面世,此时正好是第一代智能手机操作系统塞班的疲软时期, 而由于IPhone面向高端用户, 安卓利用其不错的性价比

第 1 页 共 56 页

基于Android的文件浏览器的开发与实现

在中端市场成功占得了一席之地。 可以说, 安卓在智能手机更新换代之时恰到好处地出现了。 根据2011年8月2日Canalys的数据, 谷歌Android操作系统已经占据了全球智能手机市场近50%的份额, 而且在亚太市场拥有绝对的统治性优势。 系统以Linux为内核。 [3]

Linux是一种自由和开放源码的类Unix操作系统, 免费提供其源代码供用户修改, 吸引了众多程序设计者,这让其能够不断迅速更新, 发展壮大; 它采取了审计跟踪、 核心授权等技术等安全技术措施, 很大程度上保障了手机的安全性。 因此, 采用Linux作为底层操作系统的安卓, 能够被很容易移植到各个平台, 为其快速发展奠定了基础。

随着移动互联网的到来和迅猛发展,移动互联网开发人员的需求也是与日俱增。比如说android市场,国外Android市场正在如日中天的扩展,据市场研究公司IDC发布研究报告称,预计中国智能手机市场在全球市场上所占份额将会从18.3%上升至26.5%,而美国市场所占份额则将从21.3%下降至17.8%。相信在不久的将来会有更多的用户选择Android系统的手机或是无线终端设备。[4]

目前中国拥有世界上最大的手机用户群,再加上3G的推出对整个行业的巨大推动作用,全世界所有大中小型手机制造商几乎都在招聘Android工程师。然而每天有超过16万台的Android设备出货,一年后全球可能会有超过1亿台的Android设备,以后将超越iphone成为智能手机平台的旗舰

1.3开发技术支持

1.3.1 Android技术: (1)Android简介

Android是一种基于Linux的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由Google公司和开放手机联盟领导及开发。尚未有统一中文名称,中国大陆地区较多人使用“安卓”或“安致”。Android操作系统最初由Andy Rubin开发,主要支持手机。2005年8月由Google收购注资。2007年11月,Google与84家硬件制造商、软件开发商及电信营运商组建开放手机联盟共同研发改良Android系统。随后Google以Apache开源许可证的授权方式,发布了Android的源代码。第一部Android

第 2 页 共 56 页

基于Android的文件浏览器的开发与实现

智能手机发布于2008年10月。Android逐渐扩展到平板电脑及其他领域上,如电视、数码相机、游戏机等。2011年第一季度,Android在全球的市场份额首次超过塞班系统,跃居全球第一。 2013年的第四季度,Android平台手机的全球市场份额已经达到78.1%。[1]2013年09月24日谷歌开发的操作系统Android在迎来了5岁生日,全世界采用这款系统的设备数量已经达到10亿台。[5]

2014第一季度Android平台已占所有移动广告流量来源的42.8%,首度超越iOS。但运营收入不及iOS。在优势方面,Android平台首先就是其开发性,开发的平台允许任何移动终端厂商加入到Android联盟中来。显著的开放性可以使其拥有更多的开发者,随着用户和应用的日益丰富,一个崭新的平台也将很快走向成熟。

开发性对于Android的发展而言,有利于积累人气,这里的人气包括消费者和厂商,而对于消费者来讲,最大的受益正是丰富的软件资源。开放的平台也会带来更大竞争,如此一来,消费者将可以用更低的价位购得心仪的手机。

1.3.2 Java技术简介

Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由Sun Microsystems公司于1995年5月推出的Java程序设计语言和Java平台(即JavaEE, JavaME, JavaSE)的总称。Java自面世后就非常流行,发展迅速,对C++语言形成了有力冲击。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。与传统程序不同,Sun 公司在推出 Java 之际就将其作为一种开放的技术。全球数以万计的 Java 开发公司被要求所设计的 Java软件必须相互兼容。“Java 语言靠群体的力量而非公司的力量”是Sun公司的口号之一,并获得了广大软件开发商的认同。这与微软公司所倡导的注重精英和封闭式的模式完全不同。[6]

Sun 公司对 Java 编程语言的解释是:Java 编程语言是个简单、面向对象、分布式、解释性、健壮、安全与系统无关、可移植、高性能、多线程和动态的语言。

Java 平台是基于 Java 语言的平台。这样的平台非常流行。因此微软公司推出了与

第 3 页 共 56 页

基于Android的文件浏览器的开发与实现

之竞争的.NET平台以及模仿Java的C#语言。

Java是功能完善的通用程序设计语言,可以用来开发可靠的、要求严格的应用程序。 Java编程语言的风格十分接近C语言、C++语言。Java是一个纯粹的面向对象的程序设计语言,它继承了 C++语言面向对象技术的核心。Java舍弃了C语言中容易引起错误的指针(以引用取代)、运算符重载(operator overloading)、多重继承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间,使得程序员不用再为内存管理而担忧。在 Java 1.5 版本中,Java 又引入了泛型编程(Generic Programming)、类型安全的枚举、不定长参数和自动装/拆箱等语言特性。[7]

Java不同于一般的编译执行计算机语言和解释执行计算机语言。它首先将源代码编译成二进制字节码(bytecode),然后依赖各种不同平台上的虚拟机来解释执行字节码。从而实现了“一次编译、到处执行”的跨平台特性。不过,每次的执行编译后的字节码需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的性能。

Java由四方面组成: Java编程语言 Java文件格式 Java虚拟机(JVM)

Java应用程序接口(Java API)

第 4 页 共 56 页

基于Android的文件浏览器的开发与实现

对第一章的Android文件浏览器可行性方案分析总结如图1.1

图1.1技术可行性分析图

从以上几点可行性分析来看,目前十分有必要开发基于Android的文件浏览器来迎合市场的需求,这样既方便了用户又给自己了一个开拓的机会。[8]

第 5 页 共 56 页

基于Android的文件浏览器的开发与实现

2 Android文件浏览器开发条件分析

2.1设计目的

现在Android手机的机身内存(ROM)随着机身硬件的升级换代而变得越来越大,手机所能存放的文件也越来越多,用户在对手机文件统一管理时,就意味着需要花费更多的时间。特别是原生Android系统通常都不会集成独立、专门性的文件管理器应用。因此对于安卓手机新手用户来说,安装一个第三方文件管理器是非常重要的。只要您在安卓市场中搜索一下“文件”关键词,就能找到大量相关应用,这说明在安卓APP应用中,对文件进行管理的系列软件很多。如何来选择一款实用好用的文件管理器软件,相信是大家非常关注的问题。

2.2项目的意义

普通文件的管理方面,包括常见复制、粘贴、剪切、删除、转移、重命名、查看等编辑功能等的。这些操作也是我们在原生的Android系统中所无法全部实现的,而通过安卓文件管理器应用,我们就很容易达到目的。文件管理器是管理文件的软件,帮助用户处理日常工作,管理储存在本地和网络中的文件。所有文件管理器都提供了基本的操作如创建、打开、查看、编辑、移动和删除文件。许多Android文件管理器还提供了额外功能,如网络连接、应用程序管理、存档和压缩处理、搜索等。

2.3运行环境

Android2.0系统版本以上 推荐配置: CPU:双核1G

GPU:SGX540/Mail400/Adreno220 内存:512内存及以上 屏幕分辨率:800*480以上

2.4软件开发的环境

第 6 页 共 56 页

基于Android的文件浏览器的开发与实现

Eclipse 是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括Java开发工具(Java Development Kit,JDK)。虽然大多数用户很乐于将 Eclipse 当作 Java 集成开发环境(IDE)来使用,但 Eclipse 的目标却不仅限于此。Eclipse 还包括插件开发环境(Plug-in Development Environment,PDE),这个组件主要针对希望扩展 Eclipse 的软件开发人员,因为它允许他们构建与 Eclipse 环境无缝集成的工具。由于 Eclipse 中的每样东西都是插件,对于给 Eclipse 提供插件,以及给用户提供一致和统一的集成开发环境而言,所有工具开发人员都具有同等的发挥场所。[9]

这种平等和一致性并不仅限于 Java 开发工具。尽管 Eclipse 是使用Java语言开发的,但它的用途并不限于 Java 语言;例如,支持诸如C/C++、COBOL、PHP等编程语言的插件已经可用,或预计将会推出。Eclipse 框架还可用来作为与软件开发无关的其他应用程序类型的基础,比如内容管理系统。

基于 Eclipse 的应用程序的一个突出例子是 IBM Rational Software Architect,它构成了 IBM Java 开发工具系列的基础。

Eclipse的插件机制是轻型软件组件化架构。在客户机平台上,Eclipse使用插件来提供所有的附加功能,例如支持Java以外的其他语 言。 已有的分离的插件已经能够支持C/C++(CDT)、Perl、Ruby,Python、telnet和数据库开发。插件架构能够支持将任意的扩展加入到 现有环境中,例如配置管理,而决不仅仅限于支持各种编程语言。

Eclipse的设计思想是:一切皆插件。Eclipse核心很小,其它所有功能都以插件的形式附加于Eclipse核心之上。Eclipse基本内核包括:图形API (SWT/Jface), Java开发环境插件(JDT ),插件开发环境(PDE)等。[10]

2.5系统组件的搭建

2.5.1安装前准备

(1)安装jdk 6u19安装完成即可,无需配置环境变量 (2)解压eclipse eclipse无需安装,解压后,直接打开就行 (3)解压android sdk 这个也无需安装,解压后供后面使用 (4)最终有三个文件夹,如下图2.1

第 7 页 共 56 页

基于Android的文件浏览器的开发与实现

图2.1 eclipse安装包

2.5.2安装android 开发插件

(1)打开Eclipse, 在菜单栏上选择

help->Install New SoftWare,点击 Add按钮,选择 I accept the terms of the license agreements点击Next,进入安装插件界面如图2.2

图2.2eclipse安装界面

第 8 页 共 56 页

基于Android的文件浏览器的开发与实现

安装完了以后点击Yes按钮,重启Eclipse。

2.5.3配置Android SDK

(1)点击菜单window->preferences.选择你的android SDK解压后的目录,

(2)新建AVD(android vitural device),进入android sdk and avd manager,选中Vitural Devices 在点击New按钮。名称可以随便取,target选择你需要的SDK版本,SD卡大小自定义,点击 Create AVD,创建完毕。[11]

2.5.4新建Android 项目

(1)选择菜单file->new->other,选择新建Android Project项目,点击Next按钮,名称自定义,应用程序名自定义,报名必须包含一个点以上,min SDK version里面必须输入整数。

(2)点击Next,注: 若有错误如: Project ... is missing required source folder: 'gen' ,则将gen->Android.Test->R.java这个文件删掉,Eclipse会为我们重新生成这个文件,并且不会报错。

(3)配置运行,右键项目->Run as -> Run Configuration点击Browse 按钮,选择你要运行的项目该界面选择运行的AVD,将AVD前面的方框设置为选择状态。

(4)测试项目运行,右键项目名称->run as ->Android Application 即可启动运行该

Android程序,如图2.3:

第 9 页 共 56 页

基于Android的文件浏览器的开发与实现

图2.3模拟器运行界面

JAVA SDK一定要安装!否则eclipse会出问题。Android SDK两种下载版本,一种是包含具体版本的SDK的,一种是只有升级工具,而不包含具体的SDK版本,后一种大概20多M,前一种70多M。但是用升级版不会出任何问题,还很好用,因此本例中使用的就是升级版。到此在Eclipse下搭建的安卓开发环境已经完成。

第 10 页 共 56 页

基于Android的文件浏览器的开发与实现

3 Android文件浏览器总体设计

3.1文件浏览器总体设计概述

3.1.1项目目的

这个项目的目的在于给用户提供一个快捷,方便的文件管理器,使用户方便一些查看,实现文件的重命名、剪切、删除、属性、新建、复制,不同文件调用不同其他软件等简单的功能。针对音乐和图象添加使用功能。

此项目能为普通用户提供一个最基本的文件浏览功能。实现相关文件的调用。例如文件相关路径的设置,文件路径的更改,同时可以最大限度的实现Android文件浏览器最基本的功能。对整个文件浏览器的性能在目前配置下的最大程度的升华。相关程序调用:例如用户选择图片文件,相关扩展名为.jpg或.jpeg或.bmp或.png或.jif进而调用图片产看器来对图片进行查看,如果用户选择的是以.mp3或.wmv或.mid为扩展名的音乐文件则调用音乐播放器来对文件打开,对文件的扩展名来进行智能匹配,这样就使的文件浏览器的各项扩张性能有最大限度的提升,能使手机扩展更多的文件、应用,我们还在定期的对文件浏览器进行版本的更新升级,及时的设置新的文件匹配扩展,这样如果有新的应用或者格式的文件,我们就能在很短时间内与其兼容,可以说我们的文件浏览器是一个永不过期的文件浏览器应用。小型局域网的组建:如果用户选择的是文件远程共享模式,则调用文件浏览器来与远端的计算机来进行文件传输,利用wap(无线网络访问协议)协议进行小型局域网的组建,进行文件共享、文件传输,可以极大的扩展手机的可玩性、共享性。。文件传输模式是指当用户设置文件传输模式的时候,启动本地蓝牙模块,用蓝牙与其他终端进行ftp通信,用ftp(文件传输协议)来对文件进行收发、手机与计算机只讲进行通信、进行手机与手机终端的通信、建立连接可以进行文件的传输、建立游戏互联,可以极大的扩展手机的可玩性、共享性。[14] 3.1.2基本功能要求

第 11 页 共 56 页

基于Android的文件浏览器的开发与实现

1.系统文件与用户应用文件及应用程序切换。采用树结构,列表,缩略图显示,排序(日期、大小、格式、名称)、文件拖拽。

2.搜索功能(调用输入法)。

3.基本控制操作:返回上一级,前进,撤消。

4.不同文件调用不同其他软件。针对音乐、图象填加使用功能。图象:设壁纸、屏幕保护、联系人头像、填加新联系人,设分组头像、编辑图象;音乐:设铃声、信息提示、闹钟、日历提醒、聊天室。

5.如有可能填加蓝牙(手机访问手机、电脑访问手记),上传网络,添加到邮件功能。

3.2功能模块设计概述

基本功能模块的实现是要实现基于android的文件浏览器的一些基本功能,像文件浏览器的文件列表的创建,实现文件浏览功能,文件打开功能,文件属性修改,文件夹加密,文件夹解密,文件隐藏,文件显示,文件浏览器的菜单自动显示,新建文件夹,删除文件夹,修改文件夹的属性,隐藏文件夹,显示隐藏文件夹,新建文件,删除文件,以及主界面的设计与开发实现。

文件浏览器的主界面由最上方的文件管理位置、中上方的导航标签栏和下方的显示栏内容构成。用户通过本地位置,可以管理当前手机和SD卡上的文件;通过共享位置,管理在局域网内的其他终端上的文件;通过远程位置,访问FTP服务器上的内容。

搜索功能:用户可以通过此功能选择搜索类型或者输入关键词的方式,搜索SD卡上的内容;而最后一个标签是视图切换功能,用户可以在图标横排和列表状态下选择。

用户可以通过长按文件/文件夹的方式,选择一系列操作方式。如常见的打开、剪切、复制、删除、重命名、全选、压缩、发送、属性等。

在这里提到的发送,和通常大家在手机上显示的发送功能不同,因为其不是通过彩信、蓝牙、红外线等,而是以Gmail和邮件的方式发送该文件;此外,其提供zip和gz两种压缩格式,通过压缩文件的格式,为用户留出更多的可用空间。[15]

与其他手机软件类似,文件浏览器的设置功能还是丰富多彩的。从主题内容到布局设置,从视图变更到偏好设置,处处体现了文件浏览器提供给用户个性化的服务。比如我们为了随时了解SD卡的存储情况,打开了SD卡容量在地址栏上的显示。

第 12 页 共 56 页

基于Android的文件浏览器的开发与实现

用户在文件浏览器的设置功能中,还可以看到其实验产品——蓝牙选项。Android Rom在3.0以下的版本,需要首先拥有最基层的root权限才可以使用。用户在开启该功能并打开蓝牙后,就可以其他蓝牙终端,访问该终端中的资料。

文件浏览器还提供了本地和远程网络共享的功能。用户可以通过本地共享、FTP远程和蓝牙等三种模式,用户可以在手机远程在移动和桌面终端之间分享文件,传输、操作;软件能独立打开媒体文件,浏览图片,编辑文本,甚至可以远程播放媒体文件。我这边对功能模块进行了一下归纳总结的除了一个比较鲜明的基本模块如图3.1

图3.1 本地模块例图

在文件浏览器的本地基本功能中我们实现了文件的基本浏览功能,其中包括文件的拷贝、文件隐藏、文件删除、文件发送、文件更名、文件粘贴、文件编辑、文件发送、文件接收功能,实现了相关文件的调用、给相关软件的调用预留了借口,同时实现了文件浏览器的一些自身的扩展。当我们启动文件浏览器的时候,系统会自动的进入默认的目录。来显示这个根目录下的所有文件及文件夹、同时按照不同的文件类型文件扩展名

第 13 页 共 56 页

基于Android的文件浏览器的开发与实现

来自动识别文件,给文件分配不同的图标,这样的话用户只要看到我们显示给用户的很容易识别的小图标,就会很快的知道目前目录下有那些类型的问价,那些是可以使用的,那些是音乐文件,那些是图片文件,这样对用户来说就很容易的对问价进行分类,也有利于用户寻找目标文件、选择文件。有了分类显示文件,只要用户在实际应用过程中有了一定程度的使用经验,对文件浏览器的实用会更加得心应手。[17]

在以上对文件浏览器的本地基本操作模块的描述之后,能使用户在理解文件浏览器浏览器的使用过程上有进一步提升,对本软甲有进一步的了解,能在以后的实际应用中更快的上手,对文件浏览器的最基本最重要的一个模块之一会有一个更加深刻的理解。

3.3项目部分代码以及注释

本章主要介绍本项目的一些代码及注释,最后会展示一部分功能, 3.3.1文件目录显示代码及注释

/**

*创建文件列表类

*该类继承于ListActivity使之有文件列表功能 */

public class FileList extends ListActivity { /**

*创建文件列表

*列表功能,文件列表功能可以将文件存入列表中 *列表是私有属性,只能自己调用 */

private List items = null; /**

*当Android活动第一次启动的时候调用OnCreate()函数 *OnCreat()函数是继承于父类ListActivity */

@Override

public void onCreate(Bundle icicle) {

第 14 页 共 56 页

基于Android的文件浏览器的开发与实现

super.onCreate(icicle); /**

*设置视图的布局格式为线性布局 *创建文件的根目录 *将根目录加入文件列表中 */

setContentView(R.layout.directory_list); fill(new File(\} /**

*设置点击方法

*方法onListItemClick监听文件列表的点击事件 *该方法onListItemClick使受保护的方法 */

@Override

protected void onListItemClick(ListView l, View v, int position, long id) { /**

*获取到点击行的ID,返回类型为整形 *判断获得的ID是不是为0

*如果获得ID为0则说明选择的是根目录进而显示根目录 *如果ID不为0则没有选择根目录 *传如选择文件列表的ID号 *再次判断ID是不是在文件目录中 *如果文件ID在目录中则调用显示目录方法 *如果不在文件目录里则弹出提示框 *提示语为That's a file, not a directory *用户选择按钮返回false值 */

int selectionRowID = (int) getSelectionRowID(); if (selectionRowID == 0) {

第 15 页 共 56 页

基于Android的文件浏览器的开发与实现

}

}

fillWithRoot();

File file = new File(items.get(selectionRowID)); if (file.isDirectory())

fill(file.listFiles());

AlertDialog.show(this, \

\

else

} else {

这段程序主要实现了文件浏览器的文件列表显示功能,我们新建了一个类,类名字叫FileList这个类继承与ListActivity这样的话,这个类就有了类似于Java中的List类所实现的功能,能够显示列表,而ListActivity类有继承于Activity类,这个类是android系统的最基本的类之一,有这个类的话,ListActivity就是一个activity,就可以用来显示。而FileList就是一个activity,可以用来显示,而且他还有一些Java中的List类的相似的功能。

进而设置文件浏览器的布局方式为现行布局,调用文件浏览器源代码的布局文件,在布局文件中设置文件浏览器的布局方式。

接下来就是FileList这个类重写了父类里面的一个方法OnCreat方法,这个方法用于生成程序的界面,当工程的源代码运行的时候,启动虚拟设备,这时就是android的一个activity,所以系统就会找到源代码的的OnCreat方法,生成一个可视的界面。

因为生成的文件目录是用List方式来显示的,这样的话,每个历List就有自己独一无二的Id,当我们点击相应的List列的时候,就会有一个单击监听器对用户的活动进行监听,在监听器中对点击的Id进行判断,如果判断Id是0的话则意味着用户选择的是根目录,如果选的不是根目录就打开相应的文件或者目录。 3.3.2返回上一级目录代码及注释

//返回上一级目录

private void upOneLevel() {

if(this.currentDirectory.getParent() != null)

this.browseTo(this.currentDirectory.getParentFile());

第 16 页 共 56 页

基于Android的文件浏览器的开发与实现

}

这段代码主要实现了文件浏览器的返回上一层目录的功能,因为在日常的操作中,用户在很多时间里都有这样的需求,那就是在文件浏览完成之后,马上就要返回上一次操作的目录,那么就要是有返回上一层目录这个功能了,设置这样的一个快捷操作能大大的节省用户的一些操作时间。

3.3.3代开指定文件及以扩展名打开部分代码及注释

//打开指定文件

protected void openFile(File aFile) {

Intent intent = new Intent();

intent.setAction(android.content.Intent.ACTION_VIEW); File file = new File(aFile.getAbsolutePath()); // 取得文件名

String fileName = file.getName();}

3.3.4按照不同扩展名打开部分代码及注释

// 根据不同的文件类型来打开文件

if(checkEndsWithInStringArray { } Else if

intent.setDataAndType(Uri.fromFile(file), \

(fileName,getResources().getStringArray(R.array.fileEndingImage)))

(checkEndsWithInStringArray(fileName,

getResources().getStringArray(R.array.fileEndingAudio)))

{ } else if

intent.setDataAndType(Uri.fromFile(file), \

(checkEndsWithInStringArray(fileName,

getResources().getStringArray(R.array.fileEndingVideo)))

{

第 17 页 共 56 页

基于Android的文件浏览器的开发与实现

}

}

intent.setDataAndType(Uri.fromFile(file), \

startActivity(intent);

该段代码主要实现了文件浏览器针对不同扩展名的文件调用不同的打开方式来执行文件,文件的不同扩展名是已经放置在我们的文件浏览器的配置文件中,其已经设置了一些文件扩展名格式、例如我们的音乐文件是mp3格式,这样的话,当文件浏览器打开了不同类型的文件,这时候文件浏览器就可以调用相应的程序来运行这些扩展名的文件。这样文件浏览器的可扩展性能就会大大的提高了,同时我们还为一些其他扩展名的文件预留号了相应的应用接口,这样当用户扩展了相应的文件格式,我们就可以通过接口来实现文件的一些扩展。大大的方便了用户。 3.3.5创建文件浏览器菜单部分代码及注释

public boolean onCreateOptionsMenu(Menu menu)

{ }

//新建文件夹

public boolean newFolder(String file) {

try

{ if (!(dirFile.exists()) && !(dirFile.isDirectory()))

{

boolean creadok = dirFile.mkdirs(); if (creadok)

第 18 页 共 56 页

super.onCreateOptionsMenu(menu);

menu.add(0, 0, 0, \新建目录\menu.add(0, 1, 0, \删除目录\menu.add(0, 2, 0, \粘贴文件\menu.add(0, 3, 0, \根目录\menu.add(0, 4, 0, \上一级\return true;

FiledirFile = new File(this.currentDirectory.getAbsolutePath()+\

基于Android的文件浏览器的开发与实现

{this.browseTo(this.currentDirectory);

return true; } else{ return false; }}}

catch (Exception e) { e.printStackTrace();

System.out.println(e); return false}

return true;}

该段代码主要完成了对自动菜单的操作,在自动菜单中可以进行文件的新建,复制、删除、粘贴、返回文件浏览器的根目录、判断如果是文件浏览器的子目录的话就会有一个新的列表用来显示文件的上一层目录并获得文件浏览器预设的一些小图标。美化界面,实现这些功能的主要是使用了文件浏览器所继承的一些Java包下的类、主要的类有File类,以及android的Listactivity类,创建文件夹的操作、使用File类中的一些方法对文件进行操作、使用listactivity类对文件显示列表进行设置。

第 19 页 共 56 页

基于Android的文件浏览器的开发与实现

4 项目测试

4.1项目测试部分

4.1.1软件的总体视图

我自己设计的Android文件浏览器结构非常简单,容易操作。菜单是以列表的形式呈现如图4.1的初始界面:

图4.1初始界面

这次设计的文件浏览器能够基本实现一些基本的操作和功能。初始界面不算是豪华,但特别的使用,查找文件相当的方便和快捷,这个文件浏览器不但可以浏览手机本地的文件数据还能对用户自己装的内存卡进行查看和操作。

4.1.2文件的几种基本操作图示

如图4.2是对文件的操作简单的展示一下:

第 20 页 共 56 页

基于Android的文件浏览器的开发与实现

图4.2 文件的基本操作

文件浏览器的几种基本操作用来给用用户显示用户所需要的几种基本操作,例如文件浏览器对文件的选择、应用程序的打开、系统文件的复制、删除和重命名系统设定的备份、在其他地方创建快捷方式来方便操作、以及对文件或者目录的属性进行设置、例如我们可以设置文件夹的各种属性、这样就大大的方便了用户对自己文件的操作,例如用户将文件属性设置问隐藏、就有利于用户数据的安全。使得本地数据能够更安全的放置在手机上,真真正正的方便用户,在方便用户的同时,我们也设置了友好的操作界面,用户可以很方便的管理自己手机中的文件。

4.1.3软件的调用

如图4.3就是对应文件调用软件打开查看:

第 21 页 共 56 页

基于Android的文件浏览器的开发与实现

图4.3 软件调用

这里我是在对图片进行看图软件的调用。根据不同的文件格式都会以与之相对应的方式打开。操作系统的主要功能是为管理硬件资源和为应用程序开发人员提供良好的环境来使应用程序具有更好的兼容性,为了达到这个目的,内核提供一系列具备预定功能的多内核函数,通过一组称为系统调用(system call)的接口呈现给用户。系统调用把应用程序的请求传给内核,调用相应的的内核函数完成所需的处理,将处理结果返回给应用程序。

第 22 页 共 56 页

基于Android的文件浏览器的开发与实现

总结

在本浏览器的开发过程中,由于本人是初次开发软件,在知识、经验方面都存在着不足。另外,在整个开发的过程中,时间也比较仓促。因此,该系统必然会存在一些缺陷和不足。因为对浏览器的整个流程不够熟悉,在需求分析时未能做到完全满足用户的需求。在本次开发过程由于硬件的限制,未能实现网络功能,因此在以后的系统更新过程中可能会造成一些不必要的数据损失。

尽管本浏览器存在着很多不足,但其功能全面、易于日后程序更新、数据库管理容易、界面友好、操作方便、效率高、安全性好等优点是本管理系统所必需的。在这次课程设计中的最大收获并不是掌握这几门开发工具的应用,而是学会了设计系统的思维方法。

在整个设计过程中,我们遇到了很多困难,但是在邓江沙老师的悉心教导和同学共同努力下,我们完成了软件制作和论文纂写,在此期间我深入学习了软件的开发流程、团队项目组建、Android、Java语言程序设计等方面的书籍,所以收获颇大。我始终相信毕业设计是我们大学当中的最后也是最重要的一个环节,通过这些理论知识的学习和实验,不仅锻炼了动手能力,而且加强了合作意识,使我受益匪浅,为我们的四年大学生活画上一个圆满的句号。

在设计和实验过程中,我们提出问题,解决问题和分析问题的能力得到了提升。但是仍然存在一些问题,如有些详细功能没有实现,软件外观布置不协调,键盘使用不方便等。希望在我以后的学习和工作生涯中继续研究,继续完善。

对Android了解不够,不能很大发挥其语言功能,尤其在编写代码的时候不能够熟练使用,而是到处查阅资料,也不能够很准确的区别出相近功能指令的各自功能特点,使得在本系统的实现过程中,放弃了一些很好的设想和功能,也是一种遗憾。

但是总的来说,这次的课程设计对我来说是一次非常难得的锻炼机会。使我对所学的专业课知识得到了融会贯通,得到了比任何一门课都大的提高和进步。

第 23 页 共 56 页

基于Android的文件浏览器的开发与实现

参考文献

[1] E2ECloud工作室.深入浅出Google Android.北京:人民邮电出版社,2009. [2] 靳岩,姚尚朗.Android开发入门与实战.北京:人民邮电出版社,2009. [3] 张利国 龚海平.Andriod移动开发案例详解.北京:人民邮电出版社,2010. [4] 宋光照,傅江如,刘世军等.软件测试最佳实践.北京:电子工业出版社, 2009. [5] 和凌志,郭世平.手机软件平台架构解析[M].北京:电子工业出版社,2009. [6] 余志龙 等.Google Android SDK开发范例大全[D].北京:人民邮电出版社,2010. [7] 李炜.Google Android开发入门指南[M].北京:人民邮电出版社,2009. [8] 高焕堂.UML嵌入式设计.北京:清华大学出版社,2008.

[9] 王向辉,张国印,沈洁.Android应用程序开发.北京:清华大学出版社,2010. [10] 郭宏志.Android应用开发详解.北京:电子工业出版社,2010.

[11] 杨文志.Google Android程序设计指南[M].北京:电子工业出版社,2009. [12] 潘爱民 张丽.C++ Primer.北京:中国电力出版社 ,2007. [13] 孙媛.嵌入式系统基础及应用.北京:机械工业出版社,2009.

[14] J.F Dimarzio. Andriod A porgram’s guide. [M].北京:清华大学出版社,2001. [15] 温敏 艾丽蓉 王志国.Andriod手机系统文件实时监控的研究与实现[D].2009. [16] 高焕堂.Andriod应用框架原理与程式设计.北京:清华大学出版社,2009. [17] 宛延闿等编著.实用Java程序设计教程.北京:机械工业出版社,2006. [18] 陈国君 等.Java2程序设计基础.北京:清华大学出版社,2006. [19] 郑莉.王行言.马素霞.Java语言程序设计.北京:清华大学出版社,2006. [20] 丁振凡.Java语言实用教程.北京:北京邮电大学出版社,2005.

第 24 页 共 56 页

基于Android的文件浏览器的开发与实现

附录

public class FileManager extends ListActivity {

private List directoryEntries = new ArrayList(); private File private File private int

currentDirectory = new File(\myTmpFile myTmpOpt

= null; = -1;

/** Called when the activity is first created. */ @Override

public void onCreate(Bundle icicle) { }

//浏览文件系统的根目录 private void browseToRoot() {

browseTo(new File(\super.onCreate(icicle); browseToRoot(); this.setSelection(0);

}

//返回上一级目录 private void upOneLevel() { }

//浏览指定的目录,如果是文件则进行打开操作 private void browseTo(final File file)

第 25 页 共 56 页

if(this.currentDirectory.getParent() != null)

this.browseTo(this.currentDirectory.getParentFile());

基于Android的文件浏览器的开发与实现

{ }

//打开指定文件

protected void openFile(File aFile) {

Intent intent = new Intent();

intent.setAction(android.content.Intent.ACTION_VIEW); File file = new File(aFile.getAbsolutePath()); // 取得文件名

String fileName = file.getName(); // 根据不同的文件类型来打开文件 if { } else { } else

if

(checkEndsWithInStringArray(fileName,

intent.setDataAndType(Uri.fromFile(file), \

if

(checkEndsWithInStringArray(fileName,

intent.setDataAndType(Uri.fromFile(file), \

(checkEndsWithInStringArray(fileName,

this.setTitle(file.getAbsolutePath()); if (file.isDirectory()) { } else { }

fileOptMenu(file); this.currentDirectory = file; fill(file.listFiles());

getResources().getStringArray(R.array.fileEndingImage)))

getResources().getStringArray(R.array.fileEndingAudio)))

getResources().getStringArray(R.array.fileEndingVideo)))

第 26 页 共 56 页

基于Android的文件浏览器的开发与实现

}

});

}

dialog.cancel();

builder.setCancelable(false); builder.create(); builder.show();

else {

if ( myTmpOpt == 0 )//复制操作 {

if(new File(GetCurDirectory()+\{

Builder builder = new Builder(FileManager.this); builder.setTitle(\粘贴提示\

builder.setMessage(\该目录有相同的文件,是否需要覆盖?\builder.setPositiveButton(android.R.string.ok,

new AlertDialog.OnClickListener() { });

new DialogInterface.OnClickListener() { });

public void onClick(DialogInterface dialog, int which) { }

dialog.cancel();

public void onClick(DialogInterface dialog, int which) { }

copyFile(myTmpFile,new

browseTo(new File(GetCurDirectory()));

File(GetCurDirectory()+\

builder.setNegativeButton(android.R.string.cancel,

builder.setCancelable(false); builder.create(); builder.show();

第 32 页 共 56 页

基于Android的文件浏览器的开发与实现

;

}

} { }

else

copyFile(myTmpFile,new

browseTo(new File(GetCurDirectory()));

File(GetCurDirectory()+\

else if(myTmpOpt == 1)//粘贴操作 {

if(new File(GetCurDirectory()+\{

Builder builder = new Builder(FileManager.this); builder.setTitle(\粘贴提示\

builder.setMessage(\该目录有相同的文件,是否需要覆盖?\builder.setPositiveButton(android.R.string.ok,

new AlertDialog.OnClickListener() {

public void onClick(DialogInterface dialog, int which) {

moveFile(myTmpFile.getAbsolutePath(),GetCurDirectory()+\

});

new DialogInterface.OnClickListener() { });

public void onClick(DialogInterface dialog, int which) { }

dialog.cancel(); }

browseTo(new File(GetCurDirectory()));

builder.setNegativeButton(android.R.string.cancel,

builder.setCancelable(false); builder.create(); builder.show();

第 33 页 共 56 页

基于Android的文件浏览器的开发与实现

;

} {

else

moveFile(myTmpFile.getAbsolutePath(),GetCurDirectory()+\ }

//删除整个文件夹 public void MyDelete() {

//取得当前目录

File tmp=new File(this.currentDirectory.getAbsolutePath()); //跳到上一级目录 this.upOneLevel(); //删除取得的目录 if ( deleteFolder(tmp) ) {

Builder builder = new Builder(FileManager.this); builder.setTitle(\提示\builder.setMessage(\删除成功\

builder.setPositiveButton(android.R.string.ok,

new AlertDialog.OnClickListener() { });

public void onClick(DialogInterface dialog, int which) { }

dialog.cancel();

}

}

}

browseTo(new File(GetCurDirectory()));

builder.setCancelable(false); builder.create(); builder.show();

第 34 页 共 56 页

基于Android的文件浏览器的开发与实现

}

} else { }

this.browseTo(this.currentDirectory);

Builder builder = new Builder(FileManager.this); builder.setTitle(\提示\builder.setMessage(\删除失败\

builder.setPositiveButton(android.R.string.ok,

new AlertDialog.OnClickListener() { });

public void onClick(DialogInterface dialog, int which) { }

dialog.cancel();

builder.setCancelable(false); builder.create(); builder.show();

//新建文件夹 public void Mynew() {

final LayoutInflater factory = LayoutInflater.from(FileManager.this); final View dialogview = factory.inflate(R.layout.dialog, null); //设置TextView

((TextView) dialogview.findViewById(R.id.TextView_PROM)).setText(\请输入新建

文件夹的名称!\

//设置EditText

((EditText) dialogview.findViewById(R.id.EditText_PROM)).setText(\文件夹名

称...\

Builder builder = new Builder(FileManager.this); builder.setTitle(\新建文件夹\

第 35 页 共 56 页

基于Android的文件浏览器的开发与实现

builder.setView(dialogview);

builder.setPositiveButton(android.R.string.ok, new AlertDialog.OnClickListener() { public void onClick(DialogInterface dialog, int which) { String

value

=

((EditText)

dialogview.findViewById(R.id.EditText_PROM)).getText().toString();

which) {

which) {

if ( newFolder(value) ) { Builder builder = new Builder(FileManager.this); builder.setTitle(\提示\

builder.setMessage(\新建文件夹成功\ builder.setPositiveButton(android.R.string.ok, new AlertDialog.OnClickListener() { public void onClick(DialogInterface dialog, int

//点击确定按钮之后,继续执行网页中的操

dialog.cancel();

}

});

builder.setCancelable(false); builder.create(); builder.show();

}

else { Builder builder = new Builder(FileManager.this); builder.setTitle(\提示\

builder.setMessage(\新建文件夹失败\ builder.setPositiveButton(android.R.string.ok, new AlertDialog.OnClickListener() {

public void onClick(DialogInterface dialog, int

第 36 页 共 56 页

本文来源:https://www.bwwdw.com/article/v3t.html

Top