已阅读5页,还剩25页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
课程设计设计报告题 目:基于android文件管理器的设计与实现 学 号: 姓 名: 学 院: 信息科学与技术学院 专业班级:08级软计3班 指导教师: 设计时间:2011年4月至2011年6月 指导老师评语: 评定成绩: 签名: 日期:目录1软件需求31.1引言31.1.1编写目的31.1.2背景31.1.3相关技术及开发工具简介31.3需求规定31.3运行环境规定32软件分析与设计32.1前台界面设计32.2后台代码实现33测试报告33.1界面测试34使用说明34.1安装EX05_15.apk34.2运行程序3课程设计总计31软件需求1.1引言1.1.1编写目的编写此软件需求说明书的目的是为后续开发程序提供功能、接口等各方面的参照,也为程序实际使用者提供参考。本文的预期读者为程序开发人员及普通用户。1.1.2背景本软件开发背景如下:a. 系统名称:基于android文件管理器。b. 开发工具:eclipsec. 本项目的提出者、开发者为在校学生,使用者为对本软件感兴趣的且持有android系统的手机用户。d. 本软件可在android手机上独立运行,因此与其他系统或机构几乎没有相互来往关系。1.1.3相关技术及开发工具简介Android:Android是基于Linux核心的软体平台和作业系统,早期由Google,后由开放手机联盟开发。 美國檢索公司Google在2007年11月5日公布的手機系統平台。美国检索公司Google在2007年11月5日公布的手机系统平台。该平台由操作系统、中间件、用户界面和应用软件组成,号称是首个为移动终端打造的真正开放和完整的移动软件。它採用了軟體堆層(software stack,又名以軟體疊層)的架構,主要分為三郭分。它采用了软体堆层(software stack,又名以软体叠层)的架构,主要分为三部分。 低層以Linux核心工作為基礎,只提供基本功能,其他的應用軟體則由名公司自行開發,以java作為編寫程式的一部分。低层以Linux核心工作为基础,只提供基本功能,其他的应用软体则由名公司自行开发,以java作为编写程式的一部分。 另外,為了推廣此技術,Google和其它幾十個手機公司建立了開放手機聯盟(Open Handset Alliance)。另外,为了推广此技术,Google和其它几十个手机公司建立了开放手机联盟(Open Handset Alliance)。 Android在未公開之前常被傳聞為Google電話或gPhone。 Android在未公开之前常被传闻为Google电话或gPhone。 大多傳聞認為Google開發的是自己的手機電話產品,而不是一套軟體平台。大多传闻认为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所示。根目录SystemSbinSys。DevBusAppBin 图11.3运行环境规定本软件在完成设计编码及发布工作后,可运行的硬件设备为具有android操作系统的手机,比如目前推出这一平台机型的厂商大概有:HTC、摩托罗拉、三星、索尼爱立信、魅族、联想、夏普、中兴、LG、戴尔、宏碁、华硕、海信等。因此本软件的运行环境较为简单,可在任何android系统的手机上运行,对其他硬件无较高要求,并且与其他软件没有过多的交互。2软件分析与设计2.1前台界面设计(1)根目录如图2.1所示 图2.1其xml代码main.xml 文件代码如下: (2)主选择界面设计如图2.2所示 图2.2其xml代码如下所示 (3)文件夹选择界面如图2.3所示,由于文件夹较多,此以一个为例。 图2.3其xml代码如下: (4)主界面颜色设置代码如下: #FFFFFFFF #000000 #0000FF(5)文件或文件夹重命名界面: 图2.5代码如下:/* create更改文件名时弹出的Dialog */ AlertDialog renameDialog=new AlertDialog.Builder(EX05_15.this).create(); renameDialog.setView(myView); /* 设定更改文件名按下确认后的Listener */ renameDialog.setButton(确定,listener2); renameDialog.setButton2(取消,new DialogInterface.OnClickListener() public void onClick(DialogInterface dialog, int which) ); renameDialog.show(); (6)选择文件操作功能界面如下图:图2.6代码如下: String menu=打开文件,更改文件名,删除文件; new AlertDialog.Builder(EX05_15.this) .setTitle(你要做甚么?) .setItems(menu,listener1) .setPositiveButton(取消, new DialogInterface.OnClickListener() public void onClick(DialogInterface dialog, int which) ) .show(); (7)选择删除文件时,弹出注意对话框:图2.7代码如下:else /* 选择的item为删除文件 */ new AlertDialog.Builder(EX05_15.this).setTitle(注意!) .setMessage(确定要删除文件吗?) .setPositiveButton(确定, new DialogInterface.OnClickListener() public void onClick(DialogInterface dialog, int which) /* 删除文件 */ file.delete(); getFileDir(file.getParent(); ) .setNegativeButton(取消, new DialogInterface.OnClickListener() public void onClick(DialogInterface dialog, int which) ).show(); (8)判断文件名是否存在如图示: 图2.8代码如下: /* 判断文件名是否存在 */ if(new File(newPath).exists() /* 排除修改文件名时没修改直接发送的状况 */ if(!modName.equals(file.getName() /* 弹出Alert警告文件名重复,并确认是否修改 */ new AlertDialog.Builder(EX05_15.this) .setTitle(注意!) .setMessage(文件名已经存在,是否要覆盖?) .setPositiveButton(确定,new DialogInterface.OnClickListener() public void onClick(DialogInterface dialog,int which) /* 文件名重复仍然修改会覆盖掉已存的文件 */ file.renameTo(new File(newPath); /* 重新生成文件在表的ListView */ getFileDir(pFile); ) .setNegativeButton(取消,new DialogInterface.OnClickListener() public void onClick(DialogInterface dialog,int which) ).show(); 2.2后台代码实现(1)对应以上几个图的软件初始界面的具体实现代码EX05_15.java 的具体代码如下:package irdc.ex05_15;/* import相关class */import java.io.File;import java.util.ArrayList;import java.util.List;import android.app.AlertDialog;import android.app.ListActivity;import android.content.DialogInterface;import android.content.Intent;import .Uri;import android.os.Bundle;import android.view.LayoutInflater;import android.view.View;import android.widget.EditText;import android.widget.ListView;import android.widget.TextView;import android.content.DialogInterface.OnClickListener;public class EX05_15 extends ListActivity /* 对象声明 items:存放显示的名称 paths:存放文件路径rootPath:起始目录 */ private List items=null;private List paths=null;private String rootPath=/; private TextView mPath;private View myView; private EditText myEditText; Override protected void onCreate(Bundle icicle) super.onCreate(icicle); /* 加载main.xml Layout */ setContentView(R.layout.main); /* 初始化mPath,用以显示目前路径 */ mPath=(TextView)findViewById(R.id.mPath); getFileDir(rootPath); /* 取得文件架构的method */ private void getFileDir(String filePath) /* 设定目前所存路径 */ mPath.setText(filePath); items=new ArrayList(); paths=new ArrayList(); File f=new File(filePath); File files=f.listFiles(); if(!filePath.equals(rootPath) /* 第一笔设定为并到根目录 */ items.add(b1); paths.add(rootPath); /* 第二笔设定为并勺层 */ items.add(b2); paths.add(f.getParent(); /* 将所有文件放入ArrayList中 */ for(int i=0;ifiles.length;i+) File file=filesi; items.add(file.getName(); paths.add(file.getPath(); /* 使用自定义的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(paths.get(position); if(file.canRead() if(file.isDirectory() /* 如果是文件夹就运行getFileDir() */ getFileDir(paths.get(position); else /* 如果是文件调用fileHandle() */ fileHandle(file); else /* 弹出AlertDialog显示权限不足 */ new AlertDialog.Builder(this) .setTitle(Message) .setMessage(权限不足!) .setPositiveButton(OK, new DialogInterface.OnClickListener() public void onClick(DialogInterface dialog,int which) ).show(); /* 处理文件的method */ private void fileHandle(final File file) /* 按下文件时的OnClickListener */ OnClickListener listener1=new DialogInterface.OnClickListener() public void onClick(DialogInterface dialog,int which) if(which=0) /* 选择的item为打开文件 */ openFile(file); else if(which=1) /* 选择的item为更改文件名 */ LayoutInflater factory = 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 */ OnClickListener listener2=new DialogInterface.OnClickListener() public void onClick(DialogInterface dialog,int which) /* 取得修改后的文件路径 */ String modName=myEditText.getText().toString(); final String pFile=file.getParentFile().getPath()+/; final String newPath=pFile+modName; /* 判断文件名是否存在 */ if(new File(newPath).exists() /* 排除修改文件名时没修改直接发送的状况 */ if(!modName.equals(file.getName() /* 弹出Alert警告文件名重复,并确认是否修改 */ new AlertDialog.Builder(EX05_15.this) .setTitle(注意!) .setMessage(文件名已经存在,是否要覆盖?) .setPositiveButton(确定,new DialogInterface.OnClickListener() public void onClick(DialogInterface dialog,int which) /* 文件名重复仍然修改会覆盖掉已存的文件 */ file.renameTo(new File(newPath); /* 重新生成文件在表的ListView */ getFileDir(pFile); ) .setNegativeButton(取消,new DialogInterface.OnClickListener() public void onClick(DialogInterface dialog,int which) ).show(); else /* 文件名不存在,直接做修改操作 */ file.renameTo(new File(newPath); /* 重新生成文件列表的ListView */ getFileDir(pFile); ; /* create更改文件名时弹出的Dialog */ AlertDialog renameDialog=new AlertDialog.Builder(EX05_15.this).create(); renameDialog.setView(myView); /* 设定更改文件名按下确认后的Listener */ renameDialog.setButton(确定,listener2); renameDialog.setButton2(取消,new DialogInterface.OnClickListener() public void onClick(DialogInterface dialog, int which) ); renameDialog.show(); else /* 选择的item为删除文件 */ new AlertDialog.Builder(EX05_15.this).setTitle(注意!) .setMessage(确定要删除文件吗?) .setPositiveButton(确定, new DialogInterface.OnClickListener() public void onClick(DialogInterface dialog, int which) /* 删除文件 */ file.delete(); getFileDir(file.getParent(); ) .setNegativeButton(取消, new DialogInterface.OnClickListener() public void onClick(DialogInterface dialog, int which) ).show(); ; /* 选择几个文件时,弹出要处理文件的ListDialog */ String menu=打开文件,更改文件名,删除文件; new AlertDialog.Builder(EX05_15.this) .setTitle(你要做甚么?) .setItems(menu,listener1) .setPositiveButton(取消, new DialogInterface.OnClickListener() public void onClick(DialogInterface dialog, int which) ) .show(); /* 手机打开文件的method */ private void openFile(File f) Intent intent = new Intent(); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); intent.setAction(android.content.Intent.ACTION_VIEW); /* 调用getMIMEType()来取得MimeType */ String type = getMIMEType(f); /* 设定intent的file与MimeType */ intent.setDataAndType(Uri.fromFile(f),type); startActivity(intent); /* 判断文件MimeType的method */ private String getMIMEType(File f) String type=; String fName=f.getName(); /* 取得扩展名 */ String end=fName.substring(fName.lastIndexOf(.)+1,fName.length().toLowerCase(); /* 按扩展名的类型决定MimeType */ if(end.equals(m4a)|end.equals(mp3)|end.equals(m
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 中学语文教学反思21篇
- 南京工业大学浦江学院《数媒工作坊-3》2022-2023学年第一学期期末试卷
- 亳州恒大城 9-17#主体及配套工程运动中心施工组织设计
- 反应热说课稿
- 地球的运动说课稿
- 南京工业大学浦江学院《客户关系管理》2023-2024学年第一学期期末试卷
- 南京工业大学浦江学院《工程数学》2021-2022学年第一学期期末试卷
- 《桃花源记》说课稿8
- 南京工业大学《仪器分析方法》2023-2024学年第一学期期末试卷
- 南京工业大学《铁路与轨道交通车站工程》2023-2024学年第一学期期末试卷
- 恶劣天气下的道路交通管制和疏导方案
- vsd负压吸引术护理查房
- 有多少粘贴画教学设计朱菊芬
- 学会合理消费
- 紫罗兰永恒花园
- 高三一本“临界生”动员会课件
- 家长会课件:四年级家长会语文老师课件
- 食堂验收记录表
- 23秋国家开放大学《EXCEL在财务中的应用》形考作业1-4参考答案
- 水利工程生产安全重大事故隐患判定标准(修订稿)
- 血液净化标准操作规程
评论
0/150
提交评论