《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > 基于J2ME的移動(dòng)圖書館設(shè)計(jì)
基于J2ME的移動(dòng)圖書館設(shè)計(jì)
來源:微型機(jī)與應(yīng)用2011年第12期
劉玉生1, 肖興發(fā)2
(1. 際華三五二二裝具飾品有限公司 計(jì)算中心,天津 300161; 2. 天津大學(xué) 軟件學(xué)院,天津
摘要: 基于NetBeans IDE 6.5開發(fā)環(huán)境,采用客戶機(jī)/服務(wù)器結(jié)構(gòu),利用J2ME技術(shù)、SVG技術(shù)及PUSH技術(shù),針對(duì)高校學(xué)生借閱書籍開發(fā)的手機(jī)終端應(yīng)用程序軟件,闡述了移動(dòng)應(yīng)用程序的開發(fā)過程。
關(guān)鍵詞: 軟件 移動(dòng)圖書館 J2ME SVG PUSH
Abstract:
Key words :

摘  要: 基于NetBeans IDE 6.5開發(fā)環(huán)境,采用客戶機(jī)/服務(wù)器結(jié)構(gòu),利用J2ME技術(shù)、SVG技術(shù)及PUSH技術(shù),針對(duì)高校學(xué)生借閱書籍開發(fā)的手機(jī)終端應(yīng)用程序軟件,闡述了移動(dòng)應(yīng)用程序的開發(fā)過程。
關(guān)鍵詞: 移動(dòng)圖書館; J2ME; SVG; PUSH

    隨著互聯(lián)網(wǎng)和移動(dòng)通信技術(shù)的不斷發(fā)展,全球進(jìn)入了信息化時(shí)代,人類的通信方式發(fā)生了根本性的改變,網(wǎng)絡(luò)和手機(jī)成為越來越普遍的通信工具。越來越多的手機(jī)增值服務(wù)應(yīng)運(yùn)而生,一種嶄新的以手機(jī)為移動(dòng)終端的數(shù)字圖書館服務(wù)方式也悄然興起。這種基于圖書館的手機(jī)增值服務(wù),即“手機(jī)圖書館”作為一個(gè)概念被提出來,并逐漸成為圖書館繼網(wǎng)絡(luò)服務(wù)之后的新興服務(wù)領(lǐng)域[1-3]。
1 系統(tǒng)分析
 手機(jī)圖書館是在無線通信網(wǎng)絡(luò)環(huán)境下對(duì)數(shù)字圖書館服務(wù)功能的進(jìn)一步延伸,其實(shí)現(xiàn)的三個(gè)基本組成部分為手機(jī)終端、無線互聯(lián)網(wǎng)、數(shù)字圖書館系統(tǒng)。系統(tǒng)采用基于J2ME嵌入式軟件的實(shí)現(xiàn)方式。
1.1 J2ME體系結(jié)構(gòu)
 J2ME是SUN公司針對(duì)嵌入式、消費(fèi)類電子產(chǎn)品推出的開發(fā)平臺(tái),可將手機(jī)圖書館系統(tǒng)設(shè)計(jì)成一個(gè)可在手機(jī)上安裝的客戶端軟件,讀者可以通過該軟件訪問圖書館提供的無線移動(dòng)服務(wù)功能[4-5]。
 J2ME定義了一種靈活的層次結(jié)構(gòu)來規(guī)范眾多的移動(dòng)設(shè)備,不同層次的規(guī)范相互協(xié)作來提供一個(gè)完整的移動(dòng)JAVA平臺(tái)。J2ME定義的移動(dòng)JAVA平臺(tái)分為四層:主機(jī)操作系統(tǒng)、配置(Configuration)、簡(jiǎn)表(Profiles)和廠商可選包。其體系結(jié)構(gòu)如圖1所示。

 其中,配置是將基本運(yùn)行環(huán)境定義為一組核心類和一個(gè)運(yùn)行在特定類型設(shè)備上的特定的JVM[6]。簡(jiǎn)表定義了應(yīng)用程序所支持的設(shè)備類型。特別地,它向J2ME配置添加了特定域的類來定義設(shè)備的某種作用,它建立在配置的頂部。廠商可選包指的是由廠商提供給程序開發(fā)人員的一組與其他規(guī)范沒有任何依賴性的類庫,開發(fā)人員可以利用這一類庫來開發(fā)出具有特定功能的應(yīng)用程序。
1.2 功能需求分析
 根據(jù)調(diào)查與研究,考慮目前中國移動(dòng)通信的發(fā)展和主流手機(jī)設(shè)備的狀況,系統(tǒng)主要提供用戶登錄、修改密碼、設(shè)置還書提醒、書籍檢索、預(yù)約與取消預(yù)約圖書、續(xù)借書籍、查看用戶信息和服務(wù)信息及幫助等功能。移動(dòng)圖書館需求的總體用例圖如圖2所示。

 

 

    系統(tǒng)主要功能如下:
    (1) 設(shè)置提醒:系統(tǒng)要求用戶能夠?yàn)樽约航璧拿勘緯畣为?dú)設(shè)置還書提醒功能。提醒時(shí)間到時(shí),如果用戶沒有使用本系統(tǒng),程序應(yīng)該能夠自動(dòng)啟動(dòng)移動(dòng)圖書館軟件顯示提醒書籍的相關(guān)信息及播放音樂直到用戶點(diǎn)擊確定;若用戶正在使用本系統(tǒng),該提醒會(huì)被忽略。
 (2) 檢索書籍:可分為按關(guān)鍵字檢索和按書的索引號(hào)檢索兩種情況。用戶可以根據(jù)自己的需要選擇檢索方式。
 (3) 預(yù)約圖書:當(dāng)某本書已經(jīng)全部借出時(shí),用戶可以建立圖書預(yù)約,待別人還后,用戶可以在第一時(shí)間借到該書。若該書在圖書館有庫存,則該書不能預(yù)約,用戶可自行到圖書館借閱。
 (4) 取消預(yù)約:用戶可以登錄自己的帳號(hào)取消該書的預(yù)約。
 (5) 續(xù)借圖書:系統(tǒng)要求提供圖書續(xù)借功能。若該書沒有人預(yù)約,用戶可續(xù)借,續(xù)借后該書的還書時(shí)間為當(dāng)前日期的30天之后;若該書已經(jīng)有人預(yù)約了,則用戶不能續(xù)借。
 (6) 查看帳號(hào):包括查看已借書籍、查看預(yù)約圖書和查看帳單三個(gè)功能。查看已借書籍,可以查看自己已借書籍的列表,選擇某本書后還可以查看該書的相關(guān)信息,包括該書的到期時(shí)間;查看預(yù)約圖書,可以查看自己已經(jīng)預(yù)約的書籍的相關(guān)情況,包括該書是否可借的狀態(tài),以方便用戶盡快借到自己想借的書;查看帳單,可以查看到目前用戶還沒有交的罰款信息。列出每本書欠款的情況,包括每本書的書名、罰款數(shù)目以及罰款原因等信息。
 (7) 服務(wù)信息:包括查看圖書館通知、開放時(shí)間、與圖書館聯(lián)系和向圖書館提建議等幾個(gè)功能。用戶無論登錄與否都可以使用本功能。
 (8) 幫助:相當(dāng)于用戶教程,指導(dǎo)用戶如何使用本系統(tǒng)。它包括如何檢索書籍、設(shè)置還書提醒、預(yù)約與取消預(yù)約以及續(xù)借書籍等方法。
