孫杰,楊蓮紅
?
基于Android的景區(qū)自助導(dǎo)游系統(tǒng)的設(shè)計與實現(xiàn)
孫杰,楊蓮紅1
(昌吉學(xué)院物理系,新疆昌吉 831100)
為給大眾的自助游和自由行提供幫助,利用Android SDK、Baidu Map API和JAVA工具開發(fā)了景區(qū)自助導(dǎo)游系統(tǒng).系統(tǒng)分為面向游客的自助導(dǎo)游程序和面向景區(qū)管理人員的維護程序,分別采用C/S架構(gòu)和MVC開發(fā)模式.系統(tǒng)實現(xiàn)了景區(qū)線路自動規(guī)劃、景點自助講解、展品二維碼掃描、景點搜索定位、公共設(shè)施搜索定位和景區(qū)信息推送等功能.
Android;景區(qū);自助導(dǎo)游;自助講解
當(dāng)前,旅游已經(jīng)成為普通民眾一種重要的休閑娛樂方式.同時,隨著移動通訊技術(shù)的發(fā)展,智能手機已經(jīng)融入現(xiàn)代生活的方方面面,成為百姓日常工作學(xué)習(xí)生活的必需品.在此背景下,傳統(tǒng)的旅游服務(wù)已經(jīng)不能滿足游客的需求,人們對旅游信息化提出更多更高的要求,即利用手機實時了解景區(qū)景點客流量,減少排隊等待情況;通過手機導(dǎo)航自助游覽景區(qū),適時適地對景點進行解說,實現(xiàn)電子自助導(dǎo)游[1];通過電子地圖確定自己所在的位置,便于規(guī)劃旅游線路、防止迷路或走失等.
近年來,以谷歌的Google Map、雅虎的Yahoo!Local MAP、微軟的Virtual Earth為代表的地圖導(dǎo)航定位系統(tǒng)的成功應(yīng)用,極大地帶動了各種各樣的基于地理位置的服務(wù)(LBS,Location-Based Services).特別是Android開源移動開發(fā)平臺和Baidu Map API的推出,國內(nèi)很多研究者針對特定區(qū)域開發(fā)了不同的地理位置服務(wù)系統(tǒng),如校園導(dǎo)航系統(tǒng)[2]、景區(qū)移動終端服務(wù)平臺[3]、海南自助游導(dǎo)航系統(tǒng)[4]和基于云平臺的手機導(dǎo)游系統(tǒng)等.這些研究一方面有效促進了旅游景區(qū)信息化的水平,另一方面對開發(fā)各種面向景區(qū)自助導(dǎo)游系統(tǒng)提供了寶貴經(jīng)驗和技術(shù)借鑒.但是從滿足用戶個性化需求、方便景區(qū)管理者需要、完善自助導(dǎo)游的功能及提高系統(tǒng)性能等方面仍有很大的提升空間.
本系統(tǒng)以新疆農(nóng)業(yè)博覽園旅游景區(qū)為開發(fā)對象,整個系統(tǒng)由面向游客的農(nóng)博園景區(qū)自助導(dǎo)游APP、農(nóng)博園景區(qū)信息發(fā)布和更新的后臺維護程序組成.自助導(dǎo)游子系統(tǒng)基于Android平臺和Baidu Map API接口,采用CS架構(gòu)開發(fā);景區(qū)資源管理維護子系統(tǒng)基于Web平臺,采用MVC模式開發(fā).
圖1 自助導(dǎo)游子系統(tǒng)C/S架構(gòu)
1.1 自助導(dǎo)游子系統(tǒng)架構(gòu)
基于Android的自助導(dǎo)游子系統(tǒng)使用的是C/S 架構(gòu)(Client/Server),即客戶機和服務(wù)器結(jié)構(gòu).自助導(dǎo)游子系統(tǒng)采用C/S架構(gòu)的目的是充分利用智能手機的移動計算能力以及服務(wù)器強大數(shù)據(jù)并行處理能力,發(fā)揮兩端的硬件優(yōu)勢,合理地將任務(wù)分配到客戶端和服務(wù)端[5],使整個系統(tǒng)高效協(xié)同運轉(zhuǎn).在本系統(tǒng)中,手機作為客戶端顯示用戶界面,負(fù)責(zé)數(shù)據(jù)的輸入、傳輸和處理結(jié)果的顯示,大量的數(shù)據(jù)處理任務(wù)由服務(wù)器擔(dān)當(dāng),通常在網(wǎng)絡(luò)順暢情況下,普通智能手機都會流暢運行本系統(tǒng).用戶在使用自助導(dǎo)游系統(tǒng)時,需要安裝景區(qū)自助導(dǎo)航APP.客戶端APP通過Socket與服務(wù)器端進行通信.自助導(dǎo)游子系統(tǒng)架構(gòu)見圖1.
1.2 管理維護子系統(tǒng)設(shè)計模式
基于Web的管理維護子系統(tǒng)采用了J2EE開發(fā)中廣泛使用且成熟的MVC設(shè)計模式[5],即模型——視圖——控制器(Model-View-Controller,MVC).MVC模式的特點是低耦合、高重用,將項目開發(fā)依據(jù)功能明確分為視圖層、控制層和模式層.View負(fù)責(zé)數(shù)據(jù)的展現(xiàn),主要是UI元素的設(shè)計,本系統(tǒng)采用JSP技術(shù)實現(xiàn);Controller負(fù)責(zé)邏輯處理,主要是負(fù)責(zé)轉(zhuǎn)發(fā)請求,對請求進行處理,本系統(tǒng)采用Servlet技術(shù)實現(xiàn);Model負(fù)責(zé)業(yè)務(wù)邏輯,主要是數(shù)據(jù)的處理和持久化,本系統(tǒng)采用JavaBean實現(xiàn).
需求分析是系統(tǒng)功能設(shè)計的前提,主要是通過多種方式理解用戶需求,使得最終設(shè)計完成的軟件在功能上滿足用戶的使用需要.本系統(tǒng)的功能分為景區(qū)概覽、自助導(dǎo)游、電子地圖、信息推送和景區(qū)資源維護5個部分,具體功能見圖2.
圖2 自助導(dǎo)游子系統(tǒng)功能圖
2.1 景區(qū)概覽
新疆農(nóng)業(yè)博覽園分為A,B,C3個展區(qū),分別建設(shè)有17個大型展館,種植和培育千余種珍稀的熱帶植物及近百萬株各類鮮花.景區(qū)概覽通過圖、文、視頻等方式對農(nóng)業(yè)博覽園的概況進行介紹,列出農(nóng)博園的主要分區(qū)和各區(qū)的展覽館,向游客展示園區(qū)鳥瞰圖,一方面使游客對景區(qū)有一個總體了解,另一方面也可用作園區(qū)對外宣傳的窗口.
2.2 自助導(dǎo)游
自助導(dǎo)游是系統(tǒng)的核心功能.當(dāng)游客選定起始位置和準(zhǔn)備參觀的展館,它可以幫助游客規(guī)劃合理的路徑(即到達(dá)展區(qū)的最短路徑);當(dāng)游客進入某一展區(qū)或展館鄰域,系統(tǒng)自動開啟對展區(qū)或展館介紹功能,默認(rèn)播放語音解說詞;當(dāng)展館內(nèi)相鄰物種之間的距離較近時,利用手機獲得的經(jīng)緯度信息,很難對不同物種進行精確定位,不能對物種進行準(zhǔn)確區(qū)分,系統(tǒng)提供掃描二維碼掃描功能,通過掃描園區(qū)物種的二維碼,系統(tǒng)自動通過網(wǎng)絡(luò)檢索服務(wù)器的數(shù)據(jù),進而得到物種的詳細(xì)信息,并以多媒體的方式展示給游客.為保障景區(qū)物種的完整性和游客的安全,提醒游客保護植物、文明參觀是非常重要的.
2.3 電子地圖
由于自助游和自由行的游客行動自由且沒有導(dǎo)游帶領(lǐng),游客定位功能幫助游客獲知自己在景區(qū)的方位,可防止迷路或走失情況的發(fā)生.景點搜索提供景點在地圖上的位置,游客可以隨機改變參觀線路.公共設(shè)施搜索功能有助于解決游客在景區(qū)或景區(qū)周邊的吃喝住等問題.
2.4 信息推送
系統(tǒng)適時、間歇地推送某一展區(qū)或展館的人數(shù),能有效地防止游客蜂擁到某一展區(qū)或展館,造成長時間排隊或引發(fā)擁擠踩踏等不良事件的發(fā)生.推送景點天氣[6],有助于游客根據(jù)天氣安排參觀計劃、增減衣服.
2.5 景區(qū)資源維護
景區(qū)資源維護是面向園區(qū)資源管理子系統(tǒng)的功能,管理員通過IE瀏覽器登錄后,可對園區(qū)地圖、多媒體信息及二維碼進行更新.
3.1 屏幕切換技術(shù)
基于Android自助導(dǎo)游系統(tǒng)是由多個頁面組成,從APP構(gòu)成的角度來看頁面主要分為聚合頁面、列表頁面和內(nèi)容頁面.聚合頁面通常是一個系統(tǒng)的主界面,包含了主要的功能;列表頁面也通常是主界面中某一個功能所包含的子功能;內(nèi)容頁面是最終展示給用戶的信息頁面.頁面也即通常所說的屏幕,應(yīng)用系統(tǒng)通常采用多個屏幕顯示所有功能,因此常會在主界面和各個子界面之間轉(zhuǎn)換,即屏幕切換.在Android開發(fā)中,每一個單獨的屏幕對應(yīng)一個Activity類,應(yīng)用系統(tǒng)通常由多個Activities組成,它們之間是松耦合關(guān)系.在應(yīng)用程序中主界面或第一次啟動系統(tǒng)時呈現(xiàn)給用戶的屏幕通常被指定為“main activity”,不同Activity相互啟動完成不同的動作.已經(jīng)啟動的Activity被存儲于“Back Stack”棧中,新啟動的Activity被置于棧頂,獲得用戶焦點,舊的Activity停止,但只有當(dāng)用戶點擊back按鈕,當(dāng)前的Activity才被彈出堆棧并被銷毀.默認(rèn)情況下,Android將會保留從主屏幕到每一個應(yīng)用的運行屏幕.
Activity之間的跳轉(zhuǎn)及平面之間的切換,有2種方法:一種是無返回值的簡單跳轉(zhuǎn),通過調(diào)用startActivity函數(shù)實現(xiàn);另一種是需要返回結(jié)果的跳轉(zhuǎn),通過調(diào)用startActivityForResult函數(shù)實現(xiàn),requestCode是用戶自定義的值,用于標(biāo)識目標(biāo)Activity,Intent是Android中的“意圖”類,負(fù)責(zé)對系統(tǒng)中一次操作的動作、數(shù)據(jù)和附加數(shù)據(jù)進行描述,Android根據(jù)描述找到對應(yīng)的組件.
3.2 地圖加載實現(xiàn)
解析AndroidManifest.xml文件可知,一個Android項目就是一個application對象.本系統(tǒng)重寫了application類,使用了設(shè)計模式中的單例設(shè)計,通過單例模式可以保證系統(tǒng)中一個類只有一個實例而且該實例易于外界訪問,從而方便對實例個數(shù)的控制并節(jié)約系統(tǒng)資源.本系統(tǒng)凡是用到地圖加載的界面中,都需要驗證地圖功能是否授權(quán),即匹配Baidu API key是否正確,而這個對象只需要實例化一個即可,因此采用了單例設(shè)計模式,要求該application類的對象只存在一個.具體實現(xiàn)步驟:
(1)首先定義一個靜態(tài)的類對象:private static MyApplication mInstance = null;
(2)再通過定義一個靜態(tài)的類方法來返回一個自身實例化對象:
public static MyApplication getInstance() { return mInstance;}
(3)通過以上單例設(shè)計模式的創(chuàng)建,在每個界面只需要如下代碼即可進行百度開發(fā)身份授權(quán)的驗證以及加載:
MyApplication app =(MyApplication)this.getApplication();
if (app.mBMapManager == null) {
app.mBMapManager = new BMapManager(this);
app.mBMapManager.init(app.strKey,
new MyApplication.MyGeneralListener());}
3.3 電子地圖實現(xiàn)
電子地圖的實現(xiàn)主要依賴于Baidu Map API接口提供的類.百度地圖開發(fā)提供了com.baidu.mapapi.map地圖包,這個包里有很多重要的類,借助這些類可以實現(xiàn)景區(qū)地圖的加載與更新、游客自身定位、景點與公共設(shè)施搜索和路徑規(guī)劃.本系統(tǒng)路徑規(guī)劃實現(xiàn)方法是在百度路徑規(guī)劃的基礎(chǔ)上,采用FLOYD算法對實際路徑規(guī)劃進行了適當(dāng)?shù)男薷?,以便更加符合景區(qū)范圍內(nèi)的路徑搜索.電子地圖的各種功能實現(xiàn)與所使用的Baidu Map API具體類的對應(yīng)關(guān)系見圖3.
圖3 自助導(dǎo)游子系統(tǒng)功能圖
3.4 推送服務(wù)
本系統(tǒng)的推送服務(wù)主要是將景區(qū)各景點的參觀人數(shù)、景點天氣狀況及時地通過服務(wù)端發(fā)送到游客的自助導(dǎo)游系統(tǒng).推送服務(wù)就是不定時獲取服務(wù)器上更新的消息,一般有2種方法實現(xiàn):一是客戶端使用Pull(拉)的方式,用間隔一定時間的方式到服務(wù)器上去獲取一下信息,看是否有更新的信息出現(xiàn)[7];二是服務(wù)器使用Push(推送)的方式,當(dāng)服務(wù)器端有新信息了,則把最新的信息推送到客戶端上.本系統(tǒng)采用持久連接(Push)方式,利用XMPP協(xié)議實現(xiàn)Android推送功能.
3.5 景點多媒體信息播放
系統(tǒng)采用了2種方式觸發(fā)景點多媒體信息的播放的方式:一種是以該景點的經(jīng)緯度為圓心形成一個最小覆蓋園[8],將圓心和半徑數(shù)據(jù)存入數(shù)據(jù)庫中,當(dāng)游客進入該景點的覆蓋圓范圍內(nèi),導(dǎo)游系統(tǒng)開啟景點自動講解模式;另一種是當(dāng)景區(qū)范圍太小時(如在廟宇廳堂內(nèi)),不足以準(zhǔn)確定位,講解進程的觸發(fā)通過用戶掃描展品(景點)的二維碼實現(xiàn).二維碼掃描觸發(fā)自動講解的方式經(jīng)常用于博物館、展覽館等旅游景點的自助導(dǎo)游系統(tǒng).
4.1 運行效果
基于Android的自助導(dǎo)游子系統(tǒng)運行效果見圖4.系統(tǒng)主界面見圖4a,分別設(shè)計實現(xiàn)了景區(qū)概況、線路規(guī)劃、景區(qū)地圖、自身定位、設(shè)施查詢、信息服務(wù)(信息推送)、展品掃描和景點查詢功能.景區(qū)地圖見圖4b,農(nóng)業(yè)產(chǎn)品的二維碼掃描自動語音、圖片和文字介紹見圖4c.
圖 4 系統(tǒng)運行效果
4.2 Web管理維護子系統(tǒng)
博物館管理人員要對系統(tǒng)進行管理和維護,必須要擁有合法的權(quán)限,通過IE瀏覽器登陸維護系統(tǒng).系統(tǒng)維護主要包含系統(tǒng)管理員管理、景區(qū)概況管理、景區(qū)地圖管理、農(nóng)產(chǎn)品和花卉的二維碼更新、推送信息管理、景點和展品等的多媒體文件管理.
本文開發(fā)了基于Android的景區(qū)自助導(dǎo)游系統(tǒng),本系統(tǒng)針對新疆農(nóng)業(yè)科技博覽園景區(qū)開發(fā),在開發(fā)前對園區(qū)進行了實地調(diào)研,分析了游客和景區(qū)管委會的需求.在開發(fā)中使用Eclipse集成開發(fā)環(huán)境編程實現(xiàn)了基于Android的自助導(dǎo)游子系統(tǒng),使用Myeclipse集成開發(fā)環(huán)境設(shè)計實現(xiàn)了Web端的維護管理子系統(tǒng),MySQL數(shù)據(jù)庫存取數(shù)據(jù).總之,該系統(tǒng)基本實現(xiàn)景區(qū)自助導(dǎo)游系統(tǒng)的基本功能,一些功能還需進一步研究完善.
[1] 杜延磊,韓雨航.基于Andriod平臺的導(dǎo)游軟件開發(fā)[J].電子制作,2013(7):75-76
[2] 趙振峰,董日壯.基于安卓的手機校園導(dǎo)航應(yīng)用系統(tǒng)[J].電腦知識與技術(shù),2014(30):7050-7052
[3] 吳濤,徐軼群.基于Android平臺的景區(qū)導(dǎo)覽軟件設(shè)計與實現(xiàn)[J].計算機時代,2014(12):35-37,41
[4] 郝波.基于Android的海南自助旅游系統(tǒng)開發(fā)[J].中國新通信,2015(24):74-75
[5] 薛峰,梁鋒,徐書勛,等.基于Spring MVC框架的Web研究與應(yīng)用[J].合肥工業(yè)大學(xué)學(xué)報:自然科學(xué)版,2012(3):337-340
[6] 郭華龍,林昌旻.基于Android平臺的旅游信息發(fā)布系統(tǒng)的開發(fā)與研究[J].赤峰學(xué)院學(xué)報:自然科學(xué)版,2014(2):31-33
[7] 朱奎,王未央.基于Android系統(tǒng)的大數(shù)據(jù)推送平臺研究[J].現(xiàn)代計算機:專業(yè)版,2014(4):62-65,70
[8] 宋永生.基于Android的導(dǎo)游系統(tǒng)的設(shè)計與實現(xiàn)[J].信息技術(shù),2012(4):107-112
The design and implementation of tourism area self-guide system based on Android
SUN Jie,YANG Lian-hong
(Department of Physics,Changji University,Changji 831100,China)
To offer help for people's independent travel and free walker,developed tourism area self-guide system using tools of Android SDK,Baidu Map API and JAVA.The system is separated into two parts,oriented visitor's self-guide sub-system developed by C/S framework and oriented administrator's maintenance sub-system developed by MVC schema. The system implemented automatic planning route,introducing scenic spots,scanning QR code,searching and locating spot and public facilities etc.
Android;scenic spots;self-help guide;self-help exhibition
1007-9831(2016)09-0038-05
TP399
A
10.3969/j.issn.1007-9831.2016.09.011
2016-07-08
孫杰(1976-),男,新疆昌吉人,講師,碩士,從事計算機應(yīng)用技術(shù)和信息技術(shù)研究.E-mail:sunnyjiejie@126.com