999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于Android系統的手機文件管理器的設計與實現

2012-11-26 07:10:42周榮輝
鐵路計算機應用 2012年9期
關鍵詞:界面用戶系統

陳 煜,周榮輝

(西南交通大學 信息科學與技術學院,成都 610031)

在移動終端技術與互聯網不斷發展與融合的今天,手機已從簡單的通話工具發展為集PDA、互動游戲、高分辨率攝像、移動視聽于一體的全功能通信、數據處理工具,手機上的信息存儲量也越來越多。但Android平臺自身并不提供資源管理器功能,提供的應用程序接口(API)很簡單。因此,需要開發實用的Android手機文件管理器,以滿足廣大用戶對資源管理的需求。

1 系統總體設計

Android是基于Linux 2.6內核的開源手機操作系統,其全面的計算服務和豐富的功能支持,完全有能力擴展到移動電話市場以外,發展前景非常廣闊。

1.1 系統架構層次介紹

Android 的系統架構主要分為4層[1],從高到低分別是:(1)由運行在Dalvik 虛擬機上的應用程序組成的應用層;(2)由開發人員可以直接調用的組件所組成的應用框架層;(3)對應用框架層提供支撐的系統運行庫層;(4)包括驅動模型、內存管理、進程管理、網絡協議棧等組件的Linux內核層,它依賴于 Linux 2.6 內核,也同時作為硬件和軟件棧之間的抽象層。根文件系統使用rootfs,數據及文件使用yaffs2,是專門為NAND和NOR存儲器設計驅動的文件系統。文件管理器在整個Android系統架構中的層次如圖1。

圖1 文件管理器在整個系統中的架構層次

1.2 文件管理器的功能及開發環境

類似于PC中的資源管理器,為實現用戶對于手機文件資源管理的需求,手機文件管理器需要實現的功能主要有文件系統瀏覽,目錄跳轉,對文件執行復制、移動等文件管理操作,調用其他應用對特定文件執行相關操作,文件搜索,文件管理器參數設置及其它設置桌面快捷方式、設置鈴聲等輔助功能。文件管理器的手機用戶用例圖如圖2。

圖2 手機用戶用例圖

本應用基于Android SDK 2.1 平臺,以Eclipse為集成開發環境,選擇Android上層應用開發通用的Java語言,通過Android SDK自帶的adb工具和emulator模擬器實現程序的調試和運行。

2 系統功能的設計與實現

2.1 文件管理器Activity的設計

根據系統的功能需求,文件管理器主要由3個界面組成,它們分別是作為應用主界面的FilerActivity、進行參數設置的FilerPreferences-Activity以及進行文件搜索的SearchActivity。

listview 是Android開發中最常用的組件之一,它通過一個適配器(adapter)以列表項的形式顯示指定的數據,通過使FilerActivity繼承自ListActivity,可以滿足用戶方便直觀地瀏覽Android文件系統內容的要求。適配器是用來把數據映射到listview上的中介,通過setListAdapter()函數可以實現當前listview與指定適配器的聯系。為了更靈活地實現本應用中界面的自定義效果,在FilerActivity活動中定義一個繼承自Android.ArrayAdapter的適配器FileListAdapter,在其中的構造函數中指定主界面listview中每一行布局的xml文件,同時新建getView()函數以覆蓋父類中的同名函數,在其中實現布局id與指定資源數據的綁定,使主界面上顯示達到的效果。

通過對Android listview的分析可以發現[2],listview的顯示是以行為單位進行的,而整個屏幕列表項的顯示是由RelativeLayout.onLayout()函數中的for循環來控制實現的。在一次循環的執行過程中,會依次調用ListView.makeAndAddView()、AbsListView.obtainView()、Adapter.getView()等函數,最后調用執行文件管理器程序中自定義的getView()函數,覆蓋了父類listview中布局id與資源文件的綁定操作,這也是在程序開發中重寫適配器及getView()函數的目的,如圖3。

圖3 listview創建過程中的函數調用關系

在應用實現中,無論是文件系統不同目錄之間的跳轉,還是從其他界面的返回,或是對SD卡狀態的動態響應,都需要及時刷新文件管理器界面,同樣也會多次間接地調用自定義的getView()函數。如前所述,listview通過for循環完成當前界面上多個view的填充操作后,隨著一些后續工作的完成,就可以看到文件系統中當前目錄下的內容,如圖4。文件管理器此時進入消息循環狀態,用戶可能的下一步操作及對應的處理函數如表1。

