摘 要: 針對目前大多數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.