2 系統(tǒng)設(shè)計(jì)
2.1 模塊結(jié)構(gòu)設(shè)計(jì)

 移動(dòng)圖書館分為服務(wù)器端和客戶端兩部分,其中服務(wù)器端提供類似于現(xiàn)有大部分網(wǎng)上圖書館的功能;客戶端這里特指手機(jī)客戶端,它提供還書提醒、檢索書籍、用戶管理、預(yù)約圖書、續(xù)借圖書和服務(wù)信息等功能,總體結(jié)構(gòu)圖如圖3所示。

2.2 類設(shè)計(jì)
 對(duì)系統(tǒng)主要類的設(shè)計(jì)說明如下。
2.2.1 主MIDlet類
 主MIDlet類由MobileLibraryMidlet.java文件實(shí)現(xiàn)。該文件中定義了MobileLibraryMidlet類,該類派生自MIDlet類,同時(shí)還實(shí)現(xiàn)了CommandListener接口。該類主要繼承了MIDlet類的startApp()、pauseApp()、destroyApp(boolean unconditional)和一些其他自定義的方法。其中startApp()是本程序的啟動(dòng)方法,它負(fù)責(zé)啟動(dòng)應(yīng)用程序。該方法主要有兩個(gè)分支,如果是由PUSH注冊(cè)機(jī)制喚醒應(yīng)用程序,就顯示提醒用戶還書的界面并且播放提示背景音樂,否則程序就執(zhí)行init()方法正常啟動(dòng)。判斷程序是否由PUSH注冊(cè)機(jī)制喚醒的方法是通過讀取Remind對(duì)象中存儲(chǔ)的注冊(cè)時(shí)間與當(dāng)前時(shí)間進(jìn)行比較,如果兩個(gè)時(shí)間相等說明是由PUSH機(jī)制喚醒的,否則是程序正常啟動(dòng)。
