基于Android的校园导航系统的设计与实现
2016-11-02秦健勇樊春年
孙 杰,秦健勇,樊春年
(1昌吉学院物理系,新疆昌吉 831100;2新疆大学信息科学与工程学院,乌鲁木齐 830046;3新疆工程学院计算机工程系,乌鲁木齐 830000;4新疆轻工职业技术学院电气技术分院,乌鲁木齐 830021)
基于Android的校园导航系统的设计与实现
孙 杰1,2,秦健勇3,樊春年4
(1昌吉学院物理系,新疆昌吉831100;2新疆大学信息科学与工程学院,乌鲁木齐830046;3新疆工程学院计算机工程系,乌鲁木齐830000;4新疆轻工职业技术学院电气技术分院,乌鲁木齐830021)
为使大学生能够快速熟悉校园环境,迅速适应大学生活,开发了基于Android的校园导航系统。该系统以新疆大学本部校园为例,在研究校园用户对地图服务需求的基础上提出了相应的功能。开发中充分利用了百度地图API接口,实现了校内地点搜索、位置提醒等功能,并利用FLOYD算法实现了路径规划。
校园导航;地图服务;百度地图;路径规划
0 引 言
随着高校的发展,校园面积不断扩大、校园内的道路和建筑物不断增多,校园空间信息和地理信息日趋复杂[1],能够通过手机随时随地获取校园空间信息和服务信息,对于方便师生的工作和学习有着重要意义。虽然,已经有很多成熟的商业地图APP可以提供地理信息服务,但是这些位置业务主要针对一个较大的空间范围,例如一个城市、一个街区等。相较于商业化的导航软件而言,校园导航系统主要是在空间方位(地理范围)较小的区域内,针对特定用户群体,提供基于位置的个性化服务,注重小范围内的地理信息服务的准确性。基于此,利用Android平台框架[2]和Baidu Maps API[3]编程实现了校园导航系统,设计出方便校园用户使用的个性化地图,提供方便定位和搜索功能,为师生探路和事务办理提供实时地理信息及其他的各种信息。
1 系统的需求分析和总体设计
本系统以新疆大学为例,研究了校园用户对导航系统的需求并根据该需求提出了相应的功能。主要包括校园内地图的详细显示,能够更好地帮助师生了解新大校园的各个设施所在位置以及详细描述,并且具有进入范围提醒功能,提醒用户该位置的详细信息。另外,导航系统最主要的功能就是定位以及路线查询,能够在校园这个小范围内显示出需要查询的起点与目的地之间的路径。
1.1功能设计
为了满足学生们的日常生活要求,导航系统应该具备以下功能:地图加载、自身实时定位、邻近范围提醒、校内搜索、短信定位、路线查询等业务,系统功能结构图如图1所示。
图1 系统功能结构图Fig.1 Structure chart of system function
由图1可见,系统实现功能分别可做如下解析描述。
1)地图加载功能。系统是基于百度地图来进行二次开发,相应地就要获取百度地图的使用权限以及开发权限。由于百度地图显示的是较大区域的俯视图和该区域内的地标性建筑,因此导航系统在加载百度地图的同时,必须能够自定义添加一些校园内部的详细标注,使用户能够了解更多校园内部的详细信息。同时支持地图的放大缩小和移动功能,给用户带来更好的使用体验。
2)自身实时定位功能。用户可以得到当前所在的具体位置,如校园道路名称等,并且在地图上实时标注出来,可以根据用户的位置转换而发生改变,方便用户获得准确的信息。系统支持2种地图显示方式,即交通地图与卫星地图。
3)校内搜索功能。用户通过系统提供的搜索文本框,可以查询附近的一些标志性建筑的具体位置,以及对该位置的新近具体描述。如同学们关心的教师办公室的具体位置以及联系方式等,或者附近餐厅以及娱乐场所等。
4)临近范围提醒功能。当用户携带手持设备进入特定区域内,即可收到靠近目标位置的提醒,提示用户该地区内的详细信息。如靠近一号教学楼附近20米时,用户打开邻近范围提醒界面将会收到一条提醒,“您已经到达一号教学楼附近,该教学楼主要有新闻学院以及生物科学学院等”这样的信息。
5)短信定位模块。通过给对方发送标记短信,后台启动对方的定位服务(前提:对方必须安装此软件),获取位置信息后系统将会自动发送一条包含经纬度的短信给发送方,发送方收到短信时,解析短信内容,获取经纬度显示在地图上。
6)路线查询功能。这是校园导航系统的基本功能。用户可以根据需要查询从源点到目标地点的可行线路,并提供实时导航服务,同时也可以选择两点间的最短路线。
1.2安全性和可维护性设计
1)安全性设计。由于系统中涉及到基于位置的服务,需要定位用户的位置。为了确保用户的位置信息不会泄露给他人,本系统使用GPS定位以及基站定位技术,而且在用户安装和使用该系统的过程中会提醒用户,该系统将会打开手机的GPS定位功能。
2)可维护性设计。可维护性是进行软件维护工作的一个重要参考依据,是评定软件维护难易程度的一条现实标准,也是软件产品的一种重要质量特性。在系统的设计与实现过程中,需要重视系统的可维护性。另外,高校校园环境是一个动态变化的系统,因此导航系统的开发必须要留有可以扩充功能的接口,以利于未来新功能的研发与添加。所以,本系统采用了模块化及面向对象方法开发,便于后期的系统维护。
2 系统开发关键技术及实现
2.1数据库设计
本系统运行过程需要从后台存取大量数据并且要根据不同条件进行信息查询,若采用xml文件存储,则对查询带来了很多不便。因此本系统采用了SQLite数据库进行数据存储,方便管理与查找。系统的数据库设计了3张表:PLACE表用于存放本地化数据,包括校园内部的餐厅、教室、办公室等;PLACE_CODE为位置信息代码表,主要存放路线规划时辅助节点的经纬度;ROUTE_PLAN表主要存放一张图的信息,包括点以及权值,用于计算最优路径。具体设计如表1、表2和表3所示。
表1 本地化表(PLACE)Tab.1 Localization table(PLACE)
表2 位置信息代码表(PLACE_CODE)Tab.2 Location information&code table(PLACE_CODE)
表3 路径图表(ROUTE_PLAN)Tab.3 Path diagram(ROUTE_PLAN)
2.2系统主界面实现
主界面的整体布局实现重点使用了GridView和一个TextView,GridView是一个表格布局,可以设置其行与列,该GridView的列数控制为2列,而GridView中的每一个单元格又嵌套了一个相对布局RelativeLayout,RelativeLayout主要控制一个控件与另一个控件的相对位置,如右方、下方等。RelativeLayout中包括一个Image控件以及一个TextView控件,Image控件主要用来显示图片信息,TextView控件用于显示文本信息。系统主界面如图2所示。
图2 系统主界面Fig.2 Main interface of system
2.3 校内搜索功能实现
校内搜索界面如图3所示,全部功能实现主要用到了以下技术:
1)Spinner下拉框控件与数据库信息的绑定。校园内诸如教学楼、办公楼或宿舍楼这类信息,一般长时间内不会随意添加或更名,因此本搜索采用了Spinner控件,让用户无需输入直接进行选择,方便了用户操作。
2)搜索功能子线程的实现。由于考虑到搜索可能会比较费时,为了保证程序的正常运行,查询功能都设计提供在子线程中,而对于创建子线程只需要重写其对应run()即可。
3)文本信息拨打电话格式的实现。点击“信息学院学工办”时,会弹出一个dialog,dialog中显示位置详细信息以及联系电话,联系电话为特殊字符串,点击即可直接进行电话拨打。实现时使用了SpannableString类,如果需要给TextView中的某些字设置为超链接,以及联系电话设置特殊字的颜色、字体等,那就需要用到Spannable对象,可以借助Spannable对象实现以上设置。
4)View与Bitmap的转换。图4中“信息学院学工办”字样是一个bitmap位图,由于地图二次开发不允许用户在地图上添加文字,除非付费用户。但是可以通过textView设置文本内容,再将textView转换成bitmap后,即可通过点击“A”字样时显示到地图上。
图3 校内搜索界面Fig.3 UI of campus searching
图4 校内查询结果界面Fig.4 UI of campus searching result
2.4临近位置提醒功能实现
临近位置提醒功能界面如图5所示,即为用户到达校内科技楼附近位置的提醒界面。该功能建立在定位基础上,首先通过定位获取自身的位置,再通过计算预先定义完成的位置提醒点与自身位置间的距离进行事件触发,例如:如果用户到达某建筑附近,系统会计算用户位置与建筑位置之间的距离,如果符合某一数值范围则会触发位置提醒事件,提示位置信息。
2.5路径搜索实现
本功能在百度路径规划的前提下提出了最优路径的搜索,图6为未使用算法前的路径导航,可以看出百度地图的路径规划是在地图上有路的情况下,进行了路径算法机制的推导实现,如从新疆大学校史展馆到一号教学楼的路径,现有的百度地图会先走到科技楼,再从主干道走到一号教学楼。图7是通过FLOYD算法自己添加辅助节点实现的路线查询,可直接通过校史馆到达新疆大学教务处,再通过捷径到达一号教学楼,实现了校内的最优路径导航。
图5 邻近位置提醒界面Fig.5 UI of approaching position
图6 未使用算法的查找路径Fig.6 Searched path before using the designed algorithm
图7 使用算法查询的最优路径Fig.7 Optimal path after using the designed algorithm
最优路径主要采用了FLOYD算法实现,该算法能实现任意两点之间的最优路径的查找,使用算法前要求系统输入一个图的信息,该图的信息预先即以起点、终点以及权值的信息存放在数据库表中,用户查询前首先通过数据库查询出各节点信息,再利用算法转换成该图的邻接矩阵,并将该邻接矩阵传入FLOYD算法中求出起点与终点之间的最短路径的一组点。此后,在将通过这一组点分别去数据库中查询对应的经纬度,最终即将这一组经纬度通过百度的路径显示到地图上。
3 结束语
本文主要基于Android平台,利用SQLite提供后台数据服务,以定位服务为核心模块,在此基础上扩展了校内路线导航功能,设计并实现了基于自身、校内搜索、短信定位等功能的校园导航系统。这是校园数字化的一种定制提升表现,不仅可作为一种向外界展示高校人文环境的现实高端平台,也可为学校日后建立科学、智能、网络一体化的综合校园管理体系奠定了有益的技术基础。
[1]杨伟龙,李步德,谢俊鹏.校园导航系统最短路径的实现[J].韶关学院学报,2014,35(4):20-23.
[2]郭宏志.Android应用开发详解[M].北京:电子工业出版社,2010.
[3]方涛,秦华旺.基于Baidu地图的移动机器人监控平台[J].工业控制计算机,2015,28(1):81-82.
[4]李洪波,王茂波.Floyd最短路径算法的动态优化[J].计算机工程与应用,2006(34):60-63.
Design and implementation of Android-based campus navigation system
SUN Jie1,2,QIN Jianyong3,FAN Chunnian4
(1 Department of Physics,Changji University,Changji Xinjiang 831100,China;2 College of Information Science and Engineering,Xinjiang University,Urumqi 830046,China;3 Department of Computer Engineering,Xinjiang Institute of Engineering,Urumqi 830000,China;4 College of Electrical Technology,Xinjiang Institute of Light Industry Technology,Urumqi 830021,China)
In order to promote college students be quickly familiar with the campus environment and adapt to campus life,the paper develops Android-based campus navigation system,which takes XinJiang university as the example.Then the paper proposes corresponding functions after researching map service demand of campus user.Based on the aboved,taking full advantage of Bmap API,the location search、location alert are efficiently implemented,and route program by using FLOYD algorithm is further realized.
campus navigation;map service;Baidu map;route program
TP311
A
2095-2163(2016)03-0090-03
2016-05-09
昌吉学院科研基金资助项目(2011SSQD013)。
孙 杰(1976-),男,博士研究生,讲师,主要研究方向:自然语言处理、信息技术;秦健勇(1978-),男,硕士,讲师,主要研究方:信息技术、智能家居;樊春年(1975-),男,硕士,讲师,主要研究方向:电气技术、信息技术。