基于Android平台的景区导览软件设计与实现

时间:2022-10-01 05:27:43

基于Android平台的景区导览软件设计与实现

摘  ;要: 为了提高旅游景区接待游客能力和服务水平,进而满足现代旅游业的发展需求,设计并实现了一个基于Android平台的景区导览软件。该导览软件有效整合了三维地图、视频展示、录音讲解、文字介绍等多种导览方式。经实际运行表明,该软件运行情况良好,既能方便游客了解旅游景区相关知识,又能帮助旅游景区准确、高效、科学地宣传景区相关情况。

关键词: Android; 平板电脑; 景区导览; 三维地图; 虚拟漫游

中图分类号:TP311  ;  ;  ;  ;  ;文献标志码:A  ;  ; 文章编号: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 引言

当代旅游业已经成为世界上产业规模最大和发展最强劲的产业。导游员作为旅游业中的一个十分重要的元素,存在如下问题:导游员素质参差不齐、导游讲解内容难以规范、导游讲解工作繁重等。针对这一现状,本文以厦门市某旅游景区为例,基于Android平台设计并实现了导览软件,该软件用三维立体地图为游客提供景区导览;用多媒体技术从视频、声音、图片、文字等多方面对旅游景点进行讲解[1]。该导览软件可以帮助导游员在景点讲解方面提高服务质量,减轻导游员工作负担,还能更加规范地宣传旅游景区,让游客体验高标准的旅游服务,可谓一举多得。

随着Android平板电脑出货量的迅猛增长,平板电脑的价格不断下降。目前市场上,500元以下、大触摸屏、支持Android 4.0的平板电脑就多达100多种,这使得基于平板电脑开发导览软件具有实际可行性。

1 软件设计

1.1 架构设计

该导览软件架构如图1所示,分界面层、逻辑层、数据层三层设计。界面层主要由WebView、HTML、DIV、Openlayers组成,在HTML中用DIV设计软件界面布局,Openlayers用于在网页中展现景区地图[2];设计好的界面通过Android WebView组件加载[3-6]。逻辑层主要由Android API、JavaScript、Java组成:Android API用于整个Android应用程序的编写,JavaScript用于实现前台网页中的业务逻辑,Java用于在后台实现可供前台复用的业务逻辑[7]。数据层主要由SQLite数据库和XML组成,SQLite数据库用于存储景区景点相关数据[8];XML用于存储Android应用程序的相关配置数据[9]。

[HTML][DIV][Openlayers][Webview] [界面层] [Java][JavaScript][Android API][逻辑层] [XML][SQLite Database][数据层]

图1  ;导览软件架构设计图

1.2 功能设计

如图2所示,该导览软件能为游客提供景区导览服务和景点讲解服务。景区导览服务可代替导游为游客带路,与该服务对应的软件界面是景区整体页面;景点讲解服务可代替导游为游客讲解旅游景点,与该服务对应的软件界面是景点讲解页面和补充知识讲解页面。打开软件后,首先加载景区整体页面,点击景点进入相应的景点讲解页面,在景点讲解页面点击补充知识标题进入补充知识讲解页面;补充知识讲解页面可返回到相应的景点讲解页面,景点讲解页面也可返回到相应的景区整体页面。

图2  ;导览软件功能示意图

1.3 数据库设计

支撑该导览软件的数据库由景点表和补充知识表两张表格构成。如图3所示,景点表由景点编号、景点标题、景点简介、视频链接、录音链接等属性组成,景点编号为主键;补充知识表由补充知识编号、补充知识标题、补充知识简介、图片链接、录音链接、景点编号等属性组成,补充知识编号为主键,景点编号为外键。本软件运行在Android平板电脑,应当尽量减轻平板电脑的负担,出于这方面的考虑,采用SQLite数据库。SQLite的设计目标是嵌入式,而且目前已经有很多嵌入式产品使用了它,它占用资源非常低,在嵌入式设备中,可能只需要几百K内存。

图3  ;数据库模型图

2 软件实现

2.1 景区导览功能实现

