(廣西廣播電視技術中心)
在今天,隨著網(wǎng)絡技術的成熟和廣泛應用,智能手機可實現(xiàn)信息的快速準確輸入,并通過網(wǎng)絡與管理系統(tǒng)進行數(shù)據(jù)交互,手機由單一的通信終端發(fā)展成為互聯(lián)網(wǎng)終端,越來越多的互聯(lián)網(wǎng)應用被移植到智能手機中,使人類的生活更加信息智能化。一直以來,原來的web網(wǎng)盤系統(tǒng)都只能通過電腦終端訪問,有明顯的約束性。本項目研發(fā)的基于Android的網(wǎng)盤移動客戶端平臺,就是通過Web Service接口實現(xiàn)與web系統(tǒng)的數(shù)據(jù)交互和同步,用戶能夠隨時隨地使用安卓手機登錄本客戶端對文件進行上傳、下載、刪除、移動、復制、在線閱讀等操作,實現(xiàn)了真正的掌上移動辦公。
Java是一種跨平臺、面向對象的高級語言,是現(xiàn)在最流行的網(wǎng)絡編程語言。具有平臺無關、分布式、安全性、多線程等特殊的優(yōu)點。它是純面向對象的語言,支持對象和類的概念,支持類的單繼承。Java引入了“包”這個概念,通過包管理程序中的類。 用Java編寫的程序,可以運行在任何平臺和設備上,真正實現(xiàn)“一次編寫,到處運行”。
Web Service是為不同平臺、不同語言開發(fā)的應用之間的交互而設計的遠程調(diào)用技術,是一個平臺獨立的,低耦合的,自包含的、基于可編程的web的應用程序,通過SOAP在Web上提供軟件服務,使用WSDL文件進行說明,并通過UDDI進行注冊,采用XML格式封裝數(shù)據(jù),能夠實現(xiàn)跨語言、跨網(wǎng)絡,跨平臺的互操作性。依據(jù)Web Service規(guī)范實施的應用之間,無論它們所使用的語言、平臺或內(nèi)部協(xié)議是什么,都可以相互交換數(shù)據(jù)。本項目研發(fā)的基于Android的網(wǎng)盤移動客戶端平臺與web項目的數(shù)據(jù)交互就是通過Web Service接口實現(xiàn)的。
Android是一種基于Linux的自由及開放源代碼的操作系統(tǒng),該系統(tǒng)有四大組件,一是活動(Activity),它是所有Android應用的門面,用于存放在應用中所有看得到的東西。二是服務(Service),運行在程序后臺,并且可以和其他組件進行交互。三是廣播接收器(Broadcast Receiver),負責廣播接收和發(fā)送。四是內(nèi)容提供器(Content Provider),為應用程序之間提供共享數(shù)據(jù)功能。除了四大組件,還有豐富的系統(tǒng)控件、地理位置定位以及強大的多媒體功能等特色,Android是目前全球最受歡迎的智能手機平臺。
要實現(xiàn)用戶登錄、上傳、下載、刪除、移動、復制、在線閱讀等功能,具體功能如下:
1.登錄:用于給用戶進行登錄,用戶必須輸入正確的用戶名和密碼,才能夠進行登錄,用戶可以選擇自動登錄和記住密碼功能。
2.上傳:用于可以打開目錄選擇文件進行上傳,也可以在別的app里選擇文件分享到網(wǎng)盤app進行上傳。
3.下載:用戶可以選擇文件進行下載。
4.刪除:用戶可以對文件和文件夾進行刪除
5.移動:用戶可以對文件進行移動,即把文件從一個文件夾移動到另一個文件夾。
6.復制:用戶可以對文件進行復制,即把文件從一個文件夾復制到另一個文件夾。
7.在線閱讀:用戶可以在線打開常用文件。
圖1 網(wǎng)盤app流程圖
用戶訪問系統(tǒng)可以進行登錄、上傳、下載、刪除、移動、復制、在線閱讀等功能,系統(tǒng)的流程圖如圖1所示。
為了能夠更清晰地表現(xiàn)出整個過程,畫出事件跟蹤圖,如圖2所示。
Web Service接口通過IIS服務發(fā)布之后,客戶端通過httpsoap方式訪問,服務端按SOAP消息執(zhí)行相應的Web服務,并將數(shù)據(jù)以結構化的JSON格式返回給客戶端, 客戶端通過GSON庫快速解析JSON數(shù)據(jù),最后把數(shù)據(jù)渲染到可視化界面。
RecyclerView是 增 強 版 的ListView,優(yōu)化了ListView中存在的各種不足之處,它比ListView更加強大、更加靈活、擴展性更好,運行效率更高。因此本客戶端選擇使用RecyclerView來顯示文件列表。由于數(shù)據(jù)無法直接傳遞給RecyclerView,所以需要借助適配器來完成,適配器的實現(xiàn)類RecyclerView.Adapter可以通過泛型來指定要適配的數(shù)據(jù)類型??梢酝ㄟ^調(diào)用setAdapter()方法將構建好的適配器對象傳遞到RecyclerView。到此,RecyclerView和數(shù)據(jù)之間的關聯(lián)成功建立。
本客戶端通過集成TBS的SDK實現(xiàn)在線打開常用文件的功能,具有速度快、兼容好、更安全、更穩(wěn)定等優(yōu)點。 客戶端首先本地判斷文件是否能夠打開,再調(diào)用Web Service接口請求服務器上的文件進行緩存,最后加載瀏覽插件打開文件。
發(fā)起網(wǎng)絡請求是一個耗時的操作,為了避免主線程被阻塞而影響用戶對軟件的正常使用,應該將這類耗時操作放到子線程里運行。AsyncTask是一個非常好用的工具類,它將異步消息處理機制完美封裝,更加方便地實現(xiàn)了在子線程中對UI進行操作。由于AsyncTask是一個抽象類,因此必須要創(chuàng)建子類去繼承它才可以使用,同時還需要重寫里面的方法才能完成對任務的定制。通常需要重寫的方法有以下四個:
1.nPreExecute() :此方法會在后臺任務執(zhí)行前被調(diào)用,用于進行一些初始化工作。
2.doInBackground(Params… params) :此方法的所有代碼都在子線程中執(zhí)行,我們應該在這里去處理所有的耗時任務。
3.onProgressUpdate(Progress…): 由publishProgress內(nèi)部調(diào)用,表示任務進度更新。
4.onPostExecute(Result result):此方法會在后臺任務執(zhí)行完畢后被調(diào)用,參數(shù)即為后臺任務的返回結果,可以利用結果來更新UI。
上傳和下載都需要訪問手機存儲權限。
圖2 網(wǎng)盤app事件跟蹤圖
上傳是采用分片上傳的方法,結合Web Service接口實現(xiàn)將文件上傳到web服務器的功能。上傳可分為本地上傳和分享上傳。本地上傳通過調(diào)用手機的文件管理器打開本地目錄選擇文件上傳。分享上傳使用Intent.ACTION_SEND來實現(xiàn)接收分享功能,通過編寫接收分享的接口來實現(xiàn)文件的上傳,該功能可以在別的app里選擇文件,然后通過分享功能把文件分享到本客戶端進行上傳。
下載是通過調(diào)用手機的下載管理器進行文件下載,通過廣播監(jiān)聽下載情況并發(fā)送廣播告知用戶是否完成下載。
SharedPreferences是Android平臺上一個輕量級的存儲類,用來保存應用的一些常用配置。它使用鍵值對的方式存儲數(shù)據(jù),支持多種不同的數(shù)據(jù)類型存儲。本客戶端使用SharedPreferences來實現(xiàn)自動登錄和記住密碼功能的功能,結合AES加密算法來存儲用戶名和密碼,保證了信息安全。
用戶登錄主要是對用戶輸入的用戶名密碼進行驗證,如果用戶選擇自動登錄和記住密碼,下次打開app時就直接跳過登錄頁面。
主界面是用戶登錄以后進入的界面,用于展示文件列表,用戶可以在這個界面對文件進行各種文件操作,比如上傳、下載、刪除等。用戶點擊文件夾可以進入該文件夾,點擊上級文件或按返回鍵可以返回上級文件夾。
點擊復選框可以批量對文件進行相應的操作。點擊“全選”按鈕可以選擇所有文件,點擊“取消”則取消選擇所有文件。
只有文件被選中的時候頂部的操作菜單才會顯示,否則不顯示。用戶選中文件進行復制或者移動時,可以選擇粘貼到那個文件夾,過程如圖3所示,圖3(1)是未選中文件時顯示的界面,圖3(2)是選中文件時顯示的界面,圖3(3)是移動或復制文件時顯示的界面。
當用戶想要切換賬號或者退出時,可以左滑選擇注銷或者退出,注銷則返回到登錄頁,退出則是退出該應用。
本系統(tǒng)是一個將各種最熱門的IT技術進行有機整合而實現(xiàn)的一個網(wǎng)盤手機客戶端,可以提供一種全新的在線使用網(wǎng)盤的體驗,大大提高了工作的靈活性。
圖3 文件移動或復制的過程圖