選項菜單(OptionsMenu)和上下文菜單(ContextMenu)是Android開發中最常見的元素,為某些操作提供了合適的入口。開發人員只需預先設計好相應的菜單選項,以xml文件的形式存放,在隨后執行系統回調函數的過程中進行有選擇的顯示菜單項即可。相比而言,ContextMenu更適合設置一些與單個view項操作相關的菜單項,OptionsMenu適合設置一些與整體相關的選項。在這里,可以把文件重命名、查看屬性、設置鈴聲等操作放在ContextMenu中實現,而搜索文件、排序設置等操作就由OptionsMenu來完成。

圖4 文件管理器主界面效果圖

表1 用戶的界面操作與對應的處理函數

在Android本身的實現中,大量用到了PreferenceActivity對系統進行信息配置和管理。文件管理器的開發中,也同樣使用FilerPreferences-Activity為用戶提供參數設置的接口。它的布局文件放在固定的路徑res/xml下。由FileActivity中OptionsMenu中的一個菜單項來啟動。

另外,文件管理器還提供了文件搜索的功能,即能夠根據關鍵字依次匹配指定目錄下的文件/文件夾名稱,并以列表形式顯示出搜索的結果,該功能由SearchActivity來實現。Android的搜索功能能夠幫助開發者很好地管理搜索對話框,使開發人員不需要自己去開發一個搜索框,不需要考慮把搜索框放在什么位置、搜索框是否會影響當前的界面等不重要的細節問題,所有這些工作都由搜索管理器(SearchManager)來輔助實現。當在Android搜索欄中輸入關鍵字執行搜索操作時,搜索管理器將使用一個專門的Intent“android.intent.action.SEARCH”,將它傳給在配置文件Android-Manifest.xml中聲明的處理搜索結果的activity,即本應用中的SearchActivity。通過get-Intent().getStringExtra()函數即可獲得用戶輸入的關鍵字,然后按關鍵字執行搜索操作,并以列表形式顯示出得到的結果。在程序中建立了int類型的變量mFileNumber來記錄已找到搜索目標個數,用ArrayList 類型的變量mSearchedFiles記錄找到的每個目標的路徑信息。整個搜索的大致流程如圖5。

圖5 文件搜索過程流程圖

2.2 各應用界面之間的轉換

Android應用開發中,每一個界面即對應著一個activity。用戶在使用手機軟件時,需要在不同的界面之間來回轉換。相對應的程序中的每一個activity都有開始和結束的過程。

可以在配置文件AndroidManifest.xml中聲明應用包含的所有活動及每個活動所要響應的intent,然后在程序中需要的地方用startActivity()函數向系統發送指定的intent,由系統啟動合適的活動響應intent。在程序中,用Activity.finish()函數結束當前活動,由活動管理器(Activity Mana-ger)確定下一個進程的到來。在文件管理器的整個應用中,各個activity之間的轉換如圖6。步操作。

圖7 文件復制操作時序圖

表2 程序調用文件管理的主要系統函數

另外,在設計中,還應該把對文件進行處理的過程放在一個新建的子線程中執行,以取得較好的界面顯示效果。

控制部分的文件復制操作時序圖如圖7。

圖6 應用中各個activity之間的轉換

2.3 文件管理功能的實現

本應用要實現的文件管理功能主要有單個或批量文件的移動、復制、重命名等操作。針對應用的具體情況,在界面底部建立了一個工具欄(包括yankbar、copybar、movebar),配合listview中各行的icon按鈕,更方便地完成對文件管理的大部分操作。

MVC(Model-View-Controller)是當前比較流行的軟件開發框架,它的思想與觀察者模式類似。Android項目整體就是一種典型的MVC結構,其中廣泛使用的xml布局文件即是view,activity和intent,起到了控制器的作用,提供者對數據層做了良好的封裝,而且提供者把數據管理的范疇從數據庫泛化到了數據的概念[3]。通過使用MVC模式,可以使文件管理器的界面設計工作和文件系統相關處理操作相互獨立,讓界面的設計更加靈活,文件管理功能也可以進行模塊化的開發。同時也能夠使開發人員專心處理前端界面顯示與后臺文件系統數據之間的關系,設計出高效穩定的程序。

