陸奕帆,郭曉金,陳 沉,簡超峰
(重慶郵電大學(xué) 信號與信息處理重慶市重點實驗室,重慶 400065)
隨著近年來旅游業(yè)的飛速發(fā)展,越來越多的戶外活動得到了人們的關(guān)注。我國擁有龐大的旅游市場,私家車出游也將達到小高峰,一大批私家車服務(wù)設(shè)施如汽車旅館、汽車營地、加油維修站點等的建立將會帶動國內(nèi)自駕游出行人數(shù)的增長。隨著旅游業(yè)的蒸蒸日上,大量企業(yè)和資金的介入共同加速了旅游文化的發(fā)展,而露營地的建設(shè)也將成為旅游地的新亮點[1]。
智慧旅游作為智慧城市的外延,利用通信與信息技術(shù)提升客戶體驗,保障了行業(yè)信息一體化的管理,刺激旅游產(chǎn)業(yè)的快速發(fā)展。使用云計算、物聯(lián)網(wǎng)、下一代網(wǎng)絡(luò)等新技術(shù),借助終端通過互聯(lián)網(wǎng)或移動網(wǎng)絡(luò)主動獲取旅游資源,實現(xiàn)服務(wù)于大眾的全新旅游模式。本文設(shè)計了基于Android系統(tǒng)的露營地信息軟件系統(tǒng)。傳統(tǒng)的信息系統(tǒng)數(shù)據(jù)庫在設(shè)計之初采用Android內(nèi)嵌Sqlite數(shù)據(jù)庫,由于屬于應(yīng)用程序的一部分,占用Android客戶手機內(nèi)存空間。而本露營信息系統(tǒng)基于傳統(tǒng)系統(tǒng)的基礎(chǔ)上,將所需的露營信息數(shù)據(jù)庫放置在網(wǎng)絡(luò)數(shù)據(jù)庫服務(wù)端,采用Web Service技術(shù)[2]實現(xiàn)網(wǎng)絡(luò)傳輸數(shù)據(jù),利用網(wǎng)絡(luò)流媒體數(shù)據(jù)傳輸視頻,結(jié)合智慧旅游概念,提升使用者的服務(wù)體驗。
露營信息系統(tǒng)的主題設(shè)計思路是Android操縱端能夠通過實際需要進行露營地推薦、露營地的篩選、獲得指定露營地的圖片、露營地介紹、預(yù)定電話以及地理地圖的顯示。
該系統(tǒng)采用C/S體系結(jié)構(gòu)如圖1所示,將應(yīng)用程序分為數(shù)據(jù)庫服務(wù)器和客戶端應(yīng)用程序兩個部分。數(shù)據(jù)庫服務(wù)器一旦被啟動就隨時等待相應(yīng)客戶端應(yīng)用程序發(fā)出的請求,客戶端應(yīng)用程序能夠自動尋找服務(wù)器程序,請求發(fā)送并接收數(shù)據(jù)庫服務(wù)器返回來的露營地相應(yīng)信息。
圖1 C/S體系結(jié)構(gòu)圖
系統(tǒng)使用MyEclipse、JDK、Tomcat、MySql開發(fā)服務(wù)器端,使用Eclipse、JDK、Android SDK、ADT開發(fā)Android客戶端。
在Web Service服務(wù)器端采用CXF架構(gòu)與Spring和Hibernate架構(gòu)結(jié)合使用,使服務(wù)器端具有高類聚低耦合的特性。Android端作為手持移動終端,利用Tomcat作為自定義Web Service的服務(wù)器調(diào)用露營地相關(guān)信息。根據(jù)露營地的地理信息請求給百度地圖,通過對百度地圖的調(diào)用實現(xiàn)地圖功能。通過百度媒體云平臺實現(xiàn)視頻公開流媒體地址。系統(tǒng)時序圖如圖2所示。
圖2 系統(tǒng)時序圖
露營信息查詢系統(tǒng)主要模塊有露營地查詢篩選模塊、露營地推薦模塊、百度地圖的應(yīng)用。軟件功能圖如圖3所示。
露營地查詢篩選模塊主要運用自定義Web Service接口調(diào)用數(shù)據(jù)庫查詢露營地名稱或根據(jù)具體露營地調(diào)用詳細信息。
露營地推薦模塊中圖片推薦主要通過自定義接口實現(xiàn)調(diào)用,視頻推薦模塊通過自定義接口獲得指定視頻的公開流媒體地址,實現(xiàn)視頻播放。
地圖規(guī)劃模塊通過Android客戶端請求地理位置編碼給百度地圖API定位選擇的露營地并且根據(jù)需要規(guī)劃路徑。
圖3 軟件功能圖
此模塊采用C/S體系結(jié)構(gòu),實現(xiàn)了Android客戶端與自定義Web Service服務(wù)器的連接、方法調(diào)用和數(shù)據(jù)的傳輸。Android端需要在AndroidManifest.xm l上聲明WiFi和GPRS的權(quán)限及操作權(quán)限,使客戶端能夠連接網(wǎng)絡(luò)搜索到自定義服務(wù)器。使用ksoap2-android.jar文件調(diào)用Web Service所暴露的操作。
2.1.1 Web Service請求和響應(yīng)
在客戶端定義WebServiceUtil類利用現(xiàn)有ksoap2_android.jar包實現(xiàn)服務(wù)器與客戶端的連接。連接Web Service方法如下:HttpTransportSE transport=new HttpTransportSE(url)創(chuàng)建此實例對象實現(xiàn)調(diào)用操作,envelope.bodyOut=soapObject將傳出SOAP消息給Web Service。調(diào)用transport.call(soupaction,envelope)作為遠程調(diào)用Web Service。使用SoapObject result1=(SoapObject)envelope1.bodyIn獲取服務(wù)器響應(yīng)返回的SOAP消息。Android端調(diào)用Web Service的流程圖如圖4所示。
2.1.2 露營地查詢及篩選模塊實現(xiàn)
用戶可根據(jù)直接錄入露營地名稱實現(xiàn)模糊查詢,或者經(jīng)由主題、省份、星級和類別選擇的方式篩選查詢露營地名稱。
點擊查詢或篩選按鈕,Android手機客戶端開始建立與Web Service服務(wù)器的聯(lián)系,將所要調(diào)用的Web Service接口名稱以及參數(shù)值傳輸?shù)絎eb Service。再由自定義服務(wù)器內(nèi)部查詢,將數(shù)據(jù)庫中的信息響應(yīng)返回Android手機客戶端應(yīng)用程序,實現(xiàn)數(shù)據(jù)在UI界面上的顯示。
為了更好地反饋及響應(yīng)信息,本系統(tǒng)采用List<Map<String,Object>>的數(shù)據(jù)類型,將相應(yīng)的詳細信息封裝到Map<String,Object>中,使用鍵值對方便信息的調(diào)用,并且使用List對象封裝數(shù)據(jù),方便數(shù)據(jù)的存取,保證了數(shù)據(jù)的高效性和準確性。
圖4 Android端調(diào)用Web Service的流程圖
視頻推薦模塊采用網(wǎng)絡(luò)視頻作為源視頻,百度媒體云通過HTTP Restful API以及跨終端平臺SDK實現(xiàn)基于BCS視頻存儲、編碼、分布式轉(zhuǎn)碼等相關(guān)視頻服務(wù)。
Android當前支持Http協(xié)議和RTSP協(xié)議傳輸視頻流媒體[3]。
1)獲取url地址
利用百度媒體云,將所需視頻傳輸?shù)矫襟w云中,根據(jù)Android所需格式大小進行轉(zhuǎn)碼處理后公開流媒體地址,存儲在數(shù)據(jù)庫中。在Android程序中利用Web Service接口獲取數(shù)據(jù)庫中的url地址。
2)播放視頻
使用Android中的VideoView作為容器盛放視頻流媒體,使用MediaController控制流媒體播放及進程。主要代碼如下:
main_video=(videoview)findViewById(R.id.main_video);
MediaController mc=new MediaController(this);
main_video.setVideoURI(Uri.parse(url));
main_video.setMediaController(mc);
main_video.requestFocus();
main_video.start();
JavaScript語言寫的百度地圖API能夠?qū)俣鹊貓D嵌入到用戶指定客戶端。利用百度地圖API,露營信息系統(tǒng)的地圖模塊調(diào)用百度地圖步驟如下:
1)連接調(diào)用百度地圖
首先,在AndroidManifest.xml中添加在百度公司官網(wǎng)注冊軟件獲得的密鑰,導(dǎo)入百度地圖API。在xml文件中聲明和獲得WiFi、網(wǎng)絡(luò)、精確定位GPS等相關(guān)權(quán)限。在調(diào)用地圖定義的類SDKInitializer.initialize(getApplicationContext())實現(xiàn)地圖SDK各組件調(diào)用的初始化,創(chuàng)建MapView實例對象,使用戶獲得地圖資源的控制。其次,初始化搜索模塊并注冊事件監(jiān)聽,其中監(jiān)聽器功能包括標記查找位置、設(shè)置地圖的中心點等。最后發(fā)起地理編碼的請求,實現(xiàn)地理信息在地圖上的定位等功能。
2)定位當前所在位置
使用百度地圖定位SDK,采用GPS、基站、WiFi信號定位[4]。當應(yīng)用程序向定位、SDK發(fā)起定位請求時,定位SDK會根據(jù)應(yīng)用的3種定位信息的優(yōu)先順序(默認順序為GPS、WiFi、基站定位)以及實際的開啟及連接情況來生成相應(yīng)定位依據(jù)進行高精度混合定位。百度地圖定位原理圖如圖5所示。百度地圖API采用經(jīng)緯度坐標系和莫卡托投影坐標系,其中經(jīng)緯度坐標系利用地球上的球面坐標系統(tǒng),摩卡托投影坐標系是一種等角正切圓柱投影[5]。
圖5 百度地圖定位原理圖
首先在工程文件中加入開發(fā)包locSDK.jar,在百度地圖定位模塊中,首先在主線程中聲明LocationClient類設(shè)定相應(yīng)參數(shù)。其次,實現(xiàn)BDLocationListener接口實現(xiàn)數(shù)據(jù)為BDLocation類型的接收異步返回的定位結(jié)果。其定位關(guān)鍵代碼如下:
3)規(guī)劃路徑
地圖的路徑規(guī)劃是特殊的空間檢索,首先要對檢索的相關(guān)方法進行初始化即明確要搜索路徑的起點和終點。Android SDK支持路徑搜索,百度地圖API提供的服務(wù)接口為:TransitRoute公交路線搜索服務(wù),DrivingRoute駕車路線搜索服務(wù),WalkingRoute步行路徑搜索服務(wù),TrafficControl實時路況控件提供實時和歷史路況信息服務(wù)[6]。
駕車路線搜索分為3種策略:時間最優(yōu)(MKSearch.ECAR_TIME_FIRST)、費用最少(MKSearch.ECAR_FEE_FIRST)和距離最短(MKSearch.ECAR_DIS_FIRST)。步行和公交路線搜索主要使用百度地圖API所提供的接口[7]。其路線搜索返回搜索結(jié)果關(guān)鍵代碼如下:
根據(jù)上述的環(huán)境和設(shè)計開放情況,首先在MyEclipse軟件中開啟Tomcat,使自定義Web Service作為數(shù)據(jù)庫服務(wù)器提供數(shù)據(jù)支持,其次將Android露營信息系統(tǒng)的apk安裝到Android手機終端,開始進行測試。
1)UI主界面顯示
UI主界面實現(xiàn)對系統(tǒng)功能的導(dǎo)航,方便使用者能夠快速找到想要的功能。在主界面上主要提供了查詢露營地、篩選露營地、地圖定位導(dǎo)航以及熱門露營地推薦功能,如圖6所示。露營地具體查詢方式以及詳細露營信息如圖7所示。
圖6 露營信息系統(tǒng)主界面(截圖)
圖7 露營地查詢功能界面(截圖)
2)地圖定位和規(guī)劃
Android客戶端開啟GPS或WiFi功能,應(yīng)用程序?qū)⑼ㄟ^定位請求發(fā)起定位模式,并且根據(jù)用戶的選擇幫助用戶規(guī)劃露營地路線,如圖8所示。
圖8 地圖定位和規(guī)劃界面(截圖)
露營信息系統(tǒng)在一定程度上了滿足了露營愛好者對于露營地的信息需求,不僅為用戶提供露營地的信息查詢,解決了Android手機用戶僅僅使用少量的內(nèi)存就可以完成方便快捷的露營信息查詢,減少了以往的數(shù)據(jù)庫信息都存儲在應(yīng)用程序內(nèi)部的問題,而且還擴展了地圖的功能,在系統(tǒng)中添加了地圖定位和規(guī)劃,方便用戶使用。此外,為了獲得更好的用戶體驗,露營信息系統(tǒng)還能進一步完善,做到各個客戶端的交互,實現(xiàn)資源共享,完成各個客戶端之間的互聯(lián)互通功能。
[1] 向富華.中國房車旅游發(fā)展存在的問題及對策探討[J].三峽大學(xué)學(xué)報:人文社會科學(xué)版,2014(1):46-51.
[2] ARMSTRONG E.The Java Web Service tutorial[M].USA:Pearsopn,2003.
[3] 魏濤,彭濤,鄭建宏,等.基于Android的流媒體播放器的研究與設(shè)計[J].電視技術(shù),2014,38(9):102-104.
[4] 王培海.基于Android的移動云存儲系統(tǒng)設(shè)計與實現(xiàn)[J].電視技術(shù),2011,35(15):94-97.
[5] 孫咸磊,許捍衛(wèi).基于移動設(shè)備的定位跟蹤系統(tǒng)及其實現(xiàn)[J].地理空間信息,2014(2):111-113.
[6] 李釗,吳瓊霖,杜美玲.基于iphone的地圖搜索應(yīng)用的設(shè)計與實現(xiàn)[J].電腦知識與技術(shù),2014(5):1035-1037.
[7] 董紹軒.GIS中常用坐標系的比較與轉(zhuǎn)換[J].硅谷,2013(11):163-140.