(北京林業(yè)大學(xué)信息學(xué)院,北京 100083)
基于Android平臺(tái)的移動(dòng)標(biāo)本館App的設(shè)計(jì)與實(shí)現(xiàn)
——以北京林業(yè)大學(xué)為例
田 萱 王 鉑 林歆睿 張海燕 陳志泊
(北京林業(yè)大學(xué)信息學(xué)院,北京 100083)
Android平臺(tái)憑借其穩(wěn)定性和開放性吸引了大量的用戶和開發(fā)者,成為了目前發(fā)展最快、用戶最多的移動(dòng)智能操作系統(tǒng)。設(shè)計(jì)并實(shí)現(xiàn)的基于Android平臺(tái)的移動(dòng)標(biāo)本館App,通過移動(dòng)設(shè)備和計(jì)算機(jī)網(wǎng)絡(luò),將各種信息數(shù)據(jù)庫互聯(lián)起來,為學(xué)生、教師、科研人員等提供更為方便實(shí)用、高效快捷的標(biāo)本查詢途徑,對(duì)加強(qiáng)標(biāo)本的信息化管理、傳播生態(tài)文明理念,具有很強(qiáng)的實(shí)踐意義。
標(biāo)本館;移動(dòng)App;Android;JSON
隨著移動(dòng)互聯(lián)網(wǎng)的快速發(fā)展,手機(jī)、pad等移動(dòng)設(shè)備產(chǎn)品在人們工作、學(xué)習(xí)、生活中已經(jīng)變得不可或缺。移動(dòng)互聯(lián)網(wǎng)中比較常見的操作系統(tǒng)有Android、IOS,而目前占市場(chǎng)份額最大、發(fā)展前景最好的是Android系統(tǒng)。據(jù)調(diào)研機(jī)構(gòu)Kantar World ComTech(簡(jiǎn)稱KWC)報(bào)告,截至2014年11月底的前3個(gè)月,Android系統(tǒng)在美國的市場(chǎng)份額為48.4%,占主導(dǎo)地位。在中國,Android系統(tǒng)的市場(chǎng)份額更是高達(dá)80.4%。
在本世紀(jì)初,曾有學(xué)者提出了“21世紀(jì)植物標(biāo)本館的發(fā)展方向是數(shù)字植物標(biāo)本館”的概念[1]。數(shù)字化標(biāo)本館,也可稱為虛擬標(biāo)本館,它采用網(wǎng)絡(luò)存儲(chǔ)技術(shù)和Web信息化系統(tǒng),對(duì)數(shù)字化以后的標(biāo)本進(jìn)行管理,并提供在線的標(biāo)本查詢及標(biāo)本館相關(guān)的多種服務(wù),將傳統(tǒng)的標(biāo)本館進(jìn)行網(wǎng)絡(luò)化、虛擬化。隨著移動(dòng)互聯(lián)網(wǎng)絡(luò)的迅速發(fā)展,基于移動(dòng)平臺(tái)開發(fā)的移動(dòng)標(biāo)本館App應(yīng)用特點(diǎn)和優(yōu)勢(shì)日益凸顯。手機(jī)攜帶方便、信號(hào)覆蓋廣、隨時(shí)隨地獲取信息,極大地拉近了用戶與信息的距離,移動(dòng)平臺(tái)的諸多優(yōu)勢(shì)將為標(biāo)本館用戶帶來更大的便利[2]。因此,在移動(dòng)設(shè)備端實(shí)現(xiàn)數(shù)字標(biāo)本館的應(yīng)用將極大地提高標(biāo)本信息管理的便利性和廣大用戶的學(xué)習(xí)使用效率。
以北京林業(yè)大學(xué)標(biāo)本館為例,設(shè)計(jì)并開發(fā)出一種基于Android平臺(tái)的移動(dòng)標(biāo)本館App,解決了用戶實(shí)時(shí)獲取標(biāo)本信息的迫切需求。它為數(shù)字化標(biāo)本信息的存儲(chǔ)、管理提供了完備的數(shù)據(jù)庫體系支撐;標(biāo)本二維碼的制作和張貼使標(biāo)本信息和標(biāo)本實(shí)體間的直接對(duì)應(yīng)辨識(shí)成為可能;物種知識(shí)的介紹和物種類別層次的加入使系統(tǒng)的知識(shí)體系得到進(jìn)一步完善。因此,移動(dòng)標(biāo)本館App既具有傳統(tǒng)數(shù)字標(biāo)本館的優(yōu)勢(shì),又具有移動(dòng)化的特點(diǎn)。它不僅為用戶提供了更為便捷的標(biāo)本查詢途徑,提高了標(biāo)本館的使用效率,拓寬了使用范圍,而且還傳播了生態(tài)文明建設(shè)理念,開拓了學(xué)習(xí)和傳播生物多樣性知識(shí)的新渠道。
和現(xiàn)有的標(biāo)本館Web系統(tǒng)端不同,移動(dòng)標(biāo)本館App是基于Android+Java EE框架開發(fā)的。Android平臺(tái)憑借其穩(wěn)定性和開放性吸引了大量的用戶和開發(fā)者,成為目前發(fā)展最快、用戶最多的移動(dòng)智能操作系統(tǒng);輕量級(jí)的Java EE平臺(tái)以其開放、穩(wěn)定、安全、高效的突出優(yōu)勢(shì)成為許多信息化需求較高行業(yè)的首選平臺(tái)。基于 Android+Java EE的系統(tǒng)架構(gòu)可同時(shí)滿足客戶端用戶體驗(yàn)和服務(wù)器端復(fù)雜信息處理功能,是移動(dòng)互聯(lián)應(yīng)用的一種較為完善的開發(fā)模式。
(一)系統(tǒng)的整體框架
系統(tǒng)整體框架是一種服務(wù)器/客戶端的模式,如圖1所示??蛻舳耸窃贏ndroid移動(dòng)平臺(tái)上安裝的移動(dòng)標(biāo)本館的App,主要提供人機(jī)交互接口,不做實(shí)質(zhì)性的業(yè)務(wù)處理工作,基本功能的實(shí)現(xiàn)主要依賴于與服務(wù)器端交互。系統(tǒng)服務(wù)器端采用Spring框架及其在其基礎(chǔ)上開發(fā)的RESTful WebServices(Representational State Transfer Web Service,表示狀態(tài)傳輸Web服務(wù)),供移動(dòng)客戶端調(diào)用訪問。
圖1 移動(dòng)標(biāo)本館App的框架結(jié)構(gòu)
(二)系統(tǒng)的功能設(shè)計(jì)
系統(tǒng)功能分為首頁、搜索模塊、二維碼模塊、分類模塊4個(gè)部分。①首頁,即基本信息介紹模塊。本館介紹和參觀須知用于介紹標(biāo)本館的相關(guān)信息,學(xué)習(xí)資源和標(biāo)本資源是搜索模塊功能的細(xì)化。②搜索模塊,分為物種搜索和標(biāo)本搜索,可供用戶直接根據(jù)標(biāo)本或物種名稱查詢所需信息。③二維碼模塊,是識(shí)別掃描標(biāo)本館內(nèi)標(biāo)本的二維碼,它可獲取標(biāo)本信息。④分類模塊,供用戶查看植物界、動(dòng)物界或菌物界物種的類別和層次。
(一)App客戶端的設(shè)計(jì)
基于Android系統(tǒng)的移動(dòng)標(biāo)本館App為滿足用戶不同需求,提供了物種/標(biāo)本信息檢索的多種入口。①學(xué)習(xí)資源。通過學(xué)習(xí)資源類別層次檢索物種信息。②標(biāo)本資源。通過標(biāo)本資源,輸入標(biāo)本名稱檢索標(biāo)本信息。③搜索。通過搜索,直接選擇要檢索的物種/標(biāo)本后,輸入物種/標(biāo)本名稱查詢??蛻舳说目刂茖右哺鶕?jù)視圖層的不同,在采集客戶數(shù)據(jù)形成URI上作了個(gè)性化的處理。不同客戶入口的界面截圖如圖2所示。
圖2 移動(dòng)標(biāo)本館App的客戶入口
(二)App客戶端主要模塊的實(shí)現(xiàn)
1.搜索模塊的實(shí)現(xiàn)
搜索模塊的實(shí)現(xiàn)流程如下。①采集客戶數(shù)據(jù)信息?!八阉鳌辈糠终狭恕皩W(xué)習(xí)資源”和“標(biāo)本資源”2部分功能。該應(yīng)用程序通過自定義控件WheelView實(shí)現(xiàn)動(dòng)物、植物、病害、菌物、昆蟲、土壤、巖石的滾動(dòng)選擇效果,同時(shí)通過給2個(gè)Button更改背景顏色和添加監(jiān)聽事件實(shí)現(xiàn)轉(zhuǎn)換選擇的效果。②Android系統(tǒng)端訪問RESTful Web服務(wù)接口。在REST(Representational State Transfer,表示狀態(tài)傳輸)框架中充分發(fā)掘HTTP(Hyper Text Transfer Protocol,超文本傳輸協(xié)議)自身的功能,并使用標(biāo)準(zhǔn)的HTTP方法對(duì)資源進(jìn)行操作。RESTful Web 服務(wù)的工作原理就是向一個(gè)資源的URI(Uniform Resource Identifier統(tǒng)一資源標(biāo)識(shí)符)發(fā)送GET(獲取)、POST(張貼)、PUT(上傳)和DELETE(刪除)等操作命令進(jìn)行獲取、創(chuàng)建、修改、刪除等操作。該應(yīng)用程序主要實(shí)現(xiàn)物種/標(biāo)本信息檢索,即GET方法。③Android系統(tǒng)解析JSON(JavaScript Object Notation,JavaScript對(duì)象描述表示)文件?;贏ndroid系統(tǒng)的移動(dòng)標(biāo)本館App提供了JSON包,封裝了對(duì)于JSON格式字符串的常用操作。這個(gè)包中主要包括了JSONString、JSONToken、JSONObject、JSONArray、JSONException等5個(gè)功能類。應(yīng)用程序中主要使用JSONObject(JSON對(duì)象)與JSONArray(JSON數(shù)組)分別對(duì)JSON對(duì)象與JSON數(shù)組進(jìn)行解析,獲取到相應(yīng)的數(shù)據(jù)之后,通過TextView的setText方法和ImageView中的setImageBitmap方法將文字和圖片顯示在客戶界面上。
2.分類模塊的實(shí)現(xiàn)
分類模塊的實(shí)現(xiàn)首先需要根據(jù)客戶需求讀取項(xiàng)目工程assets目錄下的3個(gè)文本文件,即Animal.txt、Fungi.txt和Plant.txt文件,文件記錄了標(biāo)本館現(xiàn)有標(biāo)本所對(duì)應(yīng)物種的類別層次信息;之后將讀取的字符流轉(zhuǎn)換為JSON數(shù)據(jù),通過自定義的Aapter(適配器)實(shí)現(xiàn)物種類別層次信息的顯示,實(shí)現(xiàn)流程如圖3所示。
(1)獲取選擇信息。客戶通過Spinner控件選擇標(biāo)本類型,同時(shí)移動(dòng)標(biāo)本館App獲取客戶選擇信息,系統(tǒng)通過StringBuilder和BufferedReader讀取相應(yīng)的本地文本文件,以字符串的形式返回讀取結(jié)果,移動(dòng)標(biāo)本館APP選擇類別操作界面的截圖如圖4所示。
(2)實(shí)現(xiàn)標(biāo)本分類信息層級(jí)顯示。在界面添加ListView(列表展示)控件,用列表的形式顯示標(biāo)本的類別層次信息;編寫listview_item.xml文件,用來控制ListView中每一項(xiàng)的形式及顯示的內(nèi)容。移動(dòng)應(yīng)用程序獲取從文本文件中讀取的標(biāo)本類別層級(jí)字符串,創(chuàng)建JSONObject(JSON對(duì)象),通過getJSONArray函數(shù)獲取JSONArray(JSON數(shù)組),以此為參數(shù)調(diào)用自定義的Aapter(適配器)接口,更新ListView。
(一)服務(wù)器端的設(shè)計(jì)
服務(wù)器端主要采用Spring框架來實(shí)現(xiàn)[3-4],并選用JSON作為數(shù)據(jù)傳輸媒介。Spring是一個(gè)得到廣泛應(yīng)用的Java EE框架,支持用@RequestMa-pping和@PathVariable等注釋進(jìn)行資源標(biāo)識(shí)和URI映射。JSON(JavaScript Object Notation)是基于JavaScript Programming Language(JavaScript 編程語言)的一個(gè)子集,一種輕量級(jí)的數(shù)據(jù)交換語言,具有良好的可讀與便于編寫的特性[5-6],同時(shí)也方便了機(jī)器進(jìn)行解析和生成,是一種理想的數(shù)據(jù)交換語言。服務(wù)器端主要分為應(yīng)用層、資源層、功能層、數(shù)據(jù)層4部分,其4層架構(gòu)如圖5所示。
圖3 移動(dòng)標(biāo)本館App客戶端分類模塊的實(shí)現(xiàn)流程
圖4 移動(dòng)標(biāo)本館App客戶端選擇類別的操作界面
(1)應(yīng)用層。應(yīng)用層主要是形成用戶所需資源的URI,提交客戶端App返回請(qǐng)求。
(2)資源層。資源層由URI和資源組成,通過對(duì)外公布標(biāo)本館資源的URI來發(fā)布服務(wù),同時(shí)資源層接受用戶請(qǐng)求,分析HTTP請(qǐng)求的方法類型,并調(diào)用功能層方法,將返回的數(shù)據(jù)用JSON封裝后返回給用戶。資源層是整個(gè)標(biāo)本館系統(tǒng)的中心,是接受和響應(yīng)請(qǐng)求的接口,也是用戶提交請(qǐng)求和接收數(shù)據(jù)的接口,體現(xiàn)了RESTful WebServices以資源為中心的特點(diǎn)。
圖5 移動(dòng)標(biāo)本館App服務(wù)器端的框架結(jié)構(gòu)
(3)功能層。功能層響應(yīng)資源層的方法調(diào)度,并執(zhí)行相應(yīng)的方法,實(shí)現(xiàn)與數(shù)據(jù)層的通信,同時(shí)將得到的數(shù)據(jù)返回給資源層。
(4)數(shù)據(jù)層。數(shù)據(jù)層由數(shù)據(jù)庫和數(shù)據(jù)訪問接口組成,數(shù)據(jù)訪問接口定義了對(duì)數(shù)據(jù)庫記錄的操作。
(二)服務(wù)器端的實(shí)現(xiàn)
服務(wù)器端的實(shí)現(xiàn)首先需要配置web.xml和herbariumuseum-servlet.xml兩個(gè)系統(tǒng)文件,在文件中聲明DispatcherServlet(適配器程序)攔截匹配用戶自定義規(guī)則的用戶請(qǐng)求,并設(shè)置HttpMessageConverters(Http消息轉(zhuǎn)換器)使用JSON數(shù)據(jù)作為傳輸媒介,其交互流程如圖6所示。其中應(yīng)用層主要負(fù)責(zé)接收客戶端請(qǐng)求并將請(qǐng)求轉(zhuǎn)發(fā)至資源層,后臺(tái)數(shù)據(jù)庫采用Oracle數(shù)據(jù)庫存儲(chǔ)數(shù)據(jù)。而資源層、功能層和數(shù)據(jù)層負(fù)責(zé)后臺(tái)數(shù)據(jù)的處理和交互,是服務(wù)器端技術(shù)實(shí)現(xiàn)的重點(diǎn),因此下面主要介紹這3層的具體實(shí)現(xiàn)問題。
(1)數(shù)據(jù)層的實(shí)現(xiàn)。移動(dòng)標(biāo)本館App后臺(tái)使用Spring框架中的數(shù)據(jù)庫連接類JdbcTemplate(Java Data Base Connectivity Template,Java數(shù)據(jù)庫連接模板)以簡(jiǎn)化傳統(tǒng)JDBC數(shù)據(jù)庫操作的復(fù)雜性和繁瑣性。JdbcTemplate類由core、datasource、object和support等4個(gè)不同的包組成,使用模板方式封裝了JDBC數(shù)據(jù)庫操作。它需在herbariumuseum-context.xml文件中進(jìn)行配置,首先配置一個(gè)Oracle的數(shù)據(jù)源,然后將這個(gè)數(shù)據(jù)源配置到JdbcTemplate里,接著將JdbcTemplate配置進(jìn)功能層即可。
(2)功能層的實(shí)現(xiàn)。移動(dòng)標(biāo)本館App對(duì)數(shù)據(jù)庫表中的相應(yīng)記錄進(jìn)行了持久化封裝,并將其映射為PO(Plain java Object)類。PO類由和數(shù)據(jù)表字段相對(duì)應(yīng)的屬性以及對(duì)應(yīng)屬性的SET和GET方法組成,并根據(jù)移動(dòng)應(yīng)用程序需要實(shí)現(xiàn)了List
圖6 移動(dòng)標(biāo)本館App服務(wù)器端的實(shí)現(xiàn)流程
(3)資源層的實(shí)現(xiàn)。利用Spring REST的注釋特性實(shí)現(xiàn)URI,使用@Controller注釋類在服務(wù)器的4層架構(gòu)中充當(dāng)控制器并處理HTTP請(qǐng)求;使用@ RequestMapping注釋方法用于指定所注釋的方法將處理哪個(gè)HTTP請(qǐng)求,并根據(jù)客戶端的需求實(shí)現(xiàn)響應(yīng)用戶物種類別層次請(qǐng)求的控制器ClassifiController、響應(yīng)用戶物種或標(biāo)本詳細(xì)信息請(qǐng)求的控制器DetailController、物種或標(biāo)本圖片信息請(qǐng)求的控制器ImgController、物種或標(biāo)本關(guān)鍵信息請(qǐng)求的控制器IntroController的響應(yīng)。
本文所研究的基于Android系統(tǒng)的移動(dòng)標(biāo)本館App,除具備普遍意義的標(biāo)本知識(shí)檢索功能、普及生物多樣性知識(shí)的突出特征外,還為教學(xué)提供輔助功能。移動(dòng)標(biāo)本館App部分界面截圖如圖7所示。
圖7 移動(dòng)標(biāo)本館App結(jié)果展示的部分界面
教學(xué)實(shí)際應(yīng)用效果表明,該應(yīng)用程序知識(shí)性強(qiáng),知識(shí)體系較為完善,文字內(nèi)容詳實(shí),圖片精美,功能模塊設(shè)計(jì)合理,實(shí)際應(yīng)用中的準(zhǔn)確性和穩(wěn)定性較好。
該移動(dòng)標(biāo)本館App不僅能夠?yàn)閷W(xué)生、教師、科研人員等提供更為方便實(shí)用、高效快捷的標(biāo)本查詢途徑,而且還對(duì)傳播生態(tài)文明理念具有很強(qiáng)的實(shí)踐意義。
[1] 陳三茂,田曄林.21世紀(jì)植物標(biāo)本館的發(fā)展方向——數(shù)字植物標(biāo)本館[J].北京農(nóng)學(xué)院學(xué)報(bào),2003,18(3):208-210.
[2] FIELDING R T.Architectural styles and the design of net-work-based software architectures [D].Irvine, California:University of California, Irvine, 2000:44-47.
[3] 計(jì)文柯.Spring技術(shù)內(nèi)幕:深入解析Spring 架構(gòu)與設(shè)計(jì)原理[M].北京:機(jī)械工業(yè)出版社,2010:121-134.
[4] 吳艾.XML網(wǎng)頁編程教程[M].北京:希望電子出版社,2001:39-42.
[5] 張濤,黃強(qiáng),毛磊雅,等.一個(gè)基于JSON 的對(duì)象序列化算法[J].計(jì)算機(jī)工程與應(yīng)用,2007,43(15):98-100.
[6] 胡文發(fā),白中英.基于J2EE/J2ME 的JSON 數(shù)據(jù)交換的探討[J].電子設(shè)計(jì)工程,2009,17(12):102-103.
(責(zé)任編輯 孫艷玲)
2013年北京高等學(xué)校教育教學(xué)改革項(xiàng)目“以程序設(shè)計(jì)與軟件開發(fā)能力為主的應(yīng)用型計(jì)算機(jī)專業(yè)核心課程體系改革與教學(xué)資源建設(shè)”;北京市大學(xué)生創(chuàng)新創(chuàng)業(yè)訓(xùn)練項(xiàng)目“北京林業(yè)大學(xué)移動(dòng)標(biāo)本館的研究和建設(shè)”,項(xiàng)目編號(hào)S201410022071。