摘 要: 针对目前大多数Android手机文件浏览器只能浏览多种格式的文件,不支持直接打开和编辑Word、Excel和PDF等办公文档的特点,开发了一款基于Android的多功能文件浏览器。该软件除了提供常规文件浏览功能之外,还能直接打开Word、Excel和PDF等办公文档,并能对该类文档进行简单的编辑,同时还具有换肤、扫描文件、摇一摇截屏、图片分享、视频和音频播放以及发邮件等功能。在实际应用中,该软件取得了较好的效果。
关键词: Android系统;文件浏览器;办公文档;摇一摇截屏;图片分享
0 引言
近年来,智能手机在国内的普及率越来越高,国内手机市场主要以Android手机和苹果手机为主流,而Android系统的开源性和免费性使其在国内手机市场占有更高的份额[1]。
随着手机文件越来越多,迫切需要一个文件管理器来针对各种不同类型的文件,提供不同的个性化管理,例如对办公类型的文件需要能够提供查阅、分发功能;而对娱乐、生活类的文件则需要提供分享功能等。其中,对于移动办公用户来说,尤其需要支持查看常见的办公文件。目前,市面上出现了各种各样的文件管理器,例如RE文件浏览器、简易文件管理、ES文件浏览器、BlackMoon File Browser等应用,这些文件浏览器都提供了基本的文件浏览功能,但对于某些类别文件的打开,需要借助第三方软件才可以实现。由于文件浏览器本身不提供文件阅读的功能,为了查看DOC、XLS和PDF文件,用户不得不另外下载第三方软件,才能实现阅读和编辑办公文档。
为使文件浏览器能适应更多的应用场景,本文开发了一款基于Android的多功能文件浏览器,该软件除了提供常规文件浏览功能之外,还能直接打开Word、Excel和PDF等办公文档,并能对该类文档进行简单的编辑,同时还具有换肤、扫描文件、摇一摇截屏、图片分享、视频和音频播放以及发邮件等功能。
1 相关技术
Android是Google开发的基于Linux平台的开源手机操作系统[2]。Android平台主要在操作系统和中间件支撑下,能够用于用户界面设计和应用软件开发[3],Android自身集成丰富的API,且大部分代码开源。Android的应用框架层采用结构化设计,从而简化了Android应用程序的开发[4],Android四大组件包括Activity、Service、BroadCastReceiver、ContentProvider[5],Android应用程序的开发环境只需Eclipse和插件ADT即可[6]。
2 需求分析
2.1 功能描述
本系统具有基本文件浏览、媒体文件浏览(图片浏览、音频浏览、视频浏览)、扫描、摇一摇截屏、发邮件、换肤等功能。
(1)具有基本的文件(包括Word、Excel、PDF文件)浏览功能并实现文件夹和文件复制、粘贴、重命名、属性修改等功能;
(2)媒体文件浏览,包括对图片、音频、视频的浏览功能;
(3)文件扫描功能,通过手机摄像头来扫描报纸杂志并将其转换为PDF文件;
(4)截屏功能,摇一摇手机,即可在编辑或浏览状态下截取手机屏幕内容保存成图片格式,并可将图片转换为PDF文件;
(5)实现将文件以附件形式发送邮件功能,不需绑定第三方邮件系统即可完成邮件发送等操作;
(6)具有换肤功能,可根据用户喜好更换背景。
2.2 用例分析
根据以上的功能描述,得出图1所示的用户用例图。
3 系统设计
3.1 文件浏览器架构设计
系统架构主要划分为前端界面、业务逻辑层和底层工具类。
对于所有展示在文件浏览器中的文件,无论是何种格式,底层都统一提供文件管理的工具类,统一实现对文件的复制、剪切和删除的功能。由于本系统具备的邮件附件发送、平台分享的功能需要网络连接,因此在底层工具类中增加网络连接模块,提供常用的网络连接操作。
业务逻辑层包括移动办公和娱乐分享功能,无论是移动办公还是娱乐分享功能,都是建立在对手机文件浏览的基础之上的。因此,在业务逻辑层中,将文件浏览作为业务逻辑的基层,在其上实现移动办公的功能模块和娱乐分享的功能模块。而移动办公的功能模块又细化为DOC、XLS、PDF文件查看、文件扫描转换、摇一摇截屏、发送电邮功能,娱乐分享模块包括图片等媒体文件的分享和换肤功能。
系统架构如图2所示。
3.2 主要功能时序图
3.2.1 办公文档操作时序图
对办公文档PDF进行操作时,需要先对其进行解码操作,然后才能显示和编辑,而对Word、Excel文件则可直接进行读操作。办公文档操作时序图如图3所示。
3.2.2 分享图片时序图
用户对图片进行分享时,首先通过分享界面选择图片所在路径,然后获取图片信息进行分享,分享图片时序图如图4所示。
3.2.3 发送邮件时序图
发送邮件时通过调用发送邮件服务进行发送,发送邮件时序图如图5所示。
4 文件浏览器主要功能的开发
4.1 读取办公文档的方法
读取Word和Excel文档时,首先将文档的内容写入SD Card中,并以.html的格式进行保存,然后再通过解析HTML文档的方法将原文档数据读出显示。
以下是读取Excel文档的onCreate()函数代码:
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.view);
view=(WebView) this.findViewById(R.id.show);
shake.button(ExcelReadActivity.this,activitys);
try{
makeFile();
Intent intent=this.getIntent();
Bundle bundle=intent.getExtras();
nameStr=bundle.getString("name");
readExcel(nameStr);
WebSettings setting=view.getSettings();
setting.setTextSize(TextSize.SMALLEST);
setting.setJavaScriptEnabled(true);
view.setInitialScale(300);
setting.setBuiltInZoomControls(true);
setting.setCacheMode(WebSettings.
LOAD_CACHE_ELSE_NETWORK);
String uri="file:///mnt/sdcard/excel/excel.html";
view.loadUrl(uri);
}
catch (Exception e){
e.printStackTrace();
}
}
将Excel文件以HTML格式保存的部分代码如下:
public StringBuffer readExcel(String excelFileName)
throws Exception {
myFile=new File(htmlPath);
output=new FileOutputStream(myFile);
lsb.append("<html xmlns:o=′urn:schemas-microsoft-com:office:office′ xmlns:x=′urn:schemas-microsoft-com:office:excel′ xmlns=′http://www.w3.org/TR/REC-html40′>");
lsb.append("<head><meta http-equiv=Content-Type content=′text/html; charset=utf-8′><meta name=ProgId content=Excel.Sheet>");
HSSFSheet sheet=null;
try{
HSSFWorkbook workbook=new HSSFWorkbook(new
FileInputStream(excelFileName)); //获整个Excel
for(int sheetIndex=0; sheetIndex<workbook.getNumber
OfSheets();sheetIndex++){
sheet=workbook.getSheetAt(sheetIndex);
//获所有的sheet
String sheetName=workbook.getSheetName(sheetIndex); if(workbook.getSheetAt(sheetIndex)!=null){
heet=workbook.getSheetAt(sheetIndex);
//获得不为空的这个sheet
if(sheet!=null){
int firstRowNum=sheet.getFirstRowNum(); //第一行
int lastRowNum=sheet.getLastRowNum(); //最后一行
//……
4.2 摇一摇截屏的实现
当正在运行文件浏览器时,无论正在打开的是哪一个界面,只要摇一摇手机则可以对手机当前屏幕显示的内容进行截图,并且保存在SD Card[7]指定目录中。摇一摇截屏部分代码如下:
public void button(final Activity shake,final String activity)
{
mVibrator=(Vibrator)shake.getApplication().getSystemService(
shake.VIBRATOR_SERVICE);
mShakeListener=new ShakeListener(shake);
mShakeListener.setOnShakeListener(new OnShakeListener(){
public void onShake(){
mShakeListener.stop();
startVibrato(); //振动
new Handler().postDelayed(new Runnable(){
public void run(){
View vw=shake.getWindow().getDecorView();
//shake_button ss=new shake_button();
//shake.bu(vw,shake,activity);
mVibrator.cancel(); mShakeListener.start();
}
}, 2000);
}
});
}
5 多功能文件浏览器的应用
多功能文件浏览器采用Android 4.2.2开发。系统的菜单列表、文件浏览以及音乐浏览界面如图6所示。
阅读PDF文件、扫描文档和保存PDF界面如图7所示。
发送邮件、文件分享以及换肤界面如图8所示。
6 结论
本文详细介绍了一款基于Android平台的多功能文件浏览器,软件实现了基本文件浏览、办公文件阅读和简单编辑、媒体文件浏览、扫描文件、摇一摇截屏、发邮件、换肤等功能,该软件达到了预期的效果并成功上线使用。
参考文献
[1] 李冬睿,赵建保,许统德,等.基于Android的多人定位系统的设计与实现[J].微型机与应用,2015,34(8):76-79.
[2] 张亚杰.基于Android平台的移动终端应用程序的研究与开发[D].郑州:郑州大学,2013.
[3] 代敏.基于Android平台下手机定位程序的设计及实现[J].计算机与数字工程,2012,40(4):143-145.
[4] 农丽萍,王力虎,黄一平.Android在嵌入式车载导航系统的应用研究[J].计算机工程与设计,2010,31(11):2473-2476.
[5] 曾晓辉,文成玉,陈超,等.基于二维码的移动巡检新系统的设计与实现[J].电子技术应用,2014,40(9):122-125.
[6] 程涛,陈慧琴,孙萍,等.基于Android的手机相册分享软件的设计与实现[J].微型机与应用,2014,33(13):1-2.
[7] 张义芳.基于Android的SD卡测试系统的设计和实现[D].广州:广东工业大学,2014.