張利強 李川 黃日輝 施羽
【摘 要】隨著當今社會的生活節(jié)奏越來越快,高校學生對手機應(yīng)用的要求也越來越高,也經(jīng)常會為各種各樣的App應(yīng)用下載選擇而感到煩惱。針對此現(xiàn)象,文章提出了一款基于Android的高校生活助手App,它整合了各大O2O領(lǐng)域經(jīng)典應(yīng)用,主要有出行叫車、地圖導(dǎo)航、酒店預(yù)訂、外賣點餐等服務(wù),此外還添加了一些特色功能,如機器人管家、周公解夢、景點玩樂等,為用戶提供多元服務(wù)。
【關(guān)鍵詞】生活助手;Android;O2O
【中圖分類號】TP311.52 【文獻標識碼】A 【文章編號】1674-0688(2019)08-0066-02
該軟件是一款以景點、酒店、滴滴出行、餓了么外賣、在線題庫、周公解夢、校園社區(qū)、地圖導(dǎo)航為基本服務(wù)資源,結(jié)合了已參與用戶的評價和提出的改進方案進行智能篩選和整合,為高校師生用戶提供一套便捷舒心的活動方案的智能活動組織系統(tǒng)。該系統(tǒng)覆蓋主流的安卓平臺,將純商業(yè)性的App打造成為集商業(yè)性、娛樂性于一體的新型本地化服務(wù)性App。
1 系統(tǒng)開發(fā)模式與技術(shù)
1.1 采用的開發(fā)模式
系統(tǒng)架構(gòu)主要分C/S和B/S兩種。B/S即Browser/Server(瀏覽器/服務(wù)器)結(jié)構(gòu),簡單來說,B/S架構(gòu)就是客戶端可以通過瀏覽器訪問服務(wù)器資源,例如百度網(wǎng)頁版本。因此,只要客戶端中安裝有瀏覽器即可,但在美工方面B/S因為其頁面較大,不管是UI設(shè)計還是前端實現(xiàn)都是比較麻煩的,且訪問速度與效果低于C/S架構(gòu)。C/S即Client/Server(客戶端/服務(wù)器),該模式一般擁有指定的軟件作為客戶端與服務(wù)器相連接。用戶在使用App的過程中,App將用戶的請求發(fā)送到服務(wù)器,然后服務(wù)器處理請求數(shù)據(jù)返回給App,最終客戶端再將從服務(wù)器獲取到的數(shù)據(jù)以特定的形式展示出來,例如手機QQ。該模式的特點是用戶只有安裝指定的軟件,才能對服務(wù)器資源進行訪問。因為客戶端軟件普遍較小,所以UI設(shè)計與前端實現(xiàn)都是比較簡單的。該系統(tǒng)主要工作于移動端中,又因在移動端中瀏覽器操作極不方便,故采用的是C/S模式架構(gòu)。
1.2 涉及技術(shù)
(1)Android 4.0。Android 4.0名為Ice Cream Sandwich(簡稱ICS,冰淇淋三明治),于2011年9月發(fā)布,此時的Android系統(tǒng)在手機市場中的占有率已經(jīng)達到了43%,目前絕大部分的Android系統(tǒng)都為4.0及以上。Android編程是基于Java編程語言的,同時它也是開源的,基于Linux的移動設(shè)備操作系統(tǒng),如智能手機和平板電腦。Android具有以下開發(fā)優(yōu)勢:開放源代碼;眾多開發(fā)者及強大的社區(qū);不斷增長的市場;國際化的App集成;低廉的開發(fā)成本;更高的成功概率;豐富的開發(fā)環(huán)境。
(2)Android四大組件。Android四大組件分別是Activity、Service、Broadcast Receiver、Content Provider。一個Activity一般就是一個界面。一個Activity活動就是一個完整的頁面,它可以包括各種選項卡、菜單布局等所有的頁面控件。一個消息服務(wù)應(yīng)用程序可能包括一個顯示聯(lián)系人列表的Activity,一個編寫信息的Activity,以及其他查看信息和改動應(yīng)用程序設(shè)置的Activity。這些Activity一起工作,共同組成了一個應(yīng)用程序。Service是Android的四大組件之一,即Android系統(tǒng)的服務(wù)(不是一個線程,是主程序的一部分),與Activity不同,它是不能與用戶交互的,不能自己啟動的,需調(diào)用Context.start Service()啟動,執(zhí)行后臺,假設(shè)我們退出應(yīng)用時,Service進程并沒有結(jié)束,它仍然在后臺行。Service沒有用戶界面,但它依然會在后臺一直運行著程序。例如,Service可能在用戶處理其他程序命令的時候看一些電影,或者進行更新,或者執(zhí)行一些在線的命令,并把運算結(jié)構(gòu)提供給Activity展示給用戶。每一個Service都擴展自類Serivce。正常廣播Normal Broadcasts(用Context.sendBroadcast()發(fā)送)是全然異步的。它們都執(zhí)行在一個沒有定義的順序,一般是在同一時間。這樣會更有效,但意味著receiver不能包括所要使用的結(jié)果或中止的API。有序廣播 Ordered Broadcasts(用Context.send Ordered Broadcast()發(fā)送)每次被發(fā)送到一個Receiver。所謂有序,就是每一個receiver執(zhí)行后能夠傳播到下一個Receiver,也可以馬上進行中止,不傳播給其他Receiver。而Receiver執(zhí)行的順序能夠通過Matched Intent-filter里面的Android:Priority來控制,當Priority優(yōu)先級同樣的時候,Receiver以隨意的順序執(zhí)行。Content Provider(內(nèi)容提供者)也是Android四大組件之一,主要用于將數(shù)據(jù)展示給其他用戶。Content Provider把程序中的數(shù)據(jù)共享給訪問者,其他應(yīng)用的訪問者能夠通過Content Provider對自己想要的程序數(shù)據(jù)進行數(shù)據(jù)訪問。ContentProvider分為系統(tǒng)的和自己定義的,系統(tǒng)即聯(lián)系人、圖片等數(shù)據(jù)。
(3)Android DeepLink。Deeplink是App應(yīng)用中的深度鏈接,如果把App看做一個網(wǎng)站,那么Deeplink就是網(wǎng)站中的一個深入頁面,如產(chǎn)品專題頁面、活動促銷頁面等。如果沒有Deeplink,每個App都是獨立的。內(nèi)容和服務(wù)之間的鏈接消失了,應(yīng)用搜索是斷裂的。從一定程度上說,每個App都建立起自己的孤島,鏈接和數(shù)據(jù)不能在App之間交換,Deeplink讓App開發(fā)者能夠鏈接到應(yīng)用內(nèi)特定的頁面。
(4)C3P0數(shù)據(jù)連接池。C3P0是一個開源的JDBC連接池,它實現(xiàn)了數(shù)據(jù)源和JNDI綁定。C3P0的自動回收控線連接功能使得在編寫時不必考慮因數(shù)據(jù)庫連接不釋放而造成的連接數(shù)過多且異常的情況。C3P0連接池會根據(jù)配置初始化N個數(shù)據(jù)庫連接,我們只需通過Data Sourse.get Connection()即可從線程池中取用一個已經(jīng)連接好的資源,并執(zhí)行數(shù)據(jù)庫操作。
2 系統(tǒng)各功能模塊設(shè)計
該軟件主要模塊有首頁、綜合教務(wù)系統(tǒng)、出行打車、機器人管家、廣場、附近地圖、英語四六級題庫、預(yù)訂酒店、外賣訂餐、周公解夢、內(nèi)江周邊。該App界面美觀,方便使用。 ? ? ?綜合教務(wù)系統(tǒng):跳轉(zhuǎn)到學院教務(wù)系統(tǒng)登錄界面,用戶可以從這里直接登錄教務(wù)系統(tǒng)主頁。出行打車:接入滴滴出行接口,用戶無需下載嘀嘀出行或其他打車軟件,只要在本App內(nèi)就可以選擇目的地進行打車。機器人管家:該功能為智能機器人對話,在對話框內(nèi)輸入你想說的話,機器人會回答你的大部分問題,如旅行、地點、天氣等。廣場:一個學生論壇,用戶平時有什么新鮮事,或是什么疑題都可以在廣場里詢問其他同學,或者參與其他討論。附近地圖:使用百度地圖接口,同學們無需下載百度地圖或高德地圖等導(dǎo)航軟件,只要打開本App就可以進行導(dǎo)航查看目的地路線與交通出行。英語四六級題庫:同學們可以在上面刷近5年以來英語四級、六級真題和模擬題。界面雖然還不夠好看,但主要功能都齊全。預(yù)訂酒店:提供了本地大部分的酒店信息,包括床位的價錢、具體時間、人數(shù)等,以及其他網(wǎng)友對酒店的評價。外賣訂餐:同學可以在上面選擇不同距離、不同口味的餐廳進行點餐外賣服務(wù),與餓了么沒有多大區(qū)別。通過手機號碼注冊賬號之后,進行點餐、付款。周公解夢:同學們可以將自己做過的夢輸入文字框內(nèi)來尋找自己夢的困惑。該模塊功能齊全,包括名字解讀、星座運勢、生辰八字等。內(nèi)江出行:包括內(nèi)江大部分的旅游景點,供同學們參考。美食與交通出行也都有詳細的攻略,方便同學們在節(jié)假日期間約上好朋友一起去玩。
3 數(shù)據(jù)庫設(shè)計
本App主要是在校園內(nèi)使用,用戶量與并發(fā)量較小,因此不必考慮數(shù)據(jù)庫的拆分。本系統(tǒng)采用MySQL作為數(shù)據(jù)庫服務(wù)器對數(shù)據(jù)進行管理。結(jié)合對App的需求分析,共設(shè)計了ns_user(用戶)、ns_tk(題庫)、ns_bbs(廣場)、ns_jwxt(教務(wù)系統(tǒng))、ns_zgjm(周公解夢知識庫)、ns_njzb(內(nèi)江周邊)、ns_jqr(機器人管家)7張核心數(shù)據(jù)表,所有表均有主鍵,且外鍵均為其他表主鍵。其中,ns_zgjm為周公解夢知識庫,因此數(shù)據(jù)量可能偏大。數(shù)據(jù)庫表均有適當?shù)娜哂嘣O(shè)計,以便程序查詢,例如為了在廣場中方便留言用戶的顯示,在ns_bbs表中每一條記錄除了儲存用戶ID外,還儲存了用戶的昵稱。
4 系統(tǒng)功能模塊實現(xiàn)
該App主要采用webview和h5相結(jié)合開發(fā),其中外賣訂餐、預(yù)訂酒店、出行打車、附近地圖分別調(diào)用其領(lǐng)域的經(jīng)典應(yīng)用接口,如出行打車調(diào)用的是滴滴出行的接口。其余功能實現(xiàn)如下。{1}首頁:通過thbost實現(xiàn)滾動播放,通過線性布局上下對齊左上角的抽屜式菜單欄,通過DrawerLayout實現(xiàn),在抽屜菜單里面有內(nèi)江出行功能。{2}內(nèi)江周邊:主要涉及對ns_njzb表的增刪改查操作。{3}周公解夢:該功能需要一個強大的知識庫,因此需要使用到網(wǎng)絡(luò)爬蟲進行知識數(shù)據(jù)搜集,主要以關(guān)鍵詞對應(yīng)解釋的形式存儲于本地數(shù)據(jù)表ns_zgjm中,由于MySQL為關(guān)系型數(shù)據(jù)庫的原因,程序在進行查詢時會顯得死板且處理麻煩,因此該表的數(shù)據(jù)應(yīng)在服務(wù)啟動時,由程序進行數(shù)據(jù)初始化并異構(gòu),緩存于服務(wù)器內(nèi)存中。當用戶輸入自己的描述時,首先需要對用戶的描述進行拆分、分詞,并獲取其中的關(guān)鍵詞,再由關(guān)鍵詞模糊匹配緩存于服務(wù)器內(nèi)存中的數(shù)據(jù),最終獲取到匹配度最高的描述反饋給用戶。{4}綜合教務(wù)系統(tǒng):使用DeepLink跳轉(zhuǎn)到學院教務(wù)系統(tǒng)網(wǎng)站。{5}英語四級、六級題庫:將最近6年的英語四級、六級真題整理加入數(shù)據(jù)庫,供用戶查閱。{6}機器人管家:用戶發(fā)送消息后,首先對用戶的消息進行分詞處理,獲取關(guān)鍵詞,然后通過獲取到的關(guān)鍵詞在數(shù)據(jù)庫中查詢回復(fù)語,若庫中沒有關(guān)鍵詞對應(yīng)的回復(fù),則調(diào)用圖靈機器人接口獲取回復(fù),最后將相應(yīng)關(guān)鍵詞和回復(fù)入庫,以便下次對話時能夠直接從本地庫中獲取到回復(fù)語。
5 結(jié)語
本文提出了一種基于C/S架構(gòu)的內(nèi)江師范學院生活助手App。該App主要采用Android語言完成開發(fā),以c3p0+MySQL作為持久層,將MySQL服務(wù)部署于服務(wù)器中,避免內(nèi)網(wǎng)限制,以便支持移動端對于數(shù)據(jù)庫的直接訪問,為學院用戶提供多元服務(wù)。其存在不足之處,如UI視覺設(shè)計不足、降低界面交互性體驗。
參 考 文 獻
[1]朱劍鋒,熊志斌,尹成國.應(yīng)用型高等學校JAVA程序設(shè)計課程體系的改革[J].中國電力教育,2011(27):174-175.
[2]張利強.基于B/S的高校二手圖書交易平臺設(shè)計與實現(xiàn)[J].內(nèi)江師范學院學報,2017,32(10):55-59.
[3]李寧.Android/IPhone開發(fā)完全講義[M].北京:中國水利水電出版社,2010.
[4]Ed Burnett.Hello,Android:Introducing Googles Mobile Development Platform[J].PRAGMATIC BO-
OKSHELF,2010(7):10-11.
[5]Rick Rogers,John Lombardo.Android Application Development[M].OReilly Media Inc.,2009.
[6]楊豐盛.Android應(yīng)用開發(fā)揭秘[M].北京:機械工業(yè)出版社,2010.
[責任編輯:鐘聲賢]