2.2.2 主界面類
 主界面作用由MainUI類來實(shí)現(xiàn)。它實(shí)現(xiàn)了SVGEventListener和Runnable兩個(gè)接口,這兩個(gè)接口主要是實(shí)現(xiàn)SVG的交互性。本類當(dāng)中有5個(gè)SVGAnimationElement類型的數(shù)組變量,這些數(shù)組保存的是SVG中的各種動(dòng)畫元素,例如顏色、位置的變化等,這5個(gè)數(shù)組分別用于存儲(chǔ)選擇器動(dòng)畫元素的marker數(shù)組、保存當(dāng)動(dòng)畫元素被選擇時(shí)顏色的selectedColor數(shù)組、保存動(dòng)畫元素未被選擇時(shí)顏色的unSelectedColor數(shù)組、保存動(dòng)畫元素被選擇的位置的selectedPosition數(shù)組以及保存動(dòng)畫元素未被選擇的位置的數(shù)組unSelectedPosition。
2.2.3 界面導(dǎo)航類
 系統(tǒng)的界面導(dǎo)航由UIController類實(shí)現(xiàn),其主要成員函數(shù)如下。
    (1) goBack()
 goBack()方法主要實(shí)現(xiàn)界面導(dǎo)航中返回上一個(gè)界面的功能,其過程是首先從棧頂彈出當(dāng)前的顯示控件,然后獲得當(dāng)前的棧頂元素,最后通過midlet回調(diào)顯示上一個(gè)界面,從而實(shí)現(xiàn)返回上一個(gè)界面的功能。
    (2) forward(Displayable display)
 forward(Displayable display)方法實(shí)現(xiàn)進(jìn)入到下一個(gè)顯示屏幕的功能。其過程是首先將要顯示的控件壓入棧中,然后通過midlet回調(diào)setCurrent(display)顯示該控件。當(dāng)調(diào)用goBack()返回時(shí)仍回到原先的屏幕。
    (3) repalce(Displayable next)
 聯(lián)網(wǎng)時(shí)經(jīng)常會(huì)有一個(gè)暫時(shí)等待的界面,然后再進(jìn)入所需要的界面。這時(shí)若要返回,應(yīng)該是返回到聯(lián)網(wǎng)之前的界面而不是返回到等待界面,因此當(dāng)從等待界面轉(zhuǎn)到聯(lián)網(wǎng)之后的界面時(shí),不應(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通信類
  一個(gè)完整的HTTP連接為:用戶通過某個(gè)命令發(fā)起連接請(qǐng)求,然后系統(tǒng)給出一個(gè)等待屏幕提示正在連接,當(dāng)連接正常結(jié)束后,前進(jìn)到下一個(gè)屏幕并處理下載的數(shù)據(jù)。如果連接過程出現(xiàn)異常,將提示用戶并返回到前一個(gè)屏幕。用戶在等待過程中能夠隨時(shí)取消并返回前一個(gè)屏幕。HTTP通信類是系統(tǒng)中很重要的一個(gè)類,它負(fù)責(zé)客戶端和服務(wù)器端的通信。雙方的通信采用前面介紹的通信協(xié)議。HTTP通信類由HttpHandler類實(shí)現(xiàn),該類繼承了Thread類并重寫了Thread類的run()方法。run()方法是HTTP通信類的核心方法,實(shí)現(xiàn)通信功能。本方法的大致思想是與Web服務(wù)器建立連接,發(fā)送請(qǐng)求動(dòng)作信息,收到服務(wù)器的響應(yīng)后根據(jù)響應(yīng)碼分配給相應(yīng)的處理類對(duì)來自服務(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)。同時(shí)系統(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移動(dòng)應(yīng)用開發(fā)[M].北京:清華大學(xué)出版社;北京交通大學(xué)出版社,2006.
[6] 施錚.J2ME無線移動(dòng)游戲開發(fā)[M].北京:人民郵電出版社,2006.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。