学生视角|基于Android手机定位的智慧旅游
编者按:由中国石油大学(华东)万剑华教授主讲的《时空信息与智慧城市》课程已结课,学生们结合自己的兴趣点,通过查阅资料,积极思考,撰写了短文,陆续在【慧天地】“学生视角”栏目刊发。刊发这些短文的目的是鼓励在校大学生、研究生们不要拘泥于书本和课堂,要有独立思考的能力,写出自己的所思所想。尽管这些文章在专家们看来显得稚嫩,甚至或多或少存在一些问题,但考虑他们的身份是学生,还望以育人的初心对他们的文章进行批评指正,谢谢大家。【慧天地】也欢迎全国各高校的同学们向本栏目投稿(点击文末“阅读原文”查看投稿指南)。
一、背景
中国作为一个人口大国,根据2021年5月11日上午公布的第七次人口普查数据,我国总人口为14.1亿,人口总量惯性增长,人口增速有所放缓。同时也作为一个旅游大国,旅游是提升公民幸福感的一种方式,而且旅游可以缓解生活、学习上的压力,调节自己的状态和心态;开拓你的眼界,对自己有正确的定位;扩大自己的交友圈,我们处于科技极度发达的时代,旅游会让人感受到人情味;欣赏美景、品尝美食,享受世间的美好;使自己成为一个有规划、有想法的人。
智能手机作为我们的出行必备,Android手机占据了市场大部分份额,在2016年5月举行的Google I/O会议上,Google宣布,开发者可以使用运行Android 7.0操作系统的智能手机和平板电脑获取GNSS原始观测数据,可以使用伪距、多普勒和载波相位等数据计算出更精确的位置。而这些为智能手机应用于智慧旅游提供了强有力的支撑。
智慧旅游,就是利用云计算、物联网等新技术,通过互联网/移动互联网,借助便携的终端上网设备,主动感知旅游资源、旅游经济、旅游活动、旅游者等方面的信息,及时发布,让人们能够及时了解这些信息,及时安排和调整工作与旅游计划,从而达到对各类旅游信息的智能感知、方便利用的效果。旅游中会遇到各种问题:订什么票比较方便?在哪住宿、在哪吃饭?出行路线怎么才最佳?不知道要去玩的地方人流量如何?同伴走散了如何会面?周边交通情况如何?
图1.旅游所需软件
如图1所示,已有很多软件会提供解决一些问题,比如携程,去哪儿网,可以预定酒店、车票、景点门票,定制路线,旅游方式等;还有小猪、途家、木鸟等软件主要针对民宿出租;美团、口碑上可以根据口味、评分选择自己想吃的东西;在某些城市旅游时,也有一些乘车的定制软件,比如苏州的苏e行,上海的Metro大都会,大大提高了地铁出行的便利性……这些软件能针对性地解决一些问题,但是没有一个软件可以满足游客的所有的个性化需求。所以我们需要一个综合性的软件解决上述问题,本文利用Android手机的系统优势提供了一个设计方案。
二、Android系统优势
Android平台手机具备一些独特优势:Android系统的开放性使得各种软件百花齐放,我们可以利用已有软件作为开发软件的依托,节约了开发成本、开发时间,提高了工作效率,防止了资源的反复使用与替换;具有优化的图形系统,可以提供丰富的2D、3D图形库;其内部浏览器基于WebKit开发,具有强大的网络支持功能;具有强大的网络功能,支持3G网络、手机蓝牙、WIFI、4G网络等多种网络通讯手段。
Android平台架构自底向上可为分为四个层次,包括Linux内核层、Android类库层、应用框架层、应用程序层。如图2。
图2.Android系统架构
Linux内核层作为连接操作系统和嵌入式平台硬件之间的抽象层,Android可以基于该系统提供丰富的核心系统服务。库函数层是指Android包含一个标准的C/C++库,主要包括:标准C系统库,以及用于支持各种多媒体格式文件解码音频接口库、视频接口,解码各种图片数据的库函数接口等。应用框架层是指Android平台的应用开发者,通过对平台提供的各类接口函数实现软件功能,基于这种便捷的开发方式,可以极大地提高软件模块的复用性,开发者可以根据需求替换应用的内部组件,也可以促进软件之间的资源共享,为软件间高效协作提供技术基础。应用层是指在Android操作系统提供丰富平台库接口函数的条件下,软件开发者快速实现应用层代码开发,极大提高开发效率。
三、系统设计
3.1设计系统界面
编写用户界面部分的XML布局文件,确定用户界面的组成部分以及摆放位置,样式风格等;通过用户界面的活动事件的监听模块,触发和调用编写好的各个界面的功能代码。当用户点击界面中的活动按钮时,会触发按钮活动事件,相应功能界面Activity被加载到XML文件中显示,系统调用相关功能代码并运行。
本文提出了基于Android手机定位的智慧旅游,旨在推出一类软件解决我们在旅游中的问题,提高旅游管理效率,提升游客体验。在设计系统界面方面:编写用户界面部分的XML布局文件,确定用户界面的组成部分以及摆放位置,样式风格等;通过用户界面的活动事件的监听模块,触发和调用编写好的各个界面的功能代码。当用户点击界面中的活动按钮时,会触发按钮活动事件,相应功能界面Activity被加载到XML文件中显示,系统调用相关功能代码并运行[3]。
3.2系统功能设计
初步设想软件分为四部分:地图定位功能、旅游信息查询功能、周边信息查询功能、交通路线查询功能、分享功能。如图3。
图3.智慧旅游软件结构
(1)地图定位功能就是在地图上实时标注位置信息,帮助游客实时了解所处位置,有助于规划行程。用户也可对地图进行缩放扩大,方便从宏观或微观上了解自己位置;实现交通、卫星模式切换,满足不同的需求。由于地图数据量太大,可以提前对所需区域进行缓存,也能尽可能节约流量。对于结伴同行的伙伴来说,由于兴趣点不一样,可能面临迷路的问题,该系统可以对二者位置进行实时定位,通过路线引导可以快速找到对方。
实现步骤:将百度地图控件添加到系统的XML布局文件中;重写地图浏览界面的Activity生命周期函数;将百度地图Android SDK API导入到系统中;实现地图定位功能的显示[3]。
(2)旅游信息查询功能向下细分,分为:地图导航、门票信息、景点特色、语音视频讲解、天气预报模块、景区动态资讯实时推送模块。其中地图导航指的是从出发地到景点的路线导航,门票信息主要包含票价、购票、退票、售票时间、优惠活动等;景点特色指的是该景区闻名的故事背景介绍,美丽的打卡地点、美味的特色小吃、有意义的特产等,有助于游客把想玩的地方走遍,不虚此行;语音视频讲解从语音和视频两方面出发,考虑到部分人听普通话比较费力,分为方言语音导航和普通话语音导航,该语音导航可以通过扫码的方式听,在视频讲解这方面,则是在景区比较醒目的地方安置大屏幕循环播放短视频,该短视频要简明扼要,突出重点、(随着文化氛围或旅游环境的变化)实时更新[2];天气预报模块负责实时提供天气情况[4],方便旅客及时规划合适的游玩路线,避免坏天气的影响;景区动态资讯实时推送模块可以让游客及时了解景区的活动,合理安排时间,不错过每个想看的节目。
实现步骤:分别建好各个模块对应的类,添加滚动视图控件ScrollView,图片控制Image View和文本操控文件TextView,分别用于实现界面滚动浏览、显示查询景点图片信息、输入查询内容以及展示查询到文件结果内容。当游客在旅游界面点击相应信息内容时,信息查询类被唤醒,对SQLite数据库中相关信息内容进行检索,并显示给用户相关信息和图片资源。
(3)周边信息查询功能主要分为住宿、饮食、兴趣点方面。住宿方面是为你就近提供房源,可以根据人数、距离、价钱等因素选择心仪的房源;饮食方面则是为您提供附近的水吧、饭店、小吃街等地方,可以根据距离、食物种类等方面来选择;你可以把你感兴趣的地点输入检索条进行搜索,比如银行、KTV、商场等,这些地点都会显示在地图的对应位置,你可以根据需求进行选择。
首先在SQLite数据库中保存待查目标位置经纬度信息,通过对比用户的经纬度,算出目标位置和用户之间的距离差,将这些目标位置按照从近及远的顺序依次显示到结果文件控件中,有助于我们对所需信息一目了然。
(4)交通路线查询功能分为最优路线规划。最优路线规划根据你的起始点规划一条既节省时间,又顺畅的路线。分为三种交通方式:公交、自驾、步行。如果是自驾游的话,还要考虑停车的问题。在景区附近停车可能会面临停车位不足的问题,对于停车费用也要有所了解,所以建立一个停车场数据库,利用数据库查找功能选择合适的停车位[1]。
实现步骤:在检索条件中输入检索条件,系统会快速检索数据库内容,根据最短路径的计算算法提供给用户出行方式。对于停车位的问题,在停车数据库中进行检索,根据停车场到我们的距离,由远及近将停车场的信息显示在结果文件控件中,并附有停车费用等信息。