就本應用來說,可以事先單獨設計好每個界面布局的xml文件并根據實際情況進行修改和調整,文件的復制、移動等調用系統文件操作函數接口的后臺操作就是邏輯模型部分,控制部分表現在各個activity的生命周期中控制應用界面的各種邏輯切換,以及相關數據結構的變化,調用對應的處理函數等。文件管理操作中,控制部分的界面變化比較復雜,如在選取或取消要操作的目標文件、進入新的目錄選擇文件、在執行復制或移動等操作的過程中、文件管理操作成功或失敗的處理并返回等等情況,listview界面及底部的操作工具欄都要隨之刷新并正確地顯示,指示用戶進行下一

在程序中,建立了File類型的全局變量mCur-Dir,存放將要進入或正在顯示的目錄信息;ArrayList 類型的全局變量mCurFiles存放將要顯示或正在顯示的目錄中的文件列表;ArrayList 類型的全局變量mYanked存放即將執行復制/移動等操作的文件路徑集合;Stack類型的變量 mPathHistory存放操作過程中的目錄歷史路徑;boolean 類型變量incopymove作為應用,存放是否正處于即將復制/移動文件的狀態標志。文件管理操作執行的過程中所調用的主要系統函數如表2。

2.4 應用中相關數據的存儲

在文件管理器的數據存儲中,使用了Android的3種數據存儲方式:SharePreference、SQLite和ContentProvider。

SharePreferenc常用于存儲較簡單的參數設置,文件管理器中FilerPreferencesActivity活動就是用這種方式,通過preferences.xml文件來持續化應用配置信息的。當應用剛安裝好第一次運行時,配置文件為空,使用默認的數據給參數賦值,對應用進行配置,當執行FilerPreferences-Activity活動中的addPreferences-FromResource(R.xml.preferences)后,將在/data/data/chenyu.filemanage.filer/中建立一個以應用包名為前綴的preferences.xml文件,保存應用的配置數據信息,可以通過adb工具查看文件的內容,如圖8。

圖8 用adb工具查看配置文件內容

在使用文件管理器的過程中,用戶可以通過FilerPreferencesActivity的界面對參數設置的內容進行查看或修改。應用在activity退出時對相關的配置信息數據進行提交,保存在preferences.xml文件中,使用戶的設置在下次使用應用時依然有效。

文件管理器中使用的SQLite數據庫保存的信息為每種類型文件的幾個屬性(extension,mimetype,icon, action等)的對應關系,數據庫文件位于/data/data/chenyu.filemanage.filer/lib中。在應用中主要有2個地方要對數據庫進行查詢使用。(1)listview的界面顯示,雖然每一行view由適配器確定的布局都是一樣的,但實現時也要根據不同文件的類型,顯示不同的資源標示圖片以對不同類型的文件進行區分;(2)在對特定文件執行打開操作時,需要向系統發送包括type、action等參數在內的intent消息,這些信息也都需要查詢數據庫得到。

文件管理器中已經事先設置了比較多的數據庫元組,它涵蓋了如今大部分常見的手機文件類型,用戶也可以在設置界面中添加或修改對應的文件屬性信息。

在SQLite數據庫的操作中使用了Content-Provider和ContentResolver,嚴格來說,它并不是真正的實現數據存儲,而是一種提供數據共享及訪問的手段。在自定義的繼承自ContentProvider的類中封裝好了數據庫中的數據,同時重新定義了插入、刪除、查詢等成員函數,對外提供一個公共的統一資源標示符(URI)。其他需要訪問數據的地方就可以通過ContentResolver函數,傳入這個URI,對數據進行訪問。通過研究程序源碼可以發現,ContentResolver的數據獲取方法,如query(),調用的還是對應ContentProvider的query()方法。而ContentProvider的query()為抽象方法,我們在自定義的子類中已經重寫了該成員函數方法,這樣,當調用ContentResolver.query()方法時,執行的還是應用中自己寫的MimeProvider.query方法。也就是說,我們在定義數據提供者MimeProvider的同時也定義了外界訪問這個封裝數據集的接口,只不過這些已定義訪問的方法是由Content-Resolver的成員函數間接調用而已。

3 結束語

