摘 要: 針對目前大多數(shù)Android手機文件瀏覽器只能瀏覽多種格式的文件,不支持直接打開和編輯Word、Excel和PDF等辦公文檔的特點,開發(fā)了一款基于Android的多功能文件瀏覽器。該軟件除了提供常規(guī)文件瀏覽功能之外,還能直接打開Word、Excel和PDF等辦公文檔,并能對該類文檔進行簡單的編輯,同時還具有換膚、掃描文件、搖一搖截屏、圖片分享、視頻和音頻播放以及發(fā)郵件等功能。在實際應(yīng)用中,該軟件取得了較好的效果。
關(guān)鍵詞: Android系統(tǒng);文件瀏覽器;辦公文檔;搖一搖截屏;圖片分享
0 引言
近年來,智能手機在國內(nèi)的普及率越來越高,國內(nèi)手機市場主要以Android手機和蘋果手機為主流,而Android系統(tǒng)的開源性和免費性使其在國內(nèi)手機市場占有更高的份額[1]。
隨著手機文件越來越多,迫切需要一個文件管理器來針對各種不同類型的文件,提供不同的個性化管理,例如對辦公類型的文件需要能夠提供查閱、分發(fā)功能;而對娛樂、生活類的文件則需要提供分享功能等。其中,對于移動辦公用戶來說,尤其需要支持查看常見的辦公文件。目前,市面上出現(xiàn)了各種各樣的文件管理器,例如RE文件瀏覽器、簡易文件管理、ES文件瀏覽器、BlackMoon File Browser等應(yīng)用,這些文件瀏覽器都提供了基本的文件瀏覽功能,但對于某些類別文件的打開,需要借助第三方軟件才可以實現(xiàn)。由于文件瀏覽器本身不提供文件閱讀的功能,為了查看DOC、XLS和PDF文件,用戶不得不另外下載第三方軟件,才能實現(xiàn)閱讀和編輯辦公文檔。
為使文件瀏覽器能適應(yīng)更多的應(yīng)用場景,本文開發(fā)了一款基于Android的多功能文件瀏覽器,該軟件除了提供常規(guī)文件瀏覽功能之外,還能直接打開Word、Excel和PDF等辦公文檔,并能對該類文檔進行簡單的編輯,同時還具有換膚、掃描文件、搖一搖截屏、圖片分享、視頻和音頻播放以及發(fā)郵件等功能。
1 相關(guān)技術(shù)
Android是Google開發(fā)的基于Linux平臺的開源手機操作系統(tǒng)[2]。Android平臺主要在操作系統(tǒng)和中間件支撐下,能夠用于用戶界面設(shè)計和應(yīng)用軟件開發(fā)[3],Android自身集成豐富的API,且大部分代碼開源。Android的應(yīng)用框架層采用結(jié)構(gòu)化設(shè)計,從而簡化了Android應(yīng)用程序的開發(fā)[4],Android四大組件包括Activity、Service、BroadCastReceiver、ContentProvider[5],Android應(yīng)用程序的開發(fā)環(huán)境只需Eclipse和插件ADT即可[6]。
2 需求分析
2.1 功能描述
本系統(tǒng)具有基本文件瀏覽、媒體文件瀏覽(圖片瀏覽、音頻瀏覽、視頻瀏覽)、掃描、搖一搖截屏、發(fā)郵件、換膚等功能。
?。?)具有基本的文件(包括Word、Excel、PDF文件)瀏覽功能并實現(xiàn)文件夾和文件復(fù)制、粘貼、重命名、屬性修改等功能;
?。?)媒體文件瀏覽,包括對圖片、音頻、視頻的瀏覽功能;
?。?)文件掃描功能,通過手機攝像頭來掃描報紙雜志并將其轉(zhuǎn)換為PDF文件;
(4)截屏功能,搖一搖手機,即可在編輯或瀏覽狀態(tài)下截取手機屏幕內(nèi)容保存成圖片格式,并可將圖片轉(zhuǎn)換為PDF文件;
?。?)實現(xiàn)將文件以附件形式發(fā)送郵件功能,不需綁定第三方郵件系統(tǒng)即可完成郵件發(fā)送等操作;
?。?)具有換膚功能,可根據(jù)用戶喜好更換背景。
2.2 用例分析
根據(jù)以上的功能描述,得出圖1所示的用戶用例圖。
3 系統(tǒng)設(shè)計
3.1 文件瀏覽器架構(gòu)設(shè)計
系統(tǒng)架構(gòu)主要劃分為前端界面、業(yè)務(wù)邏輯層和底層工具類。
對于所有展示在文件瀏覽器中的文件,無論是何種格式,底層都統(tǒng)一提供文件管理的工具類,統(tǒng)一實現(xiàn)對文件的復(fù)制、剪切和刪除的功能。由于本系統(tǒng)具備的郵件附件發(fā)送、平臺分享的功能需要網(wǎng)絡(luò)連接,因此在底層工具類中增加網(wǎng)絡(luò)連接模塊,提供常用的網(wǎng)絡(luò)連接操作。
業(yè)務(wù)邏輯層包括移動辦公和娛樂分享功能,無論是移動辦公還是娛樂分享功能,都是建立在對手機文件瀏覽的基礎(chǔ)之上的。因此,在業(yè)務(wù)邏輯層中,將文件瀏覽作為業(yè)務(wù)邏輯的基層,在其上實現(xiàn)移動辦公的功能模塊和娛樂分享的功能模塊。而移動辦公的功能模塊又細化為DOC、XLS、PDF文件查看、文件掃描轉(zhuǎn)換、搖一搖截屏、發(fā)送電郵功能,娛樂分享模塊包括圖片等媒體文件的分享和換膚功能。
系統(tǒng)架構(gòu)如圖2所示。
3.2 主要功能時序圖
3.2.1 辦公文檔操作時序圖
對辦公文檔PDF進行操作時,需要先對其進行解碼操作,然后才能顯示和編輯,而對Word、Excel文件則可直接進行讀操作。辦公文檔操作時序圖如圖3所示。
3.2.2 分享圖片時序圖
用戶對圖片進行分享時,首先通過分享界面選擇圖片所在路徑,然后獲取圖片信息進行分享,分享圖片時序圖如圖4所示。
3.2.3 發(fā)送郵件時序圖
發(fā)送郵件時通過調(diào)用發(fā)送郵件服務(wù)進行發(fā)送,發(fā)送郵件時序圖如圖5所示。
4 文件瀏覽器主要功能的開發(fā)
4.1 讀取辦公文檔的方法
讀取Word和Excel文檔時,首先將文檔的內(nèi)容寫入SD Card中,并以.html的格式進行保存,然后再通過解析HTML文檔的方法將原文檔數(shù)據(jù)讀出顯示。
以下是讀取Excel文檔的onCreate()函數(shù)代碼:
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 搖一搖截屏的實現(xiàn)
當正在運行文件瀏覽器時,無論正在打開的是哪一個界面,只要搖一搖手機則可以對手機當前屏幕顯示的內(nèi)容進行截圖,并且保存在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 多功能文件瀏覽器的應(yīng)用
多功能文件瀏覽器采用Android 4.2.2開發(fā)。系統(tǒng)的菜單列表、文件瀏覽以及音樂瀏覽界面如圖6所示。
閱讀PDF文件、掃描文檔和保存PDF界面如圖7所示。
發(fā)送郵件、文件分享以及換膚界面如圖8所示。
6 結(jié)論
本文詳細介紹了一款基于Android平臺的多功能文件瀏覽器,軟件實現(xiàn)了基本文件瀏覽、辦公文件閱讀和簡單編輯、媒體文件瀏覽、掃描文件、搖一搖截屏、發(fā)郵件、換膚等功能,該軟件達到了預(yù)期的效果并成功上線使用。
參考文獻
[1] 李冬睿,趙建保,許統(tǒng)德,等.基于Android的多人定位系統(tǒng)的設(shè)計與實現(xiàn)[J].微型機與應(yīng)用,2015,34(8):76-79.
[2] 張亞杰.基于Android平臺的移動終端應(yīng)用程序的研究與開發(fā)[D].鄭州:鄭州大學(xué),2013.
[3] 代敏.基于Android平臺下手機定位程序的設(shè)計及實現(xiàn)[J].計算機與數(shù)字工程,2012,40(4):143-145.
[4] 農(nóng)麗萍,王力虎,黃一平.Android在嵌入式車載導(dǎo)航系統(tǒng)的應(yīng)用研究[J].計算機工程與設(shè)計,2010,31(11):2473-2476.
[5] 曾曉輝,文成玉,陳超,等.基于二維碼的移動巡檢新系統(tǒng)的設(shè)計與實現(xiàn)[J].電子技術(shù)應(yīng)用,2014,40(9):122-125.
[6] 程濤,陳慧琴,孫萍,等.基于Android的手機相冊分享軟件的設(shè)計與實現(xiàn)[J].微型機與應(yīng)用,2014,33(13):1-2.
[7] 張義芳.基于Android的SD卡測試系統(tǒng)的設(shè)計和實現(xiàn)[D].廣州:廣東工業(yè)大學(xué),2014.