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