江漢大學(xué)圖書(shū)館 陳 斌
隨著3G時(shí)代的到來(lái),無(wú)線帶寬越來(lái)越高,使得更多內(nèi)容豐富的應(yīng)用程序植入手機(jī)成為可能,如視頻通話、視頻點(diǎn)播、移動(dòng)互聯(lián)網(wǎng)沖浪、在線看書(shū)、在線聽(tīng)歌、內(nèi)容分享等。為了承載這些數(shù)據(jù)應(yīng)用及快速部署,手機(jī)功能將會(huì)越來(lái)越智能,越來(lái)越開(kāi)放。因此,為了實(shí)現(xiàn)這些需求,必須有一個(gè)好的開(kāi)放平臺(tái)來(lái)支持。因此,由Google公司發(fā)起的OHA聯(lián)盟走在了業(yè)界的前列——2007年11月推出了開(kāi)放的Android平臺(tái)[1]。
Android是谷歌(Google)公司發(fā)布的一個(gè)開(kāi)放源代碼的手機(jī)平臺(tái),由Linux內(nèi)核、中間件、應(yīng)用程序框架和應(yīng)用軟件組成,是第一個(gè)可以完全定制、免費(fèi)、開(kāi)放的手機(jī)平臺(tái)。Android不僅能夠在智能手機(jī)中使用,還可以用在移動(dòng)互聯(lián)網(wǎng)終端(MID)、上網(wǎng)筆記本、便攜式媒體播放器(PMP)和汽車電子等其他手持設(shè)備上。
Android在誕生之日起便受到廣泛關(guān)注。到目前為止,中國(guó)臺(tái)灣的宏達(dá)電(HTC)、三星、LG、摩托羅拉、索尼、華碩、聯(lián)想和華為相繼推出自己的Android手機(jī),中國(guó)移動(dòng)、中國(guó)聯(lián)通等運(yùn)營(yíng)商也在研發(fā)基于該系統(tǒng)的手機(jī)操作平臺(tái)。據(jù)市場(chǎng)調(diào)查機(jī)構(gòu)預(yù)測(cè),2012年全球Android手機(jī)的總規(guī)模達(dá)2000萬(wàn)部,2013年全球應(yīng)用Android操作系統(tǒng)的產(chǎn)品銷售量將超過(guò)4000萬(wàn)部。
Android是基于Linux內(nèi)核的軟件平臺(tái)和操作系統(tǒng),采用了軟件堆層的架構(gòu),共分為4層。第1層是Linux內(nèi)核,提供由操作系統(tǒng)內(nèi)核管理的底層基礎(chǔ)功能;第2層是中間件層,由函數(shù)庫(kù)和Android運(yùn)行時(shí)構(gòu)成;第3層是應(yīng)用程序框架層,提供了Android平臺(tái)基本的管理功能和組件重用機(jī)制;第4層是應(yīng)用程序?qū)?,提供了一系列核心?yīng)用程序[2]。
Android廣泛支持GSM、DEGE和3G的語(yǔ)音與數(shù)據(jù)業(yè)務(wù),支持接收語(yǔ)言呼叫和SMS(短信消息服務(wù)),支持?jǐn)?shù)據(jù)存儲(chǔ)共享和IPC(進(jìn)程間通信)消息機(jī)制,為地理位置服務(wù)(如GPS)、谷歌地圖服務(wù)提供易于使用的API函數(shù)庫(kù),提供組件復(fù)用和內(nèi)置程序替換的應(yīng)用程序框架,提供基于WebKit的瀏覽器,廣泛支持各種流行的音頻和視頻文件格式,支持的格式有MPEG4、H264、Mp3、AAC、JPG、PNG和GIF等,為2D和3D圖像處理的專用的API庫(kù)函數(shù)。
在內(nèi)存和進(jìn)程管理方面,Android具有自己的運(yùn)行時(shí)和虛擬機(jī)。與Java和.Net運(yùn)行時(shí)不同,Android運(yùn)行時(shí)還可以管理進(jìn)程的生命周期。Android為了保證高優(yōu)先級(jí)進(jìn)程運(yùn)行和正在與用戶交互進(jìn)程的響應(yīng)速度,允許停止或終止正在運(yùn)行的低優(yōu)先級(jí)進(jìn)程,以釋放被占用的系統(tǒng)資源。
在界面設(shè)計(jì)上,Android提供了豐富的界面控件供使用者之間調(diào)用,從而加快了用戶界面的開(kāi)發(fā)速度,也保證了Android平臺(tái)上的程序界面的一致性。Android將界面設(shè)計(jì)與程序邏輯分離,使用XML文件對(duì)界面布局進(jìn)行描述,有利于界面的修改和維護(hù)。
Android提供了Service作為無(wú)用戶界面、長(zhǎng)時(shí)間后臺(tái)運(yùn)行的組件。Android是多任務(wù)系統(tǒng),但受到屏幕尺寸的限制,同一時(shí)刻只允許一個(gè)應(yīng)用程序是在前臺(tái)運(yùn)行。Service無(wú)需用戶干預(yù),可以長(zhǎng)時(shí)間、穩(wěn)定地運(yùn)行,可為應(yīng)用程序提供特定的后臺(tái)功能,還可以實(shí)現(xiàn)事件處理或數(shù)據(jù)更新等功能。
Android支持高效、快速的數(shù)據(jù)存儲(chǔ)方式,包括快速數(shù)據(jù)存儲(chǔ)方式SharedPreferences、文件存儲(chǔ)和輕量級(jí)關(guān)系數(shù)據(jù)庫(kù)SQLite,應(yīng)用程序可以使用適合的方式對(duì)數(shù)據(jù)進(jìn)程保存和訪問(wèn)。同時(shí),為了便于跨進(jìn)程共享數(shù)據(jù),Android提供了通用的共享數(shù)據(jù)接口ContentProvider,可以無(wú)需了解數(shù)據(jù)源、路徑的情況下,對(duì)共享數(shù)據(jù)進(jìn)行查詢、添加、刪除和更新等操作[3]。
SQLite是一個(gè)開(kāi)源的嵌入式關(guān)系數(shù)據(jù)庫(kù),2000年由D.Richard Hipp發(fā)布。自幾十年前出現(xiàn)的商業(yè)應(yīng)用程序以來(lái),數(shù)據(jù)庫(kù)就成為了應(yīng)用程序的主要組成部分,同時(shí)數(shù)據(jù)庫(kù)管理系統(tǒng)也變得非常龐大和復(fù)雜,并占用了相當(dāng)多的系統(tǒng)資源。隨著嵌入式應(yīng)用程序的大量出現(xiàn),一種新型的輕量級(jí)數(shù)據(jù)庫(kù)SQLite也隨之產(chǎn)生。SQLite數(shù)據(jù)庫(kù)比傳統(tǒng)的數(shù)據(jù)庫(kù)更加適用于嵌入式系統(tǒng),因?yàn)樗加每臻g非常少,運(yùn)行高效可靠,可移植性好,并且提供了零配置運(yùn)行模式。
Android中提供了兩個(gè)類,用于簡(jiǎn)化SQLite數(shù)據(jù)庫(kù)的操作。第一個(gè)是SQLiteOpenHelper,該類主要用于自動(dòng)完成打開(kāi)、關(guān)閉指定的數(shù)據(jù)庫(kù),當(dāng)數(shù)據(jù)庫(kù)不存在的情況下還可以創(chuàng)建數(shù)據(jù)庫(kù),并根據(jù)需要更新數(shù)據(jù)庫(kù)。第二個(gè)是SQLiteDatabase類,該類只要用于查詢數(shù)據(jù)庫(kù),相數(shù)據(jù)庫(kù)中新建數(shù)據(jù)項(xiàng)、刪除數(shù)據(jù)項(xiàng)[4]。
創(chuàng)建一份數(shù)據(jù)庫(kù)的一般流程如下:
(1)根據(jù)應(yīng)用設(shè)計(jì)出所需要的數(shù)據(jù)表格。
(2)為數(shù)據(jù)庫(kù)中每張表格建立一個(gè)Java類,可以把這些類看作是應(yīng)用層和數(shù)據(jù)庫(kù)之間的一個(gè)適配層。
(3)在每個(gè)Java類中定義一個(gè)基于SQLiteOpenHelper的內(nèi)部類,用于創(chuàng)建數(shù)據(jù)庫(kù)。需要實(shí)現(xiàn)其內(nèi)部的3個(gè)函數(shù),包括構(gòu)造函數(shù)、onCreate()和onUpdate()。
(4)在每個(gè)Java類中,把數(shù)據(jù)列的名稱定義為常量,便于訪問(wèn)。
在Android系統(tǒng)中,每個(gè)應(yīng)用程序的SQLite數(shù)據(jù)庫(kù)被保存在各自的/data/data/
3G技術(shù)以及無(wú)線網(wǎng)絡(luò)在全球的飛快發(fā)展,使傳統(tǒng)的圖書(shū)館面臨著一次新的技術(shù)革命,江漢大學(xué)圖書(shū)館作為地方性大學(xué)圖書(shū)館,在運(yùn)作和管理模式上也面臨著無(wú)線信息化、數(shù)字化、網(wǎng)絡(luò)化的新挑戰(zhàn)。數(shù)字圖書(shū)館技術(shù)將使傳統(tǒng)型圖書(shū)館實(shí)現(xiàn)革命的變革。它將要求以新的模式處理傳統(tǒng)圖書(shū)館的功能,包括各類型信息資源訪問(wèn)模式、讀者的交互模式、以及新的采訪模式等。因此,我們嘗試采用基于Android平臺(tái)SQLite數(shù)據(jù)庫(kù)技術(shù)應(yīng)用于圖書(shū)館的新的采訪模式。
在訪問(wèn)SQLite數(shù)據(jù)庫(kù)方面的主要功能有:(1)用戶查詢新書(shū)情況以及推薦自己喜歡的新書(shū);(2)實(shí)現(xiàn)學(xué)科館員根據(jù)用戶的推薦情況決定要采購(gòu)的新書(shū)。由此,該模塊的結(jié)構(gòu)分為:用戶推薦新書(shū)系統(tǒng)、學(xué)科館員購(gòu)書(shū)決策系統(tǒng)。
首先,采用SQLite,建立相應(yīng)數(shù)據(jù)庫(kù)中的表。在其中新建新書(shū)書(shū)目表Book,設(shè)置“BookId”、“ISBN”、“題名”、“責(zé)任者”、“出版社”、“價(jià)格”、“新書(shū)期數(shù)”、“推薦指數(shù)”、“入館狀態(tài)”等11個(gè)字段。新建讀者信息表User,設(shè)置“UserId”、“一卡通號(hào)”、“Email”、“聯(lián)系電話”等14個(gè)字段。新建新書(shū)推薦紀(jì)錄表RecommendBook,設(shè)置“讀者一卡通號(hào)”、“推薦書(shū)目Id號(hào)”等4個(gè)字段。
用戶選擇好自己喜歡的新書(shū)后,將推薦紀(jì)錄存于數(shù)據(jù)庫(kù)中,用于學(xué)科館員決策所要采用的新書(shū)。
在.Android平臺(tái)中使用SQLiteOpen-Helper和DatabaseHelper子類進(jìn)行封裝,利用ContentValues類來(lái)代替原始的SQL語(yǔ)句進(jìn)行數(shù)據(jù)庫(kù)的存取操作。
在BookDbAdpter類中向外界提供了以下一些常用方法:
Open():調(diào)用此方法后,如果數(shù)據(jù)庫(kù)還沒(méi)有建立,那么會(huì)建立數(shù)據(jù)庫(kù),如果數(shù)據(jù)庫(kù)已經(jīng)建立,那么會(huì)返回可寫數(shù)據(jù)庫(kù)實(shí)例。
Close():調(diào)用此方法后,Database-Helper會(huì)關(guān)閉對(duì)數(shù)據(jù)庫(kù)的訪問(wèn)。
CreateNewBook(String title,String body)通過(guò)一個(gè)title和body字段在數(shù)據(jù)庫(kù)中創(chuàng)建一條新書(shū)推薦記錄。
GetAllNotes():得到Book表中所有的記錄,并且以一個(gè)Cursor的形式進(jìn)行返回。
GetBook(long rowId):通過(guò)記錄的主鍵id得到特定的一條記錄。
UpdateBook(long rowId,String title,String body):更新主鍵id為rowId那條記錄中的兩個(gè)字段title和body字段的內(nèi)容。
將讀者推薦書(shū)目紀(jì)錄存入數(shù)據(jù)庫(kù)的部分源代碼如下:
根據(jù)用戶推薦新書(shū)的數(shù)據(jù),學(xué)科館員需要從這些推薦新書(shū)的數(shù)據(jù)中選擇圖書(shū)館需要購(gòu)買回的新書(shū)。并且將這些新書(shū)信息及時(shí)反饋到讀者。
由于每位用戶在推薦新書(shū)時(shí),必須先登陸到圖書(shū)館系統(tǒng),因此在推薦新書(shū)的數(shù)據(jù)記錄存入數(shù)據(jù)庫(kù)的同時(shí),用戶一卡通卡號(hào)信息也存入表RecommendDetail中。這樣在RecommendDetail中通過(guò)外鍵UserId與表User中的主鍵UserId組成主-從表,那么根據(jù)User表中讀者職稱(分為教授、副教授、講師、研究生、本科生)分為五級(jí),假設(shè)教授推薦這本新書(shū),則在Book表中該書(shū)的權(quán)重加5;如果是副教授,則加4,以此類推,如果是本科推薦權(quán)重指數(shù)加1。學(xué)科館員就根據(jù)新書(shū)的推薦指數(shù),并結(jié)合館中藏書(shū)情況決定需要購(gòu)買的新書(shū)。學(xué)科館員在圖書(shū)館購(gòu)買回相應(yīng)的新書(shū)后,將更新表Book,并將此信息以短信的形式及時(shí)反饋到用戶登記的手機(jī)上面。
基于Android平臺(tái)的圖書(shū)館各種服務(wù)應(yīng)用具有響應(yīng)速度快,建設(shè)成本低,使用方便等特點(diǎn),是圖書(shū)館信息化、數(shù)字化和無(wú)線網(wǎng)絡(luò)化發(fā)展的趨勢(shì)。并且可以與現(xiàn)有圖書(shū)館系統(tǒng)集成,為用戶提供更多、更加方便快捷的圖書(shū)館服務(wù)。
[1]柯元旦,宋銳.Android程序設(shè)計(jì)[M].北京航空航天大學(xué)出版社,2010.
[2]張波,高朝勤,楊越.Android基礎(chǔ)教程[M].人民郵電出版社,2009.
[3]韓超,梁泉.Android系統(tǒng)原理及開(kāi)發(fā)要點(diǎn)詳解[M].電子工業(yè)出版社,2010.
[4]徐娜子.Android江湖[M].電子工業(yè)出版社,2011.