景区整体页面通过Openlayers加载景区地图,展示景区内各景点分布情况,通过OpenLayers的Vector类在各景点上方添加一个半透明的控制层,确保游客能将嘉庚公园内的景点区域与非景点区域区别开来,点击景点上方的控制层可打开相应的景点讲解页面[10]。具体实现代码如下:

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);

//创建控制层

clickControl=new OpenLayers.Control.SelectFeature

(clickLayer, { onUnselect: UnShow, onSelect: Show});

//添加控制事件

map.addControl(clickControl);

考虑到所选景区面积相对较小,各景点之间距离过近,采用GPS定位方式定位游客所在位置,不能满足实际需求[11]。在景区整体页面中,按照景区的真实布局和结构制作三维立体地图,用于定位游客所在位置。景区三维立体地图真实形象地展示旅游景区中各景点布局,能让游客身临其境地找到自己所在的位置[12-13]。三维地图提供的地理信息能够帮助游客依照自己所在位置安排景点游览顺序,游览过程中在地图上选择相应的景点打开景点讲解页面完成导览。景区整体页面运行效果如4所示。

图4  ;景区整体页面运行效果

2.2 景点讲解功能实现

景点讲解页面从视频、文字、录音等三方面介绍景点。视频方面,利用虚拟漫游技术将景点的三维实景制作成360度全景视频向游客展示,再现景点给人的第一印象;游客可用手随意在该视频上,上下左右滑动观看该景点的720度全景展示效果[14]。文字方面,用精炼的文字简单概括景点,使得游客对景点有初步和整体的认识。录音方面,通过播放讲解录音,为游客详细讲解景点;录音讲解过程中,游客可以触摸按钮暂停播放讲解录音和继续播放讲解录音[15-16]。听完/看完所有景点介绍后,触摸返回按钮回到景区整体页面,选择下一个景点进行导览。景点讲解页面实际运行效果如图5所示。

图5  ;景点讲解页面运行效果

每个景点不仅包含其本身的讲解内容,还包括与景点相关的补充知识。补充知识讲解页面通过加载图片、录音、文字等介绍补充知识,该页面功能与景点讲解页面功能大同小异,在此不再赘述。

2.3 动态加载景点讲解页面功能实现

所选景区需要讲解的景点一共有13个,为了减少软件内容冗余,保证导览软件在平板电脑上的运行速度。应当实现动态加载景点讲解页面的功能。也就是说,景点讲解页面只有一个;但景点不同,景点讲解页面所加载的内容也会不同。

在景区整体页面给每个景点编号,SQLite数据库储存每个景点编号对应的景点名称、景点简介、讲解录音路径、展示视频路径。景点被选中后,打开景点讲解页面并根据景点编号查询数据库。通过查询数据库获得每个景点编号对应的景点名称、景点简介、讲解录音路径、展示视频路径等资源。景点讲解页面布局已经固定,只需将获得的资源加载到指定位置并根据录音路径播放讲解录音,从而实现景点讲解页面的动态加载。景点讲解页面加载相关资源代码如下:

document.getElementById("text").value=wt.getTourname();

//设置介绍文本的标题

document.getElementById("detil").value=wt.getTourdetails();

//设置介绍文本的内容

musicplayer.playMusic(wt. getTouraudioSrc());

//播放景点讲解录音

var videoId=wt.getTourflashSrc(); //获得景点视频路径

2.4 轮播景点补充知识功能实现

景点讲解页面实现动态加载,在景点讲解页面指定一个区域专门用于显示补充知识标题。不同的景点所包含景点补充知识情况各不相同,有些景点不包含补充知识,有些景点则包含多个补充知识。SQLite数据库储存每个景点编号对应的补充知识编号、补充知识标题、补充知识简介、补充知识图片、讲解录音路径。在不包含补充知识的景点讲解页面中,不显示补充知识标题;在包含多个补充知识的景点讲解页面中,动态加载并轮流显示补充知识标题。

