孫杰,楊蓮紅
?
基于Android的景區自助導游系統的設計與實現
孫杰,楊蓮紅1
(昌吉學院物理系,新疆昌吉 831100)
為給大眾的自助游和自由行提供幫助,利用Android SDK、Baidu Map API和JAVA工具開發了景區自助導游系統.系統分為面向游客的自助導游程序和面向景區管理人員的維護程序,分別采用C/S架構和MVC開發模式.系統實現了景區線路自動規劃、景點自助講解、展品二維碼掃描、景點搜索定位、公共設施搜索定位和景區信息推送等功能.
Android;景區;自助導游;自助講解
當前,旅游已經成為普通民眾一種重要的休閑娛樂方式.同時,隨著移動通訊技術的發展,智能手機已經融入現代生活的方方面面,成為百姓日常工作學習生活的必需品.在此背景下,傳統的旅游服務已經不能滿足游客的需求,人們對旅游信息化提出更多更高的要求,即利用手機實時了解景區景點客流量,減少排隊等待情況;通過手機導航自助游覽景區,適時適地對景點進行解說,實現電子自助導游[1];通過電子地圖確定自己所在的位置,便于規劃旅游線路、防止迷路或走失等.
近年來,以谷歌的Google Map、雅虎的Yahoo!Local MAP、微軟的Virtual Earth為代表的地圖導航定位系統的成功應用,極大地帶動了各種各樣的基于地理位置的服務(LBS,Location-Based Services).特別是Android開源移動開發平臺和Baidu Map API的推出,國內很多研究者針對特定區域開發了不同的地理位置服務系統,如校園導航系統[2]、景區移動終端服務平臺[3]、海南自助游導航系統[4]和基于云平臺的手機導游系統等.這些研究一方面有效促進了旅游景區信息化的水平,另一方面對開發各種面向景區自助導游系統提供了寶貴經驗和技術借鑒.但是從滿足用戶個性化需求、方便景區管理者需要、完善自助導游的功能及提高系統性能等方面仍有很大的提升空間.
本系統以新疆農業博覽園旅游景區為開發對象,整個系統由面向游客的農博園景區自助導游APP、農博園景區信息發布和更新的后臺維護程序組成.自助導游子系統基于Android平臺和Baidu Map API接口,采用CS架構開發;景區資源管理維護子系統基于Web平臺,采用MVC模式開發.

圖1 自助導游子系統C/S架構
1.1 自助導游子系統架構
基于Android的自助導游子系統使用的是C/S 架構(Client/Server),即客戶機和服務器結構.自助導游子系統采用C/S架構的目的是充分利用智能手機的移動計算能力以及服務器強大數據并行處理能力,發揮兩端的硬件優勢,合理地將任務分配到客戶端和服務端[5],使整個系統高效協同運轉.在本系統中,手機作為客戶端顯示用戶界面,負責數據的輸入、傳輸和處理結果的顯示,大量的數據處理任務由服務器擔當,通常在網絡順暢情況下,普通智能手機都會流暢運行本系統.用戶在使用自助導游系統時,需要安裝景區自助導航APP.客戶端APP通過Socket與服務器端進行通信.自助導游子系統架構見圖1.
1.2 管理維護子系統設計模式
基于Web的管理維護子系統采用了J2EE開發中廣泛使用且成熟的MVC設計模式[5],即模型——視圖——控制器(Model-View-Controller,MVC).MVC模式的特點是低耦合、高重用,將項目開發依據功能明確分為視圖層、控制層和模式層.View負責數據的展現,主要是UI元素的設計,本系統采用JSP技術實現;Controller負責邏輯處理,主要是負責轉發請求,對請求進行處理,本系統采用Servlet技術實現;Model負責業務邏輯,主要是數據的處理和持久化,本系統采用JavaBean實現.
需求分析是系統功能設計的前提,主要是通過多種方式理解用戶需求,使得最終設計完成的軟件在功能上滿足用戶的使用需要.本系統的功能分為景區概覽、自助導游、電子地圖、信息推送和景區資源維護5個部分,具體功能見圖2.

