课程设计Ⅱ设计报告基于android文件管理器的设计与实现.docx
《课程设计Ⅱ设计报告基于android文件管理器的设计与实现.docx》由会员分享,可在线阅读,更多相关《课程设计Ⅱ设计报告基于android文件管理器的设计与实现.docx(27页珍藏版)》请在冰豆网上搜索。
课程设计Ⅱ设计报告基于android文件管理器的设计与实现
课程设计Ⅱ设计报告
题目:
基于android文件管理器的设计与实现
学号:
姓名:
学院:
信息科学与技术学院
专业班级:
08级软计3班
指导教师:
设计时间:
2011年4月至2011年6月
指导老师评语:
评定成绩:
签名:
日期:
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日公布的手機系統平台。
美国检索公司Google在2007年11月5日公布的手机系统平台。
该平台由操作系统、中间件、用户界面和应用软件组成,号称是首个为移动终端打造的真正开放和完整的移动软件。
它採用了軟體堆層(softwarestack,又名以軟體疊層)的架構,主要分為三郭分。
它采用了软体堆层(softwarestack,又名以软体叠层)的架构,主要分为三部分。
低層以Linux核心工作為基礎,只提供基本功能,其他的應用軟體則由名公司自行開發,以java作為編寫程式的一部分。
低层以Linux核心工作为基础,只提供基本功能,其他的应用软体则由名公司自行开发,以java作为编写程式的一部分。
另外,為了推廣此技術,Google和其它幾十個手機公司建立了開放手機聯盟(OpenHandsetAlliance)。
另外,为了推广此技术,Google和其它几十个手机公司建立了开放手机联盟(OpenHandsetAlliance)。
Android在未公開之前常被傳聞為Google電話或gPhone。
Android在未公开之前常被传闻为Google电话或gPhone。
大多傳聞認為Google開發的是自己的手機電話產品,而不是一套軟體平台。
大多传闻认为Google开发的是自己的手机电话产品,而不是一套软体平台。
Eclipse:
Eclipse是一个开放源代码的、基于Java的可扩展开发平台。
就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。
幸运的是,Eclipse附带了一个标准的插件集,包括Java开发工具(JavaDevelopmentTools,JDT)。
Eclipse是一个开放源代码的软件开发项目,专注于为高度集成的工具开发提供一个全功能的、具有商业品质的工业平台。
它主要由Eclipse项目、Eclipse工具项目和Eclipse技术项目三个项目组成,具体包括四个部分组成——EclipsePlatform、JDT、CDT和PDE。
JDT支持Java开发、CDT支持C开发、PDE用来支持插件开发,EclipsePlatform则是一个开放的可扩展IDE,提供了一个通用的开发平台。
它提供建造块和构造并运行集成软件开发工具的基础。
EclipsePlatform允许工具建造者独立开发与他人工具无缝集成的工具从而无须分辨一个工具功能在哪里结束,而另一个工具功能在哪里开始。
1.2任务概述
本软件基于android技术开发,规模不大,由一个人开独立发完成。
开始接触学习android有两个月了,算是初步入门了,开发本软件意图是为了深入学习android技术,锻炼自主学习能力,为以后开发积累经验,锻炼发现问题解决问题的能力。
现在,有很多手机软件使手机的应用更方便,本软件开发的目的就是开发一款实用的手机文件管理器对一系列的手机软件及文件进行管理,方便快捷。
本软件为android系统的手机用户提供服务,可以使用安装器进行软件的安装。
1.3需求规定
本软件所需功能及总体设计如图1所示。
图1
1.3运行环境规定
本软件在完成设计编码及发布工作后,可运行的硬件设备为具有android操作系统的手机,比如目前推出这一平台机型的厂商大概有:
HTC、摩托罗拉、三星、索尼爱立信、魅族、联想、夏普、中兴、LG、戴尔、宏碁、华硕、海信等。
因此本软件的运行环境较为简单,可在任何android系统的手机上运行,对其他硬件无较高要求,并且与其他软件没有过多的交互。
2软件分析与设计
2.1前台界面设计
(1)根目录如图2.1所示
图2.1
其xml代码main.xml文件代码如下:
xmlversion="1.0"encoding="utf-8"?
>
xmlns:
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代码如下所示
xmlversion="1.0"encoding="utf-8"?
>
xmlns:
android="
android:
orientation="horizontal"
android:
layout_width="fill_parent"
android:
layout_height="fill_parent"
>
id="@+id/icon"
android:
layout_width="30dip"
android:
layout_height="30dip"
/>
id="@+id/text"
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代码如下:
xmlversion="1.0"encoding="utf-8"?
>
xmlns:
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)主界面颜色设置代码如下:
xmlversion="1.0"encoding="utf-8"?
>
#FFFFFFFF
#000000
#0000FF
(5)文件或文件夹重命名界面:
图2.5
代码如下:
/*create更改文件名时弹出的Dialog*/
AlertDialogrenameDialog=newAlertDialog.Builder(EX05_15.this).create();
renameDialog.setView(myView);
/*设定更改文件名按下确认后的Listener*/
renameDialog.setButton("确定",listener2);
renameDialog.setButton2("取消",newDialogInterface.OnClickListener()
{
publicvoidonClick(DialogInterfacedialog,intwhich)
{
}
});
renameDialog.show();
}
(6)选择文件操作功能界面如下图:
图2.6
代码如下:
String[]menu={"打开文件","更改文件名","删除文件"};
newAlertDialog.Builder(EX05_15.this)
.setTitle("你要做甚么?
")
.setItems(menu,listener1)
.setPositiveButton("取消",newDialogInterface.OnClickListener()
{
publicvoidonClick(DialogInterfacedialog,intwhich)
{
}
})
.show();
}
(7)选择删除文件时,弹出注意对话框:
图2.7
代码如下:
else
{
/*选择的item为删除文件*/
newAlertDialog.Builder(EX05_15.this).setTitle("注意!
")
.setMessage("确定要删除文件吗?
")
.setPositiveButton("确定",newDialogInterface.OnClickListener()
{
publicvoidonClick(DialogInterfacedialog,intwhich)
{
/*删除文件*/
file.delete();
getFileDir(file.getParent());
}
})
.setNegativeButton("取消",newDialogInterface.OnClickListener()
{
publicvoidonClick(DialogInterfacedialog,intwhich)
{
}
}).show();
}
(8)判断文件名是否存在如图示:
图2.8
代码如下:
/*判断文件名是否存在*/
if(newFile(newPath).exists())
{
/*排除修改文件名时没修改直接发送的状况*/
if(!
modName.equals(file.getName()))
{
/*弹出Alert警告文件名重复,并确认是否修改*/
newAlertDialog.Builder(EX05_15.this)
.setTitle("注意!
")
.setMessage("文件名已经存在,是否要覆盖?
")
.setPositiveButton("确定",newDialogInterface.OnClickListener()
{
publicvoidonClick(DialogInterfacedialog,intwhich)
{
/*文件名重复仍然修改会覆盖掉已存的文件*/
file.renameTo(newFile(newPath));
/*重新生成文件在表的ListView*/
getFileDir(pFile);
}
})
.setNegativeButton("取消",newDialogInterface.OnClickListener()
{
publicvoidonClick(DialogInterfacedialog,intwhich)
{
}
}).show();
}
2.2后台代码实现
(1)对应以上几个图的软件初始界面的具体实现代码EX05_15.java的具体代码如下:
packageirdc.ex05_15;
/*import相关class*/
importjava.io.File;
importjava.util.ArrayList;
importjava.util.List;
importandroid.app.AlertDialog;
importandroid.app.ListActivity;
importandroid.content.DialogInterface;
importandroid.content.Intent;
import.Uri;
importandroid.os.Bundle;
importandroid.view.LayoutInflater;
importandroid.view.View;
importandroid.widget.EditText;
importandroid.widget.ListView;
importandroid.widget.TextView;
importandroid.content.DialogInterface.OnClickListener;
publicclassEX05_15extendsListActivity
{
/*对象声明
items:
存放显示的名称
paths:
存放文件路径
rootPath:
起始目录
*/
privateListitems=null;
privateListpaths=null;
privateStringrootPath="/";
privateTextViewmPath;
privateViewmyView;
privateEditTextmyEditText;
@Override
protectedvoidonCreate(Bundleicicle)
{
super.onCreate(icicle);
/*加载main.xmlLayout*/
setContentView(R.layout.main);
/*初始化mPath,用以显示目前路径*/
mPath=(TextView)findViewById(R.id.mPath);
getFileDir(rootPath);
}
/*取得文件架构的method*/
privatevoidgetFileDir(StringfilePath)
{
/*设定目前所存路径*/
mPath.setText(filePath);
items=newArrayList();
paths=newArrayList();
Filef=newFile(filePath);
File[]files=f.listFiles();
if(!
filePath.equals(rootPath))
{
/*第一笔设定为[并到根目录]*/
items.add("b1");
paths.add(rootPath);
/*第二笔设定为[并勺层]*/
items.add("b2");
paths.add(f.getParent());
}
/*将所有文件放入ArrayList中*/
for(inti=0;i{
Filefile=files[i];
items.add(file.getName());
paths.add(file.getPath());
}
/*使用自定义的MyAdapter来将数据传入ListActivity*/
setListAdapter(newMyAdapter(this,items,paths));
}
/*设定ListItem被按下时要做的操作*/
@Override
protectedvoidonListItemClick(ListViewl,Viewv,
intposition,longid)
{
Filefile=newFile(paths.get(position));
if(file.canRead())
{
if(file.isDirectory())
{
/*如果是文件夹就运行getFileDir()*/
getFileDir(paths.get(position));
}
else
{
/*如果是文件调用fileHandle()*/
fileHandle(file);
}
}
else
{
/*弹出AlertDialog显示权限不足*/
newAlertDialog.Builder(this)
.setTitle("Message")
.setMessage("权限不足!
")
.setPositiveButton("OK",
newDialogInterface.OnClickListener()
{
publicvoidonClick(DialogInterfacedialog,intwhich)
{
}
}).show();
}
}
/*处理文件的method*/
privatevoidfileHandle(finalFilefile){
/*按下文件时的OnClickListener*/
OnClickListenerlistener1=newDialogInterface.OnClickListener()
{
publicvoidonClick(DialogInterfacedialog,intwhich)
{
if(which==0)
{
/*选择的item为打开文件*/
openFile(file);
}
elseif(which==1)
{
/*选择的item为更改文件名*/
LayoutInflaterfactory=LayoutInflater.from(EX05_15.this);
/*初始化myChoiceView,使用rename_alert_dialog为layout*/
myView=factory.inflate(R.layout.rename_alert_dialog,null);
myEditText=(EditText)myView.findViewById(R.id.mEdit);
/*将原始文件名因放入EditText中*/
myEditText.setText(file.getName());
/*new一个更改文件名的Dialog的确定按钮的listener*/
OnClickListenerlistener2=newDialogInterface.OnClickListener()
{
publicvoidonClick(DialogInterfacedialog,intwhich)
{
/*取得修改后的文件路径*/
StringmodName=myEditText.getText().toString();
finalStringpFile=file.getParentFile().getPath()+"/";
finalStringnewPath=pFile+modName;
/*判断文件名是否存在*/
if(newFile(newPath).exists())
{
/*排除修改文件名时没修改直接发送的状况*/
if(!
modName.equals(file.getName()))
{
/*弹出Alert警告文件名重复,并确认是否修改*/
newAlertDialog.Builder(EX05_15.this)
.setTitle("注意!
")
.setMessage("文件名已经存在,是否要覆盖?
")
.setPositiveButton("确定",newDialogInterface.OnClickListener()
{
publicvoid