吳濤 徐軼群
摘 ?;要: 為了提高旅游景區(qū)接待游客能力和服務(wù)水平,進(jìn)而滿(mǎn)足現(xiàn)代旅游業(yè)的發(fā)展需求,設(shè)計(jì)并實(shí)現(xiàn)了一個(gè)基于Android平臺(tái)的景區(qū)導(dǎo)覽軟件。該導(dǎo)覽軟件有效整合了三維地圖、視頻展示、錄音講解、文字介紹等多種導(dǎo)覽方式。經(jīng)實(shí)際運(yùn)行表明,該軟件運(yùn)行情況良好,既能方便游客了解旅游景區(qū)相關(guān)知識(shí),又能幫助旅游景區(qū)準(zhǔn)確、高效、科學(xué)地宣傳景區(qū)相關(guān)情況。
關(guān)鍵詞: Android; 平板電腦; 景區(qū)導(dǎo)覽; 三維地圖; 虛擬漫游
中圖分類(lèi)號(hào):TP311 ?; ?; ?; ?; ?;文獻(xiàn)標(biāo)志碼:A ?; ?; 文章編號(hào):1006-8228(2014)12-35-03
Design and implementation of scenic tour software based on Android
Wu Tao, Xu Yiqun
(School of Marine Engineering, Jimei University, Xiamen, Fujian 362021, China)
Abstract: In order to improve the ability ofreceiving tourists and the service level, a scenic tour software based on Android is designed and implemented. The tour software integrated the three-dimensional maps, video display, audio explain, text description and other navigation methods effectively. The practical test showed that the tour software worked well. The software not only provides convenience for tourists to understand the knowledge of view spot in the scenic, but also helpsthe scenicto publicizeitself accurately, efficiently and scientifically.
Key words: Android; table computer; scenic tour; three-dimensional map; virtual ramble
0 引言
當(dāng)代旅游業(yè)已經(jīng)成為世界上產(chǎn)業(yè)規(guī)模最大和發(fā)展最強(qiáng)勁的產(chǎn)業(yè)。導(dǎo)游員作為旅游業(yè)中的一個(gè)十分重要的元素,存在如下問(wèn)題:導(dǎo)游員素質(zhì)參差不齊、導(dǎo)游講解內(nèi)容難以規(guī)范、導(dǎo)游講解工作繁重等。針對(duì)這一現(xiàn)狀,本文以廈門(mén)市某旅游景區(qū)為例,基于Android平臺(tái)設(shè)計(jì)并實(shí)現(xiàn)了導(dǎo)覽軟件,該軟件用三維立體地圖為游客提供景區(qū)導(dǎo)覽;用多媒體技術(shù)從視頻、聲音、圖片、文字等多方面對(duì)旅游景點(diǎn)進(jìn)行講解[1]。該導(dǎo)覽軟件可以幫助導(dǎo)游員在景點(diǎn)講解方面提高服務(wù)質(zhì)量,減輕導(dǎo)游員工作負(fù)擔(dān),還能更加規(guī)范地宣傳旅游景區(qū),讓游客體驗(yàn)高標(biāo)準(zhǔn)的旅游服務(wù),可謂一舉多得。
隨著Android平板電腦出貨量的迅猛增長(zhǎng),平板電腦的價(jià)格不斷下降。目前市場(chǎng)上,500元以下、大觸摸屏、支持Android 4.0的平板電腦就多達(dá)100多種,這使得基于平板電腦開(kāi)發(fā)導(dǎo)覽軟件具有實(shí)際可行性。
1 軟件設(shè)計(jì)
1.1 架構(gòu)設(shè)計(jì)
該導(dǎo)覽軟件架構(gòu)如圖1所示,分界面層、邏輯層、數(shù)據(jù)層三層設(shè)計(jì)。界面層主要由WebView、HTML、DIV、Openlayers組成,在HTML中用DIV設(shè)計(jì)軟件界面布局,Openlayers用于在網(wǎng)頁(yè)中展現(xiàn)景區(qū)地圖[2];設(shè)計(jì)好的界面通過(guò)Android WebView組件加載[3-6]。邏輯層主要由Android API、JavaScript、Java組成:Android API用于整個(gè)Android應(yīng)用程序的編寫(xiě),JavaScript用于實(shí)現(xiàn)前臺(tái)網(wǎng)頁(yè)中的業(yè)務(wù)邏輯,Java用于在后臺(tái)實(shí)現(xiàn)可供前臺(tái)復(fù)用的業(yè)務(wù)邏輯[7]。數(shù)據(jù)層主要由SQLite數(shù)據(jù)庫(kù)和XML組成,SQLite數(shù)據(jù)庫(kù)用于存儲(chǔ)景區(qū)景點(diǎn)相關(guān)數(shù)據(jù)[8];XML用于存儲(chǔ)Android應(yīng)用程序的相關(guān)配置數(shù)據(jù)[9]。
[HTML][DIV][Openlayers][Webview] [界面層] [Java][JavaScript][Android API][邏輯層] [XML][SQLite Database][數(shù)據(jù)層]
圖1 ?;導(dǎo)覽軟件架構(gòu)設(shè)計(jì)圖
1.2 功能設(shè)計(jì)
如圖2所示,該導(dǎo)覽軟件能為游客提供景區(qū)導(dǎo)覽服務(wù)和景點(diǎn)講解服務(wù)。景區(qū)導(dǎo)覽服務(wù)可代替導(dǎo)游為游客帶路,與該服務(wù)對(duì)應(yīng)的軟件界面是景區(qū)整體頁(yè)面;景點(diǎn)講解服務(wù)可代替導(dǎo)游為游客講解旅游景點(diǎn),與該服務(wù)對(duì)應(yīng)的軟件界面是景點(diǎn)講解頁(yè)面和補(bǔ)充知識(shí)講解頁(yè)面。打開(kāi)軟件后,首先加載景區(qū)整體頁(yè)面,點(diǎn)擊景點(diǎn)進(jìn)入相應(yīng)的景點(diǎn)講解頁(yè)面,在景點(diǎn)講解頁(yè)面點(diǎn)擊補(bǔ)充知識(shí)標(biāo)題進(jìn)入補(bǔ)充知識(shí)講解頁(yè)面;補(bǔ)充知識(shí)講解頁(yè)面可返回到相應(yīng)的景點(diǎn)講解頁(yè)面,景點(diǎn)講解頁(yè)面也可返回到相應(yīng)的景區(qū)整體頁(yè)面。
圖2 ?;導(dǎo)覽軟件功能示意圖
1.3 數(shù)據(jù)庫(kù)設(shè)計(jì)
支撐該導(dǎo)覽軟件的數(shù)據(jù)庫(kù)由景點(diǎn)表和補(bǔ)充知識(shí)表兩張表格構(gòu)成。如圖3所示,景點(diǎn)表由景點(diǎn)編號(hào)、景點(diǎn)標(biāo)題、景點(diǎn)簡(jiǎn)介、視頻鏈接、錄音鏈接等屬性組成,景點(diǎn)編號(hào)為主鍵;補(bǔ)充知識(shí)表由補(bǔ)充知識(shí)編號(hào)、補(bǔ)充知識(shí)標(biāo)題、補(bǔ)充知識(shí)簡(jiǎn)介、圖片鏈接、錄音鏈接、景點(diǎn)編號(hào)等屬性組成,補(bǔ)充知識(shí)編號(hào)為主鍵,景點(diǎn)編號(hào)為外鍵。本軟件運(yùn)行在Android平板電腦,應(yīng)當(dāng)盡量減輕平板電腦的負(fù)擔(dān),出于這方面的考慮,采用SQLite數(shù)據(jù)庫(kù)。SQLite的設(shè)計(jì)目標(biāo)是嵌入式,而且目前已經(jīng)有很多嵌入式產(chǎn)品使用了它,它占用資源非常低,在嵌入式設(shè)備中,可能只需要幾百K內(nèi)存。
圖3 ?;數(shù)據(jù)庫(kù)模型圖
2 軟件實(shí)現(xiàn)
2.1 景區(qū)導(dǎo)覽功能實(shí)現(xiàn)
景區(qū)整體頁(yè)面通過(guò)Openlayers加載景區(qū)地圖,展示景區(qū)內(nèi)各景點(diǎn)分布情況,通過(guò)OpenLayers的Vector類(lèi)在各景點(diǎn)上方添加一個(gè)半透明的控制層,確保游客能將嘉庚公園內(nèi)的景點(diǎn)區(qū)域與非景點(diǎn)區(qū)域區(qū)別開(kāi)來(lái),點(diǎn)擊景點(diǎn)上方的控制層可打開(kāi)相應(yīng)的景點(diǎn)講解頁(yè)面[10]。具體實(shí)現(xiàn)代碼如下:
var map=new OpenLayers.Map('Map',{controls: []});
//新建Openlayers地圖
var graphic=new OpenLayers.Layer.Image('basic','Map/pic.png',);
//加載三維立體地圖
var styleMap=new OpenLayers.Style({ fillColor: 'yellow',
fillOpacity: 0.35})
var clickLayer=new OpenLayers.Layer.Vector('Feature', styleMap);
//創(chuàng)建控制層
clickControl=new OpenLayers.Control.SelectFeature
(clickLayer, { onUnselect: UnShow, onSelect: Show});
//添加控制事件
map.addControl(clickControl);
考慮到所選景區(qū)面積相對(duì)較小,各景點(diǎn)之間距離過(guò)近,采用GPS定位方式定位游客所在位置,不能滿(mǎn)足實(shí)際需求[11]。在景區(qū)整體頁(yè)面中,按照景區(qū)的真實(shí)布局和結(jié)構(gòu)制作三維立體地圖,用于定位游客所在位置。景區(qū)三維立體地圖真實(shí)形象地展示旅游景區(qū)中各景點(diǎn)布局,能讓游客身臨其境地找到自己所在的位置[12-13]。三維地圖提供的地理信息能夠幫助游客依照自己所在位置安排景點(diǎn)游覽順序,游覽過(guò)程中在地圖上選擇相應(yīng)的景點(diǎn)打開(kāi)景點(diǎn)講解頁(yè)面完成導(dǎo)覽。景區(qū)整體頁(yè)面運(yùn)行效果如4所示。
圖4 ?;景區(qū)整體頁(yè)面運(yùn)行效果
2.2 景點(diǎn)講解功能實(shí)現(xiàn)
景點(diǎn)講解頁(yè)面從視頻、文字、錄音等三方面介紹景點(diǎn)。視頻方面,利用虛擬漫游技術(shù)將景點(diǎn)的三維實(shí)景制作成360度全景視頻向游客展示,再現(xiàn)景點(diǎn)給人的第一印象;游客可用手隨意在該視頻上,上下左右滑動(dòng)觀看該景點(diǎn)的720度全景展示效果[14]。文字方面,用精煉的文字簡(jiǎn)單概括景點(diǎn),使得游客對(duì)景點(diǎn)有初步和整體的認(rèn)識(shí)。錄音方面,通過(guò)播放講解錄音,為游客詳細(xì)講解景點(diǎn);錄音講解過(guò)程中,游客可以觸摸按鈕暫停播放講解錄音和繼續(xù)播放講解錄音[15-16]。聽(tīng)完/看完所有景點(diǎn)介紹后,觸摸返回按鈕回到景區(qū)整體頁(yè)面,選擇下一個(gè)景點(diǎn)進(jìn)行導(dǎo)覽。景點(diǎn)講解頁(yè)面實(shí)際運(yùn)行效果如圖5所示。
圖5 ?;景點(diǎn)講解頁(yè)面運(yùn)行效果
每個(gè)景點(diǎn)不僅包含其本身的講解內(nèi)容,還包括與景點(diǎn)相關(guān)的補(bǔ)充知識(shí)。補(bǔ)充知識(shí)講解頁(yè)面通過(guò)加載圖片、錄音、文字等介紹補(bǔ)充知識(shí),該頁(yè)面功能與景點(diǎn)講解頁(yè)面功能大同小異,在此不再贅述。
2.3 動(dòng)態(tài)加載景點(diǎn)講解頁(yè)面功能實(shí)現(xiàn)
所選景區(qū)需要講解的景點(diǎn)一共有13個(gè),為了減少軟件內(nèi)容冗余,保證導(dǎo)覽軟件在平板電腦上的運(yùn)行速度。應(yīng)當(dāng)實(shí)現(xiàn)動(dòng)態(tài)加載景點(diǎn)講解頁(yè)面的功能。也就是說(shuō),景點(diǎn)講解頁(yè)面只有一個(gè);但景點(diǎn)不同,景點(diǎn)講解頁(yè)面所加載的內(nèi)容也會(huì)不同。
在景區(qū)整體頁(yè)面給每個(gè)景點(diǎn)編號(hào),SQLite數(shù)據(jù)庫(kù)儲(chǔ)存每個(gè)景點(diǎn)編號(hào)對(duì)應(yīng)的景點(diǎn)名稱(chēng)、景點(diǎn)簡(jiǎn)介、講解錄音路徑、展示視頻路徑。景點(diǎn)被選中后,打開(kāi)景點(diǎn)講解頁(yè)面并根據(jù)景點(diǎn)編號(hào)查詢(xún)數(shù)據(jù)庫(kù)。通過(guò)查詢(xún)數(shù)據(jù)庫(kù)獲得每個(gè)景點(diǎn)編號(hào)對(duì)應(yīng)的景點(diǎn)名稱(chēng)、景點(diǎn)簡(jiǎn)介、講解錄音路徑、展示視頻路徑等資源。景點(diǎn)講解頁(yè)面布局已經(jīng)固定,只需將獲得的資源加載到指定位置并根據(jù)錄音路徑播放講解錄音,從而實(shí)現(xiàn)景點(diǎn)講解頁(yè)面的動(dòng)態(tài)加載。景點(diǎn)講解頁(yè)面加載相關(guān)資源代碼如下:
document.getElementById("text").value=wt.getTourname();
//設(shè)置介紹文本的標(biāo)題
document.getElementById("detil").value=wt.getTourdetails();
//設(shè)置介紹文本的內(nèi)容
musicplayer.playMusic(wt. getTouraudioSrc());
//播放景點(diǎn)講解錄音
var videoId=wt.getTourflashSrc(); //獲得景點(diǎn)視頻路徑
2.4 輪播景點(diǎn)補(bǔ)充知識(shí)功能實(shí)現(xiàn)
景點(diǎn)講解頁(yè)面實(shí)現(xiàn)動(dòng)態(tài)加載,在景點(diǎn)講解頁(yè)面指定一個(gè)區(qū)域?qū)iT(mén)用于顯示補(bǔ)充知識(shí)標(biāo)題。不同的景點(diǎn)所包含景點(diǎn)補(bǔ)充知識(shí)情況各不相同,有些景點(diǎn)不包含補(bǔ)充知識(shí),有些景點(diǎn)則包含多個(gè)補(bǔ)充知識(shí)。SQLite數(shù)據(jù)庫(kù)儲(chǔ)存每個(gè)景點(diǎn)編號(hào)對(duì)應(yīng)的補(bǔ)充知識(shí)編號(hào)、補(bǔ)充知識(shí)標(biāo)題、補(bǔ)充知識(shí)簡(jiǎn)介、補(bǔ)充知識(shí)圖片、講解錄音路徑。在不包含補(bǔ)充知識(shí)的景點(diǎn)講解頁(yè)面中,不顯示補(bǔ)充知識(shí)標(biāo)題;在包含多個(gè)補(bǔ)充知識(shí)的景點(diǎn)講解頁(yè)面中,動(dòng)態(tài)加載并輪流顯示補(bǔ)充知識(shí)標(biāo)題。
選中景點(diǎn)進(jìn)入景點(diǎn)講解頁(yè)面后,根據(jù)景點(diǎn)編號(hào)查詢(xún)數(shù)據(jù)庫(kù)。通過(guò)查詢(xún)數(shù)據(jù)庫(kù)獲得每個(gè)景點(diǎn)所包含的補(bǔ)充知識(shí)標(biāo)題;如果該景點(diǎn)不包含補(bǔ)充知識(shí),則在指定區(qū)域不顯示任何文字;如果該景點(diǎn)僅包含一個(gè)補(bǔ)充知識(shí),則在指定區(qū)域顯示該補(bǔ)充知識(shí)的標(biāo)題;如果該景點(diǎn)包含多個(gè)補(bǔ)充知識(shí),則在指定區(qū)域每3秒顯示一個(gè)補(bǔ)充知識(shí)標(biāo)題。景點(diǎn)講解頁(yè)面輪播多個(gè)補(bǔ)充知識(shí)標(biāo)題代碼如下:
window.wt2.getRecord(parseInt(markerId)); //獲得補(bǔ)充知識(shí)標(biāo)題
function changeTitle() {
document.getElementById("title").value=wt2.getName();
//顯示補(bǔ)充知識(shí)標(biāo)題
}
window.setInterval(changeTitle,3000);
//設(shè)置每3秒顯示一個(gè)補(bǔ)充知識(shí)標(biāo)題
2.5 語(yǔ)音播放及暫停實(shí)現(xiàn)
語(yǔ)音講解是導(dǎo)覽軟件的重要功能之一,由于WebView對(duì)JavaScript的支持非常有限,要在WebView中實(shí)現(xiàn)錄音播放,需要在后臺(tái)Java代碼中實(shí)現(xiàn)語(yǔ)音播放器的相關(guān)功能,并實(shí)例化一個(gè)語(yǔ)音播放器對(duì)象,通過(guò)addJavascriptInterface方法供前臺(tái)JavaScript代碼調(diào)用。并且,要保證本導(dǎo)覽軟件中語(yǔ)音播放器對(duì)象的惟一性,使得不論在前臺(tái)JavaScript代碼還是后臺(tái)Java代碼中調(diào)用的語(yǔ)音播放器對(duì)象有且只有一個(gè),以免多個(gè)語(yǔ)音講解同時(shí)混合播放的情況出現(xiàn)[17]。Java代碼中語(yǔ)音播放器類(lèi)的主要實(shí)現(xiàn)代碼如下所示:
public class MyApplication extends Application {
//Android工程中的全局類(lèi)
private PlayMusicInterface mp;
public void onCreate() {
super.onCreate();
mp=new PlayMusicInterface();
}
public void playMusic(String url) {
mp.playMusic(url);
}
public void stopMusic() {
mp.stopMusic();
}
public void pauseMusic() {
mp.pauseMusic();
}
}
3 結(jié)束語(yǔ)
本文結(jié)合廈門(mén)市某旅游景區(qū)的具體情況,介紹了基于Android平臺(tái)的景區(qū)導(dǎo)覽軟件設(shè)計(jì)和實(shí)現(xiàn)過(guò)程。該導(dǎo)覽軟件在所選平板電腦上運(yùn)行流暢,各個(gè)功能都能實(shí)現(xiàn)。該導(dǎo)覽軟件的應(yīng)用減輕了導(dǎo)游員工作負(fù)擔(dān),提高了旅游景區(qū)景點(diǎn)講解質(zhì)量,更加規(guī)范地宣傳了旅游景區(qū),讓游客體驗(yàn)了高標(biāo)準(zhǔn)的旅游服務(wù)。總結(jié)軟件開(kāi)發(fā)整個(gè)過(guò)程,本軟件仍有不足之處:受平板電腦性能影響,在較低性能的平板電腦上運(yùn)行本導(dǎo)覽軟件,存在反應(yīng)遲緩、卡頓現(xiàn)象。因此后期仍需對(duì)本導(dǎo)覽軟件進(jìn)行優(yōu)化,使得本導(dǎo)覽軟件能更少地依賴(lài)硬件資源,提高用戶(hù)體驗(yàn)。
參考文獻(xiàn):
[1] 沈文瑞,曾連蓀,楊臻.基于Android平臺(tái)的校園導(dǎo)覽軟件設(shè)計(jì)[J].電
子設(shè)計(jì)工程,2012.20(9):26-28
[2] 陳德鑫.基于OpenLayers客戶(hù)端的網(wǎng)絡(luò)地圖實(shí)現(xiàn)技術(shù)框架[J].現(xiàn)代
測(cè)繪,2010.33(3):48-49
[3] 汪永松.Android平臺(tái)開(kāi)發(fā)之旅[M].機(jī)械工業(yè)出版社,2012.
[4] 張利國(guó),代聞,龔海平.Android移動(dòng)開(kāi)發(fā)案例詳解[M].人民郵電出版
社,2010.
[5] 張波.基于對(duì)象視圖模型WebView的Web應(yīng)用框架[J].軟件學(xué)報(bào),
2002.13(10):1987-1988
[6] 李增輝.Android瀏覽器應(yīng)用開(kāi)發(fā)平臺(tái)的研究[D].北京郵電大學(xué),
2011.
[7] 明日科技.Java從入門(mén)到精通[M].清華大學(xué)出版社,2012.
[8] 彭艷.基于嵌入式數(shù)據(jù)庫(kù)SQLite的智能導(dǎo)游系統(tǒng)[J].計(jì)算機(jī)系統(tǒng)應(yīng)
用,2011.20(4):254-256
[9] 白文江.基于Android平臺(tái)的移動(dòng)應(yīng)用開(kāi)發(fā)研究[J].太原大學(xué)學(xué)報(bào),
2011.12(3):117-120
[10] 耿勝恩.面向移動(dòng)設(shè)備的園林導(dǎo)游平臺(tái)的設(shè)計(jì)與實(shí)現(xiàn)[D].蘇州大學(xué),
2010.
[11] 施竟成,方志剛,湯益軍.便攜式智能導(dǎo)游系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算
機(jī)工程,2010.36(3):269-271
[12] 張永梅,陳立潮等.三維數(shù)字地圖的研究與設(shè)計(jì)[J].華北工學(xué)院學(xué)報(bào),
2002.23(2):95-99
[13] 吳肖,彭璇,朱明磊.基于Google Map API的校園電子地圖開(kāi)發(fā)[J].
測(cè)繪工程,2010.19(3):35-36
[14] 周演,陳天滋.三維虛擬漫游技術(shù)的研究[J].計(jì)算機(jī)工程與設(shè)計(jì),
2009.30(5):1208-1210
[15] 張仕成.基于Google Android平臺(tái)的應(yīng)用程序開(kāi)發(fā)與研究[J].電腦
知識(shí)與技術(shù),2009.5(10):7959-7962
[16] 葉達(dá)峰.Eclipse編程技術(shù)與實(shí)例[M].人民郵電出版社,2006.
[17] 周巍,何濤,林嘉宇.Android系統(tǒng)智能手機(jī)語(yǔ)音應(yīng)用開(kāi)發(fā)環(huán)境構(gòu)架[J].
微處理機(jī),2011.32(6):28-32