本文從實際應用出發,設計了一款實用、高效的手機文件管理器。通過靈活運用Android開發的相關技術,成功解決了實現過程中遇到的技術問題,也為同類Android應用開發提供了較好的參考。Android的開源為開發人員解決各種問題提供了極大的方便,隨著手機廠商不斷的加入Android陣營和用戶使用量的日益增多,Android應用開發的明天將會更加美好。

[1]楊豐盛. Android技術內幕:系統卷[M]. 北京:機械工業出版社,2011.

[2]Fan Jiang, Shaoping Ku.How to Display the Data from Database by ListView on Android[C]. 2nd International Workshop on Intelligent Systems and Applications, 2010:1-4.

[3]Hyun Jung La,Soo Dong Kim.Balanced MVC Architecture for Developing Service-Based Mobile Applications[C].7th International Conference on e-Business Engineering , 2010:292-299.

[4]王世江,余志龍,陳昱勛,鄭名杰. Google Android SDK開發范例大全[M]. 2版 北京:人民郵電出版社,2010.

猜你喜歡
界面用戶系統
Smartflower POP 一體式光伏系統
工業設計(2022年8期)2022-09-09 07:43:20
WJ-700無人機系統
ZC系列無人機遙感系統
北京測繪(2020年12期)2020-12-29 01:33:58
國企黨委前置研究的“四個界面”
當代陜西(2020年13期)2020-08-24 08:22:02
基于FANUC PICTURE的虛擬軸坐標顯示界面開發方法研究
連通與提升系統的最后一塊拼圖 Audiolab 傲立 M-DAC mini
關注用戶
商用汽車(2016年11期)2016-12-19 01:20:16
人機交互界面發展趨勢研究
關注用戶
商用汽車(2016年6期)2016-06-29 09:18:54
關注用戶
商用汽車(2016年4期)2016-05-09 01:23:12
主站蜘蛛池模板: 波多野结衣在线se| 欧美不卡二区| 亚洲无码视频一区二区三区 | 就去吻亚洲精品国产欧美| 丁香六月激情综合| 免费观看精品视频999| 尤物视频一区| 91视频国产高清| 黄网站欧美内射| 亚洲综合香蕉| 就去色综合| 免费看美女自慰的网站| 免费国产无遮挡又黄又爽| 精品乱码久久久久久久| 国产无码在线调教| 久久国产精品无码hdav| 91福利国产成人精品导航| 奇米影视狠狠精品7777| 国产成人乱无码视频| 成人福利一区二区视频在线| 9啪在线视频| 国产女人在线观看| 国产欧美日韩专区发布| 在线观看亚洲天堂| 一区二区三区高清视频国产女人| 国产噜噜噜| 亚洲精品午夜天堂网页| 99视频精品在线观看| 亚洲日韩图片专区第1页| 亚洲嫩模喷白浆| 91精品啪在线观看国产60岁| av尤物免费在线观看| 日本中文字幕久久网站| 久草视频一区| 福利小视频在线播放| 91久久偷偷做嫩草影院免费看| 色偷偷一区| 国产一区二区在线视频观看| 亚洲欧洲免费视频| 中文字幕人妻av一区二区| 国产区精品高清在线观看| 国产jizz| 亚洲区视频在线观看| 丁香五月激情图片| 91久久夜色精品国产网站| 99视频只有精品| 久久免费成人| 日韩欧美中文字幕在线韩免费| 欧美精品在线视频观看| h网址在线观看| 永久免费无码日韩视频| 亚洲欧美不卡视频| 亚洲欧美人成电影在线观看| 欧美日韩一区二区在线免费观看| 亚洲动漫h| 热热久久狠狠偷偷色男同| 国产成人毛片| 国产免费网址| 亚洲国产精品日韩欧美一区| 亚洲成A人V欧美综合天堂| 久久国产精品嫖妓| 中文字幕无码中文字幕有码在线| 国产自无码视频在线观看| 国产精品自在拍首页视频8| 国产福利一区二区在线观看| 亚洲天堂啪啪| 国产日本欧美在线观看| 亚洲国产中文精品va在线播放| 福利片91| 欧美中文字幕在线播放| 伊人五月丁香综合AⅤ| 国产高潮视频在线观看| 国产麻豆精品手机在线观看| 国产福利观看| 精品国产自在现线看久久| 国产99视频精品免费观看9e| 欧美激情综合一区二区| 国产成人福利在线| 黄色成年视频| av无码一区二区三区在线| 亚洲一区二区约美女探花| 欧美国产日产一区二区|