圖2 自助導游子系統功能圖
2.1 景區概覽
新疆農業博覽園分為A,B,C3個展區,分別建設有17個大型展館,種植和培育千余種珍稀的熱帶植物及近百萬株各類鮮花.景區概覽通過圖、文、視頻等方式對農業博覽園的概況進行介紹,列出農博園的主要分區和各區的展覽館,向游客展示園區鳥瞰圖,一方面使游客對景區有一個總體了解,另一方面也可用作園區對外宣傳的窗口.
2.2 自助導游
自助導游是系統的核心功能.當游客選定起始位置和準備參觀的展館,它可以幫助游客規劃合理的路徑(即到達展區的最短路徑);當游客進入某一展區或展館鄰域,系統自動開啟對展區或展館介紹功能,默認播放語音解說詞;當展館內相鄰物種之間的距離較近時,利用手機獲得的經緯度信息,很難對不同物種進行精確定位,不能對物種進行準確區分,系統提供掃描二維碼掃描功能,通過掃描園區物種的二維碼,系統自動通過網絡檢索服務器的數據,進而得到物種的詳細信息,并以多媒體的方式展示給游客.為保障景區物種的完整性和游客的安全,提醒游客保護植物、文明參觀是非常重要的.
2.3 電子地圖
由于自助游和自由行的游客行動自由且沒有導游帶領,游客定位功能幫助游客獲知自己在景區的方位,可防止迷路或走失情況的發生.景點搜索提供景點在地圖上的位置,游客可以隨機改變參觀線路.公共設施搜索功能有助于解決游客在景區或景區周邊的吃喝住等問題.
2.4 信息推送
系統適時、間歇地推送某一展區或展館的人數,能有效地防止游客蜂擁到某一展區或展館,造成長時間排隊或引發擁擠踩踏等不良事件的發生.推送景點天氣[6],有助于游客根據天氣安排參觀計劃、增減衣服.
2.5 景區資源維護
景區資源維護是面向園區資源管理子系統的功能,管理員通過IE瀏覽器登錄后,可對園區地圖、多媒體信息及二維碼進行更新.
3.1 屏幕切換技術
基于Android自助導游系統是由多個頁面組成,從APP構成的角度來看頁面主要分為聚合頁面、列表頁面和內容頁面.聚合頁面通常是一個系統的主界面,包含了主要的功能;列表頁面也通常是主界面中某一個功能所包含的子功能;內容頁面是最終展示給用戶的信息頁面.頁面也即通常所說的屏幕,應用系統通常采用多個屏幕顯示所有功能,因此常會在主界面和各個子界面之間轉換,即屏幕切換.在Android開發中,每一個單獨的屏幕對應一個Activity類,應用系統通常由多個Activities組成,它們之間是松耦合關系.在應用程序中主界面或第一次啟動系統時呈現給用戶的屏幕通常被指定為“main activity”,不同Activity相互啟動完成不同的動作.已經啟動的Activity被存儲于“Back Stack”棧中,新啟動的Activity被置于棧頂,獲得用戶焦點,舊的Activity停止,但只有當用戶點擊back按鈕,當前的Activity才被彈出堆棧并被銷毀.默認情況下,Android將會保留從主屏幕到每一個應用的運行屏幕.
Activity之間的跳轉及平面之間的切換,有2種方法:一種是無返回值的簡單跳轉,通過調用startActivity函數實現;另一種是需要返回結果的跳轉,通過調用startActivityForResult函數實現,requestCode是用戶自定義的值,用于標識目標Activity,Intent是Android中的“意圖”類,負責對系統中一次操作的動作、數據和附加數據進行描述,Android根據描述找到對應的組件.
3.2 地圖加載實現
解析AndroidManifest.xml文件可知,一個Android項目就是一個application對象.本系統重寫了application類,使用了設計模式中的單例設計,通過單例模式可以保證系統中一個類只有一個實例而且該實例易于外界訪問,從而方便對實例個數的控制并節約系統資源.本系統凡是用到地圖加載的界面中,都需要驗證地圖功能是否授權,即匹配Baidu API key是否正確,而這個對象只需要實例化一個即可,因此采用了單例設計模式,要求該application類的對象只存在一個.具體實現步驟:
(1)首先定義一個靜態的類對象:private static MyApplication mInstance = null;
(2)再通過定義一個靜態的類方法來返回一個自身實例化對象:
public static MyApplication getInstance() { return mInstance;}
(3)通過以上單例設計模式的創建,在每個界面只需要如下代碼即可進行百度開發身份授權的驗證以及加載:
MyApplication app =(MyApplication)this.getApplication();
if (app.mBMapManager == null) {
app.mBMapManager = new BMapManager(this);
app.mBMapManager.init(app.strKey,
new MyApplication.MyGeneralListener());}
3.3 電子地圖實現
電子地圖的實現主要依賴于Baidu Map API接口提供的類.百度地圖開發提供了com.baidu.mapapi.map地圖包,這個包里有很多重要的類,借助這些類可以實現景區地圖的加載與更新、游客自身定位、景點與公共設施搜索和路徑規劃.本系統路徑規劃實現方法是在百度路徑規劃的基礎上,采用FLOYD算法對實際路徑規劃進行了適當的修改,以便更加符合景區范圍內的路徑搜索.電子地圖的各種功能實現與所使用的Baidu Map API具體類的對應關系見圖3.

