1、基于 Android 平台的校园助手应用1基于 Android 平台的校园助手应用摘 要对于新生和游客来说,大学校园可能是大的,错综复杂的,令人生畏的。通过使用GPS 装置或者谷歌地图可以容易的找到校园,但是实际当你置身于校园里面的时候你会发现一切并非想象的那么简单,在校园里面没有提供指引方向的帮助服务。这篇论文将介绍基于 Android 平台的校园助手应用的架构和设计说明,应用场景设定于佛罗里达州大西洋大学-Boca Raton 校区。关键词:校园助手;Android 平台;校园地图编辑器;普适计算;谷歌地图第 1 章 介绍及相关研究近年来科学技术的进步已经得到普及,我们会发现许多应用程序存
2、在于我们日常生活的方方面面,特别是有许多主要用于指示用户顺利到达想要去的地方的设备和不同的应用程序。今天的司机能够出门好好旅游一次多亏了许多装在他们车上的 GPS 装置。GPS应用程序让用户输入目的地和他们当前的坐标位置,然后根据这些位置显示出最快到达目的地的路径。随着时间的推移,GPS 应用程序的附加功能也不断增多和完善,如显示拥挤的路线,它允许用户进行智能驾驶决策和提高驾驶的安全性。当我们去不熟悉的地方或长途旅行的时候,这节省了时间和减轻了我们的压力。谷歌地图和 GPS 系统在近几年成为人们不可或缺的必需品,有大量的用户在导航方面依赖于他们,但是他们的能力还没有充分的应用于大学校园里面。在
3、校园里面使用谷歌地图来进行导航是不可用的,以佛罗里达州大西洋大学 Boca Raton 校区为例,当把Boca Raton 校区和电子工程与计算机学院的 Engineering East 主楼输入为目的地,这个时候并没有完全显示出相应的导航地图。显示出来的方向指向佛罗里达州大西洋大学,并不是那个 Engineering East 楼。此外,并非所有的大学建筑物和停车场都显示在谷歌地图里。校园可能是相当大的并且错综复杂的,游客、新生和职员很难在短时间内熟悉周围的路线。甚至当他们询问完方向后他们也经常是找不到目的地,因为那个这条路往往涉及到周围的建筑物和校园里面的标志性建筑,他们必须原来知道这些才
4、可以。此外,一些基于 Android 平台的校园助手应用2校园正在迅速扩建,如佛罗里达州大西洋大学的 Boca Raton 校区,新建筑和设施正在不断添加进来。考虑到人们通常有很多日常事务要处理,而且他们可能需要按时到达某个指定位置,这可能让人感觉相当紧张的。消除这种紧张和困扰将改善校园的整体气氛。由于如今智能手机是一种常见的技术,使用他们来帮助校园导航是可取的方案。在这篇论文里面我们处理的问题是使用现有技术上的优势,提供一个可以帮助用户在校园里面进行导航的机制。我们的目标是设计并实现一个用户友好的系统,该系统将提供到不同建筑物和停车场的行车路线,并且它同时提供了到目的地的行车和步行路线。用户
5、可以根据自己的用户类型(如游客、职员或者学生)来选择接近于目标建筑物的停车场。Android 是目前最流行的智能手机平台之一,这是一个基于 Linux 的操作系统,主要是为了触屏移动设备而设计的。谷歌已经发布了它的源代码作为开放资源,这引起了大批的开发人员使用专门的 Java 为其编写程序,这大大的扩展了该智能设备的功能。由于其卓越的技术特性,我们建议开发基于 Android 平台的校园助手应用。目前存在一些涉及到我们这个项目的其他创新项目,如来自于加利福尼亚大学 Santa Barbara 分校的研究人员正在开发一个互动地图项目。他们的地图可以让用户选择建筑物进行放大和定位,以及找到一个建筑
6、物内的房间,但是该项目不支持导航。另一种应用是加利福尼亚大学 San Diego 分校校园地图,该地图是通过网络浏览器访问的,并允许用户选择一个源位置和目的地。当这一信息被提交,最短路径的轮廓将被描绘在地图上,而且距离和预期步行时间都会被示出来。然而,这个基于 Web 的应用程序不可以显示出在校园内的行车路线。还有几个应用程序也为一些大学提供校园地图和服务,例如有关建筑物和地点的目录,建筑照片册,当前位置的显示、放大或者缩小。然而,这些应用程序中没有一个实现了驾驶和行走指示、导航,以及考虑到区分用户的类型。第 2 章 校园助手应用的体系结构在本节中我们提出了校园助手应用程序的体系结构,我们列出
7、了系统的以下需求: 应用程序可在 Android 平台上运行。 应用程序允许用户选择源位置和目标位置,并显示出最短路径。用户可以选择这是否是一个适合步行或行车的路线。这些功能在校园里特别有用,因为人们经常要在不同的建筑之间走来走去。同时小道和各种捷径可在这种情况下使用。 该应用程序提供基于用户类型的导航功能。用户输入目标位置和当前位置后,该应用将会显示出一条最短行车或者步行路径。如果目标是建筑物,根据用户类型(例如学生、职员或者游客) ,系统将会显示出到达匹配停车场的路径。该功能在校园里显得尤为重要,基于 Android 平台的校园助手应用3因为有不同的停车场要分配给不同的游客、学生和职员。
8、如果用户从预计的路径离开,那该应用程序将会提供重新路由。图 1.校园地图的体系结构图 1 显示了我们的校园助手应用程序的体系结构。由于谷歌地图不提供在校园内的位置的任何信息(例如建筑物、停车场) ,我们必须建立用于描述校园地点、道路、街巷、交通标志、指示和导航所需要的一切东西的地图数据结构。我们设计了一个地图编辑器工具来编辑和管理校园地图,这些地图数据以 XML 文件的形式存储在服务器上。地图编辑器工具使用 HTML 5,JavaScript 和 jQuery。谷歌地图 API V3 是用来显示地图数据片和代表校园地图概念(建筑物等)的各种标记。这个基于 Web 的工具存储在地图服务器上,可以
9、通过智能手机和电脑上的主流 web 浏览器,比如Opera、FireFox、Intent Explorer 和谷歌浏览器来连接该工具。地图编辑器工具可以让地图和它的 XML 文件进行快速和容易的操控。由于校园的建筑物,街道和校园别的方面在谷歌地图上都是搜索不到的,这必须由地图编辑器的用户手动完成。地图编辑器允许用户编辑叠加在谷歌地图上的校园地图,并且并将其作为一个 XML 文件保存在服务器上。它自带版本管理器,用来管理已经存在的 XML 文件,还允许用户直接操作地图 XML 文件。当校园助手应用程序进行部署的时候,地图编辑器会更新校园地图的数据。当校园助手应用程序部署完成后,地图编辑器用来保持
10、校园地图是最新的。智能手机用户会自动下载最新的地图版本,这简化了维护。当新的位置(比如大楼)被添加到校园里面或者位置的名称改变了的时候,地图编辑是非常有用的,它可以保持地图数据是最新的。基于 Android 平台的校园助手应用4图 2.用地图编辑器打开 FAU 大学校园地图地图编辑器用户可以使用如下功能:加载现有的校园地图,编辑地图功能(创建/编辑建筑物、停车场、道路/胡同段和交通标志) ,将一个地图作为 XML 文件保持到地图服务器上,显示地图 XML 表示。图 2 显示了一个在地图编辑器加载的,带图标建筑物(“B ”标志) ,停车场(“P ”标志) ,可步行(绿色) ,和私人(蓝色)地段的
11、一部分FAU 大学校园地图的截图。这些地图功能将在第三部分进行讨论。我们的体系结构的主要组成部分是在 Android 手机上运行的校园助手智能手机应用程序。该应用程序的用户界面会提示用户输入相关信息,例如用户类型,校园地图和目的地位置。当在校园里面的时候,该应用程序提供了两个方向和步行/驾车导航功能。该应用程序依赖于一个 JSON/ HTTP 协议向地图服务器请求一个 XML 地图文件。此 XML 文件会被解析和地图图形功能会被构造。GPS 设备用于确定用户的当前位置或者用户可以自己确定一个源位置。如果用户想要行车路线,应用程序将指示用户到最接近预期目的地的相匹配的停车场。应用程序然后计算源位
12、置和目的地之间的最短路径,并显示在用户的手机屏幕上。图标确定用户的当前位置与目的地。更多的细节将在第四部分进行讨论。第 3 章 地图模式和地图编辑器我们将地图作为一个图表来绘制,在图表上顶点用来描述地图的特性(如建筑物,停基于 Android 平台的校园助手应用5车场,中介段两端的位置) ,边用来描述在顶点之间的可步行和可行驶段:小路或者道路段。一个地图将存储为服务器上的 XML 文件,XML 模式定义了对象的层次结构和地图图形的属性。我们在图 3 中呈现这个层次。图 3.UML 校园地图类图类层次的根结点是 CampusMapObjectObject 类,其他所有对象继承于它,除了 LatL
13、n类例外。根部类向每一个后代提供了一个单独的 id 属性,该 id 属性用于参照地图图形元素的。顶点类代表了最基础水平的一个位置(地图功能) 。顶点有一个叫 names 的属性,该属性是存储特定地点的名称的一个字符串数组。建筑物和停车场有一个正式名称(例如工程东楼)和其他一些常见的名称,如“EE96”或“ 绿色建筑” , “工程绿色建筑” , “新工大厦” ,它们被学术界广泛使用。顶点的缩写属性用于在用户界面上显示一个标签,并且通常被设定为正式的位置缩写,例如“EE96”为工程东楼建筑物。一个顶点使用存储有纬度和经度两个数据的 LatLng 对象来指明它在地图上的位置。顶点可以进行是否可以被汽
14、车到达的专门判断。一个 WalkSegmentEnd 对象用来描述汽车不能到达只有步行才能到达的位置。这种类型的对象被大量用于连接地图功能和仅仅行人可以到达的多段路径。RoadSegmentEnd 对象代表汽车可以直接到达的位置。停车场,建筑物(一般)和常常被用来模拟多段路径的顶点是 RoadSegmentEnds 对象。我们认为可以通过汽车到达的位置用步行的方式也是可以到达的,因此我们定义了 WalkSegmentEnd 的基于 Android 平台的校园助手应用6RoadSegmentEnd 子类。这个对象有一个布尔类型属性:canUturn,该属性用来指明在顶点处是否可以做 U 型转弯。
15、Building 类用来模拟校园的建筑,包括报告厅、学生宿舍、工厂厂房、体育场馆和体育场。Parking 类负责收集校园内停车场的信息,信息包括除了简称之外的许可证类型和名字列表。我们的大学采取把许可证按照院系、职员、学生和游客来划分开的办法。校园助手应用程序可以找到去最近的停车场的方向,该停车场可以被手上拥有相应的许可证类型的用户使用。Segment 对象连接了两个地图图表的顶点和代表了在地图里面的一条边。一个Segment 对象存储了将花费的时间成本,该成本是通过计算在地图上两个端点之间的以米为单位的距离。方向属性指明了在某个方向上一段路程是否是可被导航的,END1 END2,或者相反,或
16、者在两个方向上。一段路程的方向对于 WalkSegmentEnds对象也是富有意义的,例如电梯,因此这个属性被分解到 Segment 基类里。WalkSegment 类继承于 Segment,它代表了两个地点之间的路程,而且该地点只能进行步行导航,不能进行汽车导航。RoadSegment 类是用来描述一段可以被汽车导航的路程。RoadSegment 和 Street 对象是相关的,或者是不相关的,正如一些在停车场或者靠近建筑物的路径常常不属于一个街道。一个 Street 对象可以有多个名字,因为这个情况在美国的农村和州高速公路是很常见的。在我们的模式里面用 TrafficSign 类来代表交通
17、标志。TrafficSign 对象拥有经纬度位置和一个指明驾驶方向的标志适用的方向属性,涉及到 RoadSegment 的 end1 end2 方向。该模式支持许多继承自 TrafficSign 的类:Crossing 类 (方向=0) 、Stop Sign 类(方向=1)、Semaphore 类( 方向 =0)、Speed Bump 类(方向 =0)、SpeedLimit 类(方向=1)和Yield 类 (方向=0)。这些类是被用来加强带有听觉和视觉指示器的导航应用程序的用户体验,当用户接近一个交通标志和给出他/她将减速的信号。地图编辑器是一个允许授权用户在校园地图上编辑的开发工具。我们希望
18、该工具一开始就用于创建校园地图,以增强行车和步行导航的功能需求。之后,该工具是偶尔才会被使用的,只有当必须更新的时候,例如当一个新建筑物落成,属性的名称改变了,增加了新的交通标志等等的时候。地图编辑器的用户可以添加新的对象,并且通过对象的视图来编辑他们的属性,在谷歌地图上作为标记和线条叠加在一起的相互作用。例如在地图上点击左键放置一个新的顶点;在顶点处点击以切换选择状态;在地图上的标记处或在一段覆盖区域上点击右键可以编辑它们的属性。随着一个顶点被创建,用户可以通过点击左键创建新的一段路程到另一个顶点。在 RoadSegment 对象上单击左键将会切换它的方向属性 ;在任何一处上右击将会把其删除
19、掉,并依此类推。基于 Android 平台的校园助手应用7地图编辑器工具用 HTML 5 和 JavaScript 来实现。谷歌地图 API V3 在浏览器里面提供方便的地图显示,放大/缩小,并提供操作经/纬度和计算地理距离的 API。地图编辑器使用基于 JSON 协议来发送 /接收地图 XML 文件和地图元数据到 /从地图服务器。图 2 显示了 FAU 校园地图在地图编辑器中打开进行编辑的情景,图中的标记代表顶点,有颜色的线条代表一段路程。第 4 章 运行在 Android 平台上的校园助手应用程序校园助手应用程序在人们的 Android 智能手机上提供了方向和步行/ 驾驶导航,应用程序执行
20、步骤如下: 提示用户如下信息:用户类型(学生、职员或游客) ,校园(例如 Boca Raton、Davie)和目的地位置,通常是一个建筑物或一个停车场。 使用 HTTP 协议从地图服务器上下载地图 XML 文件。 解析校园地图 XML 文件并建立校园地图图形数据结构。 计算从源位置到目的地(下文详述)的最短路径。当前的 GPS 位置被用作源位置,目的地是根据用户类型来计算的,例如如果到某个建筑物的一条驾车路径是被选择的,那么将提供一个用户被允许的最近的停车场。 方向和导航提示将会显示在 Android 手机的校园地图内,最短路径会以覆盖在谷歌地图上的方式显示出来,当前用户的位置会以汽车/行人图
21、标显示出来。此外,用户有以下选择:选择可驾驶或步行的路径,通过点击手机触摸屏的目标顶点标记选择一个新的目的地,并且可以用捏手势进行放大/缩小。我们使用 Java 语言,借助 Android SDK 来实现该应用程序。在这个项目中,我们使用了 Eclipse IDE 和利用 ADT 插件编辑文件和管理该项目。 Android 的 API 提供了许多有用的包,它可以让用户实现 Android 设备丰富的功能,例如用户界面和用于访问罗盘和GPS 设备的类。Eclipse 环境与 Android 平台很好的结合在了一起,而且允许用户直接在手机上运行调试程序。在我们的应用程序中重要的一个步骤是解析 XM
22、L 地图文件成地图图表数据结构,解析器读取基本的 XML 文档,识别标签,并提取标签之间的数据。这允许一个计算机程序来访问和使用 XML 文件中的数据。我们使用文本对象模型(DOM)来进行解析,由于要解析文件,我们构建数据结构来存储校园地图对象及其属性,例如顶点(如建筑物、停车场等)和边(如道路和小径) 。我们使用 Dijkstra 算法来计算源位置和目的地之间的最短路径。在原算法中提出了通过从源顶点到图中的所有其它顶点的方法来计算最短路径。一条路径的权重是被作为所有路段成本的总和来计算的。该算法存储在最低优先级队列中最短路径仍然还没有被算基于 Android 平台的校园助手应用8出的顶点。在
23、每一步中,拥有最小权重的那个顶点将会被移除,它的最短路径的计算结束。因为我们对到单一目的地顶点的最短路径计算感兴趣,为了减少运行时的复杂性,我们只保留在最小优先级队列中的下一个步骤的候选顶点。此外,我们的算法只要一计算出到目的地的最短路径,计算就会停止。然后,最短路径就会显示在用户界面上,它会叠加在谷歌地图或者是卫星图的上面。在我们的情况下,一段路程的权重是欧几里德距离,它是行车/步行路程的属性(例如表示为代价)之一。考虑到预估的行车时间是以许多拐弯,路上的交通标志和限速为基础的,我们计划使用更复杂的成本函数用于行车说明。这个成本函数可以通过从大学警察局实时交通更新进一步提高,比如在体育赛事,
24、建设工作等情况下。用户拥有在步行和行车路径之间进行选择的选项。对于行车路径,唯一的道路将被当做最短路径来算,然而对于步行路径,在 Dijkstra 算法里面行车段和步行段都被表示为候选路径。使用最低优先级队列实现 Dijkstra 算法的复杂度为 O(E LGV) 。在截图里面我们可以看到带有 330 个顶点的测试地图,使用三星 Galaxy S Blaze 手机使用最短路径算法运行时间为 3 毫秒。图 4.校园助手应用程序图 4 显示了不同场景下,在相同类型手机上运行我们的应用程序的情况。图 4a 显示了护理建筑学院和工程东楼之间的行走路径,图 4b 和图 4c 显示了具有两个选项的行车方向,一个有行车图表一个没有行车图表。基于 Android 平台的校园助手应用9第 5 章 总结在这篇论文里面,我们提出了在 Android 平台上开发的校园助手应用程序,该应用提供了步行/行车路线和导航服务,适用于在佛罗里达州大西洋大学校园里的用户。我们还设计了一个校园编辑器,允许授权用户添加新的校园地图或者更新现有的地图。目前,我们正在研究增加新的功能到我们的应用中,例如语音指令和语音激活导航等功能。1