摘 要: 基于NetBeans IDE 6.5開發(fā)環(huán)境,,采用客戶機(jī)/服務(wù)器結(jié)構(gòu),,利用J2ME技術(shù)、SVG技術(shù)及PUSH技術(shù),,針對高校學(xué)生借閱書籍開發(fā)的手機(jī)終端應(yīng)用程序軟件,闡述了移動應(yīng)用程序的開發(fā)過程。
關(guān)鍵詞: 移動圖書館,; J2ME,; SVG,; PUSH
隨著互聯(lián)網(wǎng)和移動通信技術(shù)的不斷發(fā)展,全球進(jìn)入了信息化時代,,人類的通信方式發(fā)生了根本性的改變,,網(wǎng)絡(luò)和手機(jī)成為越來越普遍的通信工具。越來越多的手機(jī)增值服務(wù)應(yīng)運(yùn)而生,,一種嶄新的以手機(jī)為移動終端的數(shù)字圖書館服務(wù)方式也悄然興起,。這種基于圖書館的手機(jī)增值服務(wù),即“手機(jī)圖書館”作為一個概念被提出來,,并逐漸成為圖書館繼網(wǎng)絡(luò)服務(wù)之后的新興服務(wù)領(lǐng)域[1-3],。
1 系統(tǒng)分析
手機(jī)圖書館是在無線通信網(wǎng)絡(luò)環(huán)境下對數(shù)字圖書館服務(wù)功能的進(jìn)一步延伸,其實(shí)現(xiàn)的三個基本組成部分為手機(jī)終端,、無線互聯(lián)網(wǎng),、數(shù)字圖書館系統(tǒng)。系統(tǒng)采用基于J2ME嵌入式軟件的實(shí)現(xiàn)方式,。
1.1 J2ME體系結(jié)構(gòu)
J2ME是SUN公司針對嵌入式,、消費(fèi)類電子產(chǎn)品推出的開發(fā)平臺,可將手機(jī)圖書館系統(tǒng)設(shè)計(jì)成一個可在手機(jī)上安裝的客戶端軟件,,讀者可以通過該軟件訪問圖書館提供的無線移動服務(wù)功能[4-5],。
J2ME定義了一種靈活的層次結(jié)構(gòu)來規(guī)范眾多的移動設(shè)備,不同層次的規(guī)范相互協(xié)作來提供一個完整的移動JAVA平臺,。J2ME定義的移動JAVA平臺分為四層:主機(jī)操作系統(tǒng),、配置(Configuration)、簡表(Profiles)和廠商可選包,。其體系結(jié)構(gòu)如圖1所示,。
其中,配置是將基本運(yùn)行環(huán)境定義為一組核心類和一個運(yùn)行在特定類型設(shè)備上的特定的JVM[6],。簡表定義了應(yīng)用程序所支持的設(shè)備類型,。特別地,它向J2ME配置添加了特定域的類來定義設(shè)備的某種作用,,它建立在配置的頂部,。廠商可選包指的是由廠商提供給程序開發(fā)人員的一組與其他規(guī)范沒有任何依賴性的類庫,開發(fā)人員可以利用這一類庫來開發(fā)出具有特定功能的應(yīng)用程序,。
1.2 功能需求分析
根據(jù)調(diào)查與研究,,考慮目前中國移動通信的發(fā)展和主流手機(jī)設(shè)備的狀況,系統(tǒng)主要提供用戶登錄,、修改密碼,、設(shè)置還書提醒、書籍檢索,、預(yù)約與取消預(yù)約圖書,、續(xù)借書籍,、查看用戶信息和服務(wù)信息及幫助等功能。移動圖書館需求的總體用例圖如圖2所示,。
系統(tǒng)主要功能如下:
(1) 設(shè)置提醒:系統(tǒng)要求用戶能夠?yàn)樽约航璧拿勘緯畣为?dú)設(shè)置還書提醒功能,。提醒時間到時,如果用戶沒有使用本系統(tǒng),,程序應(yīng)該能夠自動啟動移動圖書館軟件顯示提醒書籍的相關(guān)信息及播放音樂直到用戶點(diǎn)擊確定,;若用戶正在使用本系統(tǒng),該提醒會被忽略,。
(2) 檢索書籍:可分為按關(guān)鍵字檢索和按書的索引號檢索兩種情況,。用戶可以根據(jù)自己的需要選擇檢索方式。
(3) 預(yù)約圖書:當(dāng)某本書已經(jīng)全部借出時,,用戶可以建立圖書預(yù)約,,待別人還后,用戶可以在第一時間借到該書,。若該書在圖書館有庫存,,則該書不能預(yù)約,用戶可自行到圖書館借閱,。
(4) 取消預(yù)約:用戶可以登錄自己的帳號取消該書的預(yù)約,。
(5) 續(xù)借圖書:系統(tǒng)要求提供圖書續(xù)借功能。若該書沒有人預(yù)約,,用戶可續(xù)借,,續(xù)借后該書的還書時間為當(dāng)前日期的30天之后;若該書已經(jīng)有人預(yù)約了,,則用戶不能續(xù)借,。
(6) 查看帳號:包括查看已借書籍、查看預(yù)約圖書和查看帳單三個功能,。查看已借書籍,可以查看自己已借書籍的列表,,選擇某本書后還可以查看該書的相關(guān)信息,包括該書的到期時間,;查看預(yù)約圖書,可以查看自己已經(jīng)預(yù)約的書籍的相關(guān)情況,,包括該書是否可借的狀態(tài),以方便用戶盡快借到自己想借的書,;查看帳單,可以查看到目前用戶還沒有交的罰款信息,。列出每本書欠款的情況,包括每本書的書名,、罰款數(shù)目以及罰款原因等信息,。
(7) 服務(wù)信息:包括查看圖書館通知、開放時間、與圖書館聯(lián)系和向圖書館提建議等幾個功能,。用戶無論登錄與否都可以使用本功能,。
(8) 幫助:相當(dāng)于用戶教程,指導(dǎo)用戶如何使用本系統(tǒng),。它包括如何檢索書籍、設(shè)置還書提醒,、預(yù)約與取消預(yù)約以及續(xù)借書籍等方法,。
2 系統(tǒng)設(shè)計(jì)
2.1 模塊結(jié)構(gòu)設(shè)計(jì)
移動圖書館分為服務(wù)器端和客戶端兩部分,其中服務(wù)器端提供類似于現(xiàn)有大部分網(wǎng)上圖書館的功能,;客戶端這里特指手機(jī)客戶端,,它提供還書提醒、檢索書籍,、用戶管理,、預(yù)約圖書、續(xù)借圖書和服務(wù)信息等功能,,總體結(jié)構(gòu)圖如圖3所示,。
2.2 類設(shè)計(jì)
對系統(tǒng)主要類的設(shè)計(jì)說明如下。
2.2.1 主MIDlet類
主MIDlet類由MobileLibraryMidlet.java文件實(shí)現(xiàn),。該文件中定義了MobileLibraryMidlet類,,該類派生自MIDlet類,同時還實(shí)現(xiàn)了CommandListener接口,。該類主要繼承了MIDlet類的startApp(),、pauseApp()、destroyApp(boolean unconditional)和一些其他自定義的方法,。其中startApp()是本程序的啟動方法,,它負(fù)責(zé)啟動應(yīng)用程序。該方法主要有兩個分支,,如果是由PUSH注冊機(jī)制喚醒應(yīng)用程序,,就顯示提醒用戶還書的界面并且播放提示背景音樂,否則程序就執(zhí)行init()方法正常啟動,。判斷程序是否由PUSH注冊機(jī)制喚醒的方法是通過讀取Remind對象中存儲的注冊時間與當(dāng)前時間進(jìn)行比較,,如果兩個時間相等說明是由PUSH機(jī)制喚醒的,否則是程序正常啟動,。
2.2.2 主界面類
主界面作用由MainUI類來實(shí)現(xiàn),。它實(shí)現(xiàn)了SVGEventListener和Runnable兩個接口,這兩個接口主要是實(shí)現(xiàn)SVG的交互性,。本類當(dāng)中有5個SVGAnimationElement類型的數(shù)組變量,,這些數(shù)組保存的是SVG中的各種動畫元素,例如顏色、位置的變化等,,這5個數(shù)組分別用于存儲選擇器動畫元素的marker數(shù)組,、保存當(dāng)動畫元素被選擇時顏色的selectedColor數(shù)組,、保存動畫元素未被選擇時顏色的unSelectedColor數(shù)組,、保存動畫元素被選擇的位置的selectedPosition數(shù)組以及保存動畫元素未被選擇的位置的數(shù)組unSelectedPosition,。
2.2.3 界面導(dǎo)航類
系統(tǒng)的界面導(dǎo)航由UIController類實(shí)現(xiàn),,其主要成員函數(shù)如下,。
(1) goBack()
goBack()方法主要實(shí)現(xiàn)界面導(dǎo)航中返回上一個界面的功能,,其過程是首先從棧頂彈出當(dāng)前的顯示控件,,然后獲得當(dāng)前的棧頂元素,,最后通過midlet回調(diào)顯示上一個界面,,從而實(shí)現(xiàn)返回上一個界面的功能,。
(2) forward(Displayable display)
forward(Displayable display)方法實(shí)現(xiàn)進(jìn)入到下一個顯示屏幕的功能。其過程是首先將要顯示的控件壓入棧中,,然后通過midlet回調(diào)setCurrent(display)顯示該控件,。當(dāng)調(diào)用goBack()返回時仍回到原先的屏幕。
(3) repalce(Displayable next)
聯(lián)網(wǎng)時經(jīng)常會有一個暫時等待的界面,然后再進(jìn)入所需要的界面,。這時若要返回,,應(yīng)該是返回到聯(lián)網(wǎng)之前的界面而不是返回到等待界面,因此當(dāng)從等待界面轉(zhuǎn)到聯(lián)網(wǎng)之后的界面時,,不應(yīng)該調(diào)用forward(Displayable display)方法,,應(yīng)使用repalce方法,拋棄等待屏幕,,從而實(shí)現(xiàn)聯(lián)網(wǎng)后的屏幕可以直接goBack到聯(lián)網(wǎng)之前的屏幕,。
2.2.4 HTTP通信類
一個完整的HTTP連接為:用戶通過某個命令發(fā)起連接請求,然后系統(tǒng)給出一個等待屏幕提示正在連接,,當(dāng)連接正常結(jié)束后,,前進(jìn)到下一個屏幕并處理下載的數(shù)據(jù)。如果連接過程出現(xiàn)異常,,將提示用戶并返回到前一個屏幕,。用戶在等待過程中能夠隨時取消并返回前一個屏幕。HTTP通信類是系統(tǒng)中很重要的一個類,,它負(fù)責(zé)客戶端和服務(wù)器端的通信,。雙方的通信采用前面介紹的通信協(xié)議。HTTP通信類由HttpHandler類實(shí)現(xiàn),,該類繼承了Thread類并重寫了Thread類的run()方法,。run()方法是HTTP通信類的核心方法,實(shí)現(xiàn)通信功能,。本方法的大致思想是與Web服務(wù)器建立連接,,發(fā)送請求動作信息,,收到服務(wù)器的響應(yīng)后根據(jù)響應(yīng)碼分配給相應(yīng)的處理類對來自服務(wù)器的響應(yīng)數(shù)據(jù)進(jìn)行解析。
系統(tǒng)采用J2ME作為客戶端的開發(fā)基礎(chǔ),,通過SVG,、PUSH等技術(shù)豐富系統(tǒng)功能并美化系統(tǒng)界面。服務(wù)器端使用成熟的Servlet技術(shù)實(shí)現(xiàn),。同時系統(tǒng)在開發(fā)過程中使用類似于MVC模式,,實(shí)現(xiàn)了符合系統(tǒng)的要求。
參考文獻(xiàn)
[1] Chen Xiaomei,,Guan Xin. The value of mobile phone library in information broadcasting[J]. Information Science,,2006(11).
[2] Tung Weifeng, Yuan Soetysr,, Lin Binshan. M-Library: a mobile service in online WebPAC[J].International Journal of Mobile Communications 2007,5(5):487-507.
[3] Nor Shahriza Abdul Karim,, Siti Hawa Darus,, Ramlah Hussin.Mobile phone applications in academic library services:a students’ feedback survey[D].Malaysia:International Islamic University,2006.
[4] 陸東林,,賓晟,,國剛.J2ME開發(fā)技術(shù)原理與實(shí)踐教程[M].北京:電子工業(yè)出版社,2008.
[5] 郝玉龍,,李向前.J2ME移動應(yīng)用開發(fā)[M].北京:清華大學(xué)出版社,;北京交通大學(xué)出版社,2006.
[6] 施錚.J2ME無線移動游戲開發(fā)[M].北京:人民郵電出版社,,2006.