圖3 自助導游子系統功能圖
3.4 推送服務
本系統的推送服務主要是將景區各景點的參觀人數、景點天氣狀況及時地通過服務端發送到游客的自助導游系統.推送服務就是不定時獲取服務器上更新的消息,一般有2種方法實現:一是客戶端使用Pull(拉)的方式,用間隔一定時間的方式到服務器上去獲取一下信息,看是否有更新的信息出現[7];二是服務器使用Push(推送)的方式,當服務器端有新信息了,則把最新的信息推送到客戶端上.本系統采用持久連接(Push)方式,利用XMPP協議實現Android推送功能.
3.5 景點多媒體信息播放
系統采用了2種方式觸發景點多媒體信息的播放的方式:一種是以該景點的經緯度為圓心形成一個最小覆蓋園[8],將圓心和半徑數據存入數據庫中,當游客進入該景點的覆蓋圓范圍內,導游系統開啟景點自動講解模式;另一種是當景區范圍太小時(如在廟宇廳堂內),不足以準確定位,講解進程的觸發通過用戶掃描展品(景點)的二維碼實現.二維碼掃描觸發自動講解的方式經常用于博物館、展覽館等旅游景點的自助導游系統.
4.1 運行效果
基于Android的自助導游子系統運行效果見圖4.系統主界面見圖4a,分別設計實現了景區概況、線路規劃、景區地圖、自身定位、設施查詢、信息服務(信息推送)、展品掃描和景點查詢功能.景區地圖見圖4b,農業產品的二維碼掃描自動語音、圖片和文字介紹見圖4c.

圖 4 系統運行效果
4.2 Web管理維護子系統
博物館管理人員要對系統進行管理和維護,必須要擁有合法的權限,通過IE瀏覽器登陸維護系統.系統維護主要包含系統管理員管理、景區概況管理、景區地圖管理、農產品和花卉的二維碼更新、推送信息管理、景點和展品等的多媒體文件管理.
本文開發了基于Android的景區自助導游系統,本系統針對新疆農業科技博覽園景區開發,在開發前對園區進行了實地調研,分析了游客和景區管委會的需求.在開發中使用Eclipse集成開發環境編程實現了基于Android的自助導游子系統,使用Myeclipse集成開發環境設計實現了Web端的維護管理子系統,MySQL數據庫存取數據.總之,該系統基本實現景區自助導游系統的基本功能,一些功能還需進一步研究完善.
[1] 杜延磊,韓雨航.基于Andriod平臺的導游軟件開發[J].電子制作,2013(7):75-76
[2] 趙振峰,董日壯.基于安卓的手機校園導航應用系統[J].電腦知識與技術,2014(30):7050-7052
[3] 吳濤,徐軼群.基于Android平臺的景區導覽軟件設計與實現[J].計算機時代,2014(12):35-37,41
[4] 郝波.基于Android的海南自助旅游系統開發[J].中國新通信,2015(24):74-75
[5] 薛峰,梁鋒,徐書勛,等.基于Spring MVC框架的Web研究與應用[J].合肥工業大學學報:自然科學版,2012(3):337-340
[6] 郭華龍,林昌旻.基于Android平臺的旅游信息發布系統的開發與研究[J].赤峰學院學報:自然科學版,2014(2):31-33
[7] 朱奎,王未央.基于Android系統的大數據推送平臺研究[J].現代計算機:專業版,2014(4):62-65,70
[8] 宋永生.基于Android的導游系統的設計與實現[J].信息技術,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-),男,新疆昌吉人,講師,碩士,從事計算機應用技術和信息技術研究.E-mail:sunnyjiejie@126.com