选中景点进入景点讲解页面后,根据景点编号查询数据库。通过查询数据库获得每个景点所包含的补充知识标题;如果该景点不包含补充知识,则在指定区域不显示任何文字;如果该景点仅包含一个补充知识,则在指定区域显示该补充知识的标题;如果该景点包含多个补充知识,则在指定区域每3秒显示一个补充知识标题。景点讲解页面轮播多个补充知识标题代码如下:

window.wt2.getRecord(parseInt(markerId)); //获得补充知识标题

function changeTitle() {

document.getElementById("title").value=wt2.getName();

//显示补充知识标题

}

window.setInterval(changeTitle,3000);

//设置每3秒显示一个补充知识标题

2.5 语音播放及暂停实现

语音讲解是导览软件的重要功能之一,由于WebView对JavaScript的支持非常有限,要在WebView中实现录音播放,需要在后台Java代码中实现语音播放器的相关功能,并实例化一个语音播放器对象,通过addJavascriptInterface方法供前台JavaScript代码调用。并且,要保证本导览软件中语音播放器对象的惟一性,使得不论在前台JavaScript代码还是后台Java代码中调用的语音播放器对象有且只有一个,以免多个语音讲解同时混合播放的情况出现[17]。Java代码中语音播放器类的主要实现代码如下所示:

public class MyApplication extends Application {

//Android工程中的全局类

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 结束语

本文结合厦门市某旅游景区的具体情况,介绍了基于Android平台的景区导览软件设计和实现过程。该导览软件在所选平板电脑上运行流畅,各个功能都能实现。该导览软件的应用减轻了导游员工作负担,提高了旅游景区景点讲解质量,更加规范地宣传了旅游景区,让游客体验了高标准的旅游服务。总结软件开发整个过程,本软件仍有不足之处:受平板电脑性能影响,在较低性能的平板电脑上运行本导览软件,存在反应迟缓、卡顿现象。因此后期仍需对本导览软件进行优化,使得本导览软件能更少地依赖硬件资源,提高用户体验。

参考文献:

[1] 沈文瑞,曾连荪,杨臻.基于Android平台的校园导览软件设计[J].电

子设计工程,2012.20(9):26-28

[2] 陈德鑫.基于OpenLayers客户端的网络地图实现技术框架[J].现代

测绘,2010.33(3):48-49

[3] 汪永松.Android平台开发之旅[M].机械工业出版社,2012.

[4] 张利国,代闻,龚海平.Android移动开发案例详解[M].人民邮电出版

社,2010.

[5] 张波.基于对象视图模型WebView的Web应用框架[J].软件学报,

2002.13(10):1987-1988

[6] 李增辉.Android浏览器应用开发平台的研究[D].北京邮电大学,

2011.

[7] 明日科技.Java从入门到精通[M].清华大学出版社,2012.

[8] 彭艳.基于嵌入式数据库SQLite的智能导游系统[J].计算机系统应

用,2011.20(4):254-256

[9] 白文江.基于Android平台的移动应用开发研究[J].太原大学学报,

2011.12(3):117-120

[10] 耿胜恩.面向移动设备的园林导游平台的设计与实现[D].苏州大学,

2010.

[11] 施竟成,方志刚,汤益军.便携式智能导游系统的设计与实现[J].计算

机工程,2010.36(3):269-271

[12] 张永梅,陈立潮等.三维数字地图的研究与设计[J].华北工学院学报,

2002.23(2):95-99

[13] 吴肖,彭璇,朱明磊.基于Google Map API的校园电子地图开发[J].

测绘工程,2010.19(3):35-36

[14] 周演,陈天滋.三维虚拟漫游技术的研究[J].计算机工程与设计,

2009.30(5):1208-1210

[15] 张仕成.基于Google Android平台的应用程序开发与研究[J].电脑

知识与技术,2009.5(10):7959-7962

[16] 叶达峰.Eclipse编程技术与实例[M].人民邮电出版社,2006.

[17] 周巍,何涛,林嘉宇.Android系统智能手机语音应用开发环境构架[J].

微处理机,2011.32(6):28-32

上一篇:嘉兴市排污权交易机制分析 下一篇:高校“网站规划与设计”课程研究与实践