2024年3月14日发(作者:)
课程设计Ⅱ设计报告
题 目:基于android文件管理器的设计与实现
学 号: 20085915
姓 名: 田建平
学 院: 信息科学与技术学院
专业班级:08级软计3班
指导教师: 何滨
设计时间:2011年4月至2011年6月
指导老师评语:
评定成绩: 签名: 日期:
目录
1软件需求........................................................................................................................................ 3
1.1引言 ..................................................................................................................................... 3
1.1.1编写目的 .................................................................................................................. 3
1.1.2背景 .......................................................................................................................... 3
1.1.3相关技术及开发工具简介 ...................................................................................... 3
1.3需求规定 ............................................................................................................................. 4
1.3运行环境规定 ..................................................................................................................... 5
2软件分析与设计 ............................................................................................................................ 5
2.1前台界面设计 ..................................................................................................................... 5
2.2后台代码实现 ................................................................................................................... 14
3测试报告...................................................................................................................................... 24
3.1界面测试 ........................................................................................................................... 24
4使用说明...................................................................................................................................... 28
4.1安装EX05_ ............................................................................................................ 28
4.2运行程序 ........................................................................................................................... 28
课程设计总计 ................................................................................................................................. 29
1软件需求
1.1引言
1.1.1编写目的
编写此软件需求说明书的目的是为后续开发程序提供功能、接口等各方面的
参照,也为程序实际使用者提供参考。本文的预期读者为程序开发人员及普通用
户。
1.1.2背景
本软件开发背景如下:
a. 系统名称:基于android文件管理器。
b. 开发工具:eclipse
c. 本项目的提出者、开发者为在校学生,使用者为对本软件感兴趣的
且持有android系统的手机用户。
d. 本软件可在android手机上独立运行,因此与其他系统或机构几乎没
有相互来往关系。
1.1.3相关技术及开发工具简介
Android:Android是基于Linux核心的软体平台和作业系统,早期由Google,
后由开放手机联盟开发。 美国检索公司Google在2007年11月5日公布的手机
系统平台。
该平台由操作系统、中间件、用户界面和应用软件组成,号称是首个为
移动终端打造的真正开放和完整的移动软件。
它采用了软体堆层(software stack,又
名以软体叠层)的架构,主要分为三部分。 低层以Linux核心工作为基础,只提
供基本功能,其他的应用软体则由名公司自行开发,以java作为编写程式的一
部分。 另外,为了推广此技术,Google和其它几十个手机公司建立了开放手机
联盟(Open Handset Alliance)。 Android在未公开之前常被传闻为Google电话
或gPhone。 大多传闻认为Google开发的是自己的手机电话产品,而不是一套
软体平台。
Eclipse:
Eclipse 是一个开放源代码的、基于 Java 的可扩展开发平台。就其本身而
言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse
附带了一个标准的插件集,包括 Java 开发工具(Java Development Tools,JDT)。
Eclipse是一个开放源代码的软件开发项目,专注于为高度集成的工具开发提供一个
全功能的、具有商业品质的工业平台。它主要由Eclipse项目、Eclipse工具项目和
Eclipse技术项目三个项目组成,具体包括四个部分组成——Eclipse Platform、JDT、
CDT和PDE。JDT支持Java开发、CDT支持C开发、PDE用来支持插件开发,Eclipse
Platform则是一个开放的可扩展IDE,提供了一个通用的开发平台。它提供建造块
和构造并运行集成软件开发工具的基础。Eclipse Platform允许工具建造者独立开发
与他人工具无缝集成的工具从而无须分辨一个工具功能在哪里结束,而另一个工具
功能在哪里开始。
1.2任务概述
本软件基于android技术开发,规模不大,由一个人开独立发完成。开始接
触学习android有两个月了,算是初步入门了,开发本软件意图是为了深入学习
android技术,锻炼自主学习能力,为以后开发积累经验,锻炼发现问题解决问
题的能力。现在,有很多手机软件使手机的应用更方便,本软件开发的目的就是
开发一款实用的手机文件管理器对一系列的手机软件及文件进行管理,方便快捷。
本软件为android系统的手机用户提供服务,可以使用安装器进行软件的安装。
1.3需求规定
本软件所需功能及总体设计如图1所示。
App
根目录
System Sys Sbin
。。。。。。
Bin ……
Dev Bus ……
图1
1.3运行环境规定
本软件在完成设计编码及发布工作后,可运行的硬件设备为具有android操
作系统的手机,比如目前推出这一平台机型的厂商大概有:HTC、摩托罗拉、三
星、索尼爱立信、魅族、联想、夏普、中兴、LG、戴尔、宏碁、华硕、海信等。
因此本软件的运行环境较为简单,可在任何android系统的手机上运行,对其他
硬件无较高要求,并且与其他软件没有过多的交互。
2软件分析与设计
2.1前台界面设计
(1)根目录如图2.1所示
图2.1
其xml代码 文件代码如下:
xmlns:android="/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" android:background="@drawable/white" > android:id="@+id/mPath" android:layout_width="wrap_content" android:layout_height="wrap_content" android:padding="5px" android:textSize="18sp" android:textColor="@drawable/blue" /> android:id="@android:id/list" android:layout_width="wrap_content" android:layout_height="wrap_content" />
(2)主选择界面设计如图2.2所示
图2.2
其xml代码如下所示
xmlns:android="/apk/res/android" android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="fill_parent" > android:layout_width="30dip" android:layout_height="30dip" /> android:layout_gravity="center_vertical" android:layout_width="0dip" android:layout_weight="1.0" android:layout_height="wrap_content" android:textColor="@drawable/black" />
(3)文件夹选择界面如图2.3所示,由于文件夹较多,此以一个为例。
图2.3
其xml代码如下:
xmlns:android="/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="vertical" > android:id="@+id/mText" android:layout_height="wrap_content" android:layout_width="wrap_content" android:layout_marginLeft="10dip" android:layout_marginRight="10dip" android:text="@string/str_text" android:gravity="left" /> android:id="@+id/mEdit" android:layout_height="wrap_content" android:layout_width="200px" android:layout_marginLeft="10dip" android:layout_marginRight="10dip" android:autoText="false" android:gravity="fill_horizontal" />
(4)主界面颜色设置代码如下:
(5)文件或文件夹重命名界面:
代码如下:
图2.5
/* create更改文件名时弹出的Dialog */
AlertDialog renameDialog=new
r(EX05_).create();
w(myView);
/* 设定更改文件名按下确认后的Listener */
ton("确定",listener2);
ton2("取消",new
kListener()
{
public void onClick(DialogInterface dialog, int which)
{
}
});
();
}
(6)选择文件操作功能界面如下图:
代码如下:
图2.6
String[] menu={"打开文件","更改文件名","删除文件"};
new r(EX05_)
.setTitle("你要做甚么?")
.setItems(menu,listener1)
.setPositiveButton("取消", new kListener()
{
public void onClick(DialogInterface dialog, int which)
{
}
})
.show();
}
(7)选择删除文件时,弹出注意对话框:
图2.7
代码如下:
else
{
/* 选择的item为删除文件 */
new r(EX05_).setTitle("注意!")
.setMessage("确定要删除文件吗?")
.setPositiveButton("确定", new
kListener()
{
public void onClick(DialogInterface dialog, int which)
{
/* 删除文件 */
();
getFileDir(ent());
}
})
.setNegativeButton("取消", new
kListener()
{
public void onClick(DialogInterface dialog, int which)
{
}
}).show();
}
(8)判断文件名是否存在如图示:
代码如下:
图2.8
/* 判断文件名是否存在 */
if(new File(newPath).exists())
{
/* 排除修改文件名时没修改直接发送的状况 */
if(!(e()))
{
/* 弹出Alert警告文件名重复,并确认是否修改 */
new r(EX05_)
.setTitle("注意!")
.setMessage("文件名已经存在,是否要覆盖?")
.setPositiveButton("确定",new
kListener()
{
public void onClick(DialogInterface dialog,int
which)
{
/* 文件名重复仍然修改会覆盖掉已存的文件 */
To(new File(newPath));
/* 重新生成文件在表的ListView */
getFileDir(pFile);
}
})
.setNegativeButton("取消",new
kListener()
{
public void onClick(DialogInterface dialog,int
which)
{
}
}).show();
}
2.2后台代码实现
(1)对应以上几个图的软件初始界面的具体实现代码
EX05_
的具体
代码如下:
package 05_15;
/* import相关class */
import ;
import ist;
import ;
import ialog;
import tivity;
import Interface;
import ;
import ;
import ;
import Inflater;
import ;
import xt;
import ew;
import ew;
import kListener;
public class EX05_15 extends ListActivity
{
/* 对象声明
items:存放显示的名称
paths:存放文件路径
rootPath:起始目录
*/
private List
private List
private String rootPath="/";
private TextView mPath;
private View myView;
private EditText myEditText;
@Override
protected void onCreate(Bundle icicle)
{
te(icicle);
/* 加载 Layout */
setContentView();
/* 初始化mPath,用以显示目前路径 */
mPath=(TextView)findViewById();
getFileDir(rootPath);
}
/* 取得文件架构的method */
private void getFileDir(String filePath)
{
/* 设定目前所存路径 */
t(filePath);
items=new ArrayList
paths=new ArrayList
File f=new File(filePath);
File[] files=les();
if(!(rootPath))
{
/* 第一笔设定为[并到根目录] */
("b1");
(rootPath);
/* 第二笔设定为[并勺层] */
("b2");
(ent());
}
/* 将所有文件放入ArrayList中 */
for(int i=0;i<;i++)
{
File file=files[i];
(e());
(h());
}
/* 使用自定义的MyAdapter来将数据传入ListActivity */
setListAdapter(new MyAdapter(this,items,paths));
}
/* 设定ListItem被按下时要做的操作 */
@Override
protected void onListItemClick(ListView l,View v,
int position,long id)
{
File file = new File((position));
if(d())
{
if(ctory())
{
/* 如果是文件夹就运行getFileDir() */
getFileDir((position));
}
else
{
/* 如果是文件调用fileHandle() */
fileHandle(file);
}
}
else
{
/* 弹出AlertDialog显示权限不足 */
new r(this)
.setTitle("Message")
.setMessage("权限不足!")
.setPositiveButton("OK",
new kListener()
{
public void onClick(DialogInterface dialog,int which)
{
}
}).show();
}
}
/* 处理文件的method */
private void fileHandle(final File file){
/* 按下文件时的OnClickListener */
OnClickListener listener1=new kListener()
{
public void onClick(DialogInterface dialog,int which)
{
if(which==0)
{
/* 选择的item为打开文件 */
openFile(file);
}
else if(which==1)
{
/* 选择的item为更改文件名 */
LayoutInflater factory = (EX05_);
/* 初始化myChoiceView,使用rename_alert_dialog为layout */
myView=e(_alert_dialog,null);
myEditText=(EditText)ewById();
/* 将原始文件名因放入EditText中 */
t(e());
/* new一个更改文件名的Dialog的确定按钮的listener */
OnClickListener listener2=new kListener()
{
public void onClick(DialogInterface dialog,int which)
{
/* 取得修改后的文件路径 */
String modName=t().toString();
final String pFile=entFile().getPath()+"/";
final String newPath=pFile+modName;
/* 判断文件名是否存在 */
if(new File(newPath).exists())
{
/* 排除修改文件名时没修改直接发送的状况 */
if(!(e()))
{
/* 弹出Alert警告文件名重复,并确认是否修改 */
new r(EX05_)
.setTitle("注意!")
.setMessage("文件名已经存在,是否要覆盖?")
.setPositiveButton("
kListener()
{
public void onClick(DialogInterface dialog,int
which)
{
/* 文件名重复仍然修改会覆盖掉已存的文件 */
确定",new
To(new File(newPath));
/* 重新生成文件在表的ListView */
getFileDir(pFile);
}
})
.setNegativeButton("
kListener()
{
public void onClick(DialogInterface dialog,int
which)
{
}
}).show();
}
}
else
{
/* 文件名不存在,直接做修改操作 */
To(new File(newPath));
/* 重新生成文件列表的ListView */
getFileDir(pFile);
}
}
};
/* create更改文件名时弹出的Dialog */
AlertDialog
r(EX05_).create();
w(myView);
renameDialog=new
取消",new
/* 设定更改文件名按下确认后的Listener */
ton("确定",listener2);
ton2("取消",new
kListener()
{
public void onClick(DialogInterface dialog, int which)
{
}
});
();
}
else
{
/* 选择的item为删除文件 */
new r(EX05_).setTitle("注意!")
.setMessage("确定要删除文件吗?")
.setPositiveButton("确定",
kListener()
{
public void onClick(DialogInterface dialog, int which)
{
/* 删除文件 */
();
getFileDir(ent());
}
})
.setNegativeButton("取消",
kListener()
new
new
{
public void onClick(DialogInterface dialog, int which)
{
}
}).show();
}
}
};
/* 选择几个文件时,弹出要处理文件的ListDialog */
String[] menu={"打开文件","更改文件名","删除文件"};
new r(EX05_)
.setTitle("你要做甚么?")
.setItems(menu,listener1)
.setPositiveButton("取消", new kListener()
{
public void onClick(DialogInterface dialog, int which)
{
}
})
.show();
}
/* 手机打开文件的method */
private void openFile(File f)
{
Intent intent = new Intent();
gs(_ACTIVITY_NEW_TASK);
ion(_VIEW);
/* 调用getMIMEType()来取得MimeType */
String type = getMIMEType(f);
/* 设定intent的file与MimeType */
aAndType(le(f),type);
startActivity(intent);
}
/* 判断文件MimeType的method */
private String getMIMEType(File f)
{
String type="";
String fName=e();
/* 取得扩展名 */
String
end=ing(dexOf(".")+1,()).toLowerCase();
/* 按扩展名的类型决定MimeType */
if(("m4a")||("mp3")||("mid")||
("xmf")||("ogg")||("wav"))
{
type = "audio";
}
else if(("3gp")||("mp4"))
{
type = "video";
}
else if(("jpg")||("gif")||("png")||
("jpeg")||("bmp"))
{
type = "image";
}
else
{
type="*";
}
/* 如果无法直接打开,就弹出软件列表给用户选择 */
type += "/*";
return type;
}
}
3测试报告
3.1界面测试
(1)主界面测试:
点击文件管理器图标,进入主界面,如下图:
图3.1
图3.2
(2)文件界面测试如图3.3所示:
图3.3
(3)选择一个文件进行文件操作,如下图所示:
图3.4
更改文件名时输入更改后的文件名,点击确定即可:
图3.5
(4)返回上层目录测试:
点击“Back to..”,返回到上一层目录,点击“Back to/”,返回到根目:
图3.6
图3.7
图3.8
4使用说明
4.1安装EX05_
本软件设计完成后经过测试没有发现问题,接着就是发布软件了,生成的应
用程序名称为EX05_,将此文件按照手机安装其他软件的步骤安装到是
android操作系统的手机上,点击主菜单可发现发布的软件图标,如图3.1所示。
图4.1
4.2运行程序
点击如图4.1所示的软件图标,进入文件管理器主界面如图4.2所示。
图4.2
然后,就可以对手机里的文件进行需要的简单操作。
课程设计总计
通过本次课程设计,学到了很多东西。首先,这是我第一次接触android,虽
然开发的软件比较简单,但是开发过程中也遇到了很多问题,通过查阅资料,跟
同学一起探讨等方法解决了问题,从中学到了不光是关于android方面的知识,
也再一次了解了java的玄妙,大大激发了学习新技术的兴趣。
通过本次软件开发,了解了一些android的基本知识,了解到android由
Activity、Intent、Content Provider和Service四部分组成。
本次课程设计的不足之处是原本想要的一些功能还没有实现,比如文件管理
器的播放音频文件功能,复制粘贴功能等,由于时间仓促,只能暂时完成到这里,
在课后,我一定会把那些功能逐步完善,力求达到心中预期的目标。


发布评论