版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、基于Android平台的公交查询系统的设计与实现摘要 截至2013年底中国智能手机市场 Android 操作系统份额达到 63.1%,占据绝对主流地位,在大城市中android 手机的使用率会更高。而人们的生活水平也来越高,人们的出行就变的越来越频繁,公交车作为人们出行最方便,使用最广泛的公共交通工具,发挥着相当大的作用,公交车的便利性,使它在人们的生活中扮演着越来越重要的角色。因此,我们将android手机终端、公交线路站点信息等结合起来产生了一个非常具有潜力和市场的基于Android的公交查询运用。本文要阐述的系统就是基于Android的移动公交查询系统,该系统既提供公交线路和站点的查询,
2、也满足了手机用户搜索站点等需求。手机用户只需在系统上输入要查询的线路,轻轻一点,就可以快速、准确的获取到线路信息。对于先要在计算机上查询线路,然后再根据站牌的信息进行乘车的一系列传统出行模式来说,该系统可谓是革命性的产物,具有相当的价值。该系统采用Android SDK,Eclipse作为开发工具。 关键词:Android;公交查询;LBS摘要IAbstractII1绪论11.1课题背景11.2国内外研究现状11.3本文主要工作22系统关键技术32.1 关键技术概述32.2 LBS技术32.3 GIS技术52.4 手机定位技术62.5 手机端和服务器端数据交互72.6 多线程技术83 需求分析
3、103.1 需求分析103.1.1 系统用例图103.1.2 功能需求113.2 系统架构设计124公交查询系统的设计与实现144.1 Android程序开发144.2 SQLite简介154.3 系统功能详细设计与实现164.4 程序运行截图225 结论与展望24参考文献25致谢261绪论1.1课题背景 随着生活水平的提高,人们的出行变的越来越频繁,人们出行的次数和范围都在增加,公交车作为人们出行最方便,使用最广泛的公共交通工具,发挥着相当大的作用,带动了整个社会经济的快速发展,作为城市发展程度高低的象征的公共交通承担着越来越繁重的任务,由于公交车的便利性,它人们的生活中扮演着越来越重要的角
4、色。人们对公交系统依赖性逐渐增加,出行的频率也在越来越大,范围越来越广,乘客不可能只乘坐一趟车就能到达目的地,往往需要换乘多条线路,乘坐多辆车。这种情况就导致换乘的问题日益显现,我们需要解决的就是应该如何准确的提供乘客信息,让他们能及时、准确、高效的找到目的地,该问题就是路径选优问题,其核心问题就是换乘问题,即乘几次车,在哪儿乘车,乘哪路车的问题。 大部分乘客在借助公交出行时,习惯性的就会从公交站点处了解公交的线路走向信息和其他路线信息,查看公交线路、沿途停靠的站点、发车时间和收车时间等基本信息。随着信息技术的飞速发展,网络的应用随处可见,是当前社会大众不可或缺的一部分,已经很好的融入到人们的
5、日常生活和学习中。人们在乘坐公交前,一般通过网络的方式在计算机中查询公交站点信息,解应当怎么样出行,应该在哪个站点换乘,乘坐哪一条线路。但是相应的问题也产生了,通过计算机浏览网页的方式不够灵活,尤其不方便的是在出行过程中查询公交信息。随着智能手机的大量普及,人们不再需要通过计算机浏览网页的方式查询公交信息。现在,你只需要掏出你的智能手机,输入要到达的目的地,便可轻松查询出你所需的公交信息。1.2国内外研究现状 LBS(location based service),是基于位置的服务,在电信运营商的无线通信网络或卫星网络帮助下,来获取用户的位置信息,在地理信息系统的支持下,提供相应的服务。在国外
6、,LBS 的应用最早是源于美国联邦通信委员会(FCC)所提出的一个需求,该需求建立在 1996 年颁布 E-911 法规上,要求移动运营商为手机用户提供紧急救援服务。经过几年的沉淀,在 1999 年 FCC 又提出更高精确度的需求,导致了美国 LBS 应用被广泛的推广和快速发展,应用日趋成熟。随着 GPS(全球定位系统)、GIS(地理信息系统)、通信技术的发展,世界各国纷纷将 LBS 应用的商业服务中来。东亚各国的 LBS 运用属南韩、日本领先,大陆产业支持不足;北美则属美国领先,美国在法令的推动下 LBS 应用得到了长足发展;西欧各国在 LBS运用上侧重于日常生活类的查询服务。在国内,200
7、2 年年底,中国的三大运营商陆续开通自己的位置服务。中国移动旗下的移动梦网品牌推出了“找朋友”等基于位置服务的业务;中国联通也不甘落后,随后推出了 CDMA 品牌下的“定位之星”业务。手机用户第一次体验到更快的下载速度和位置的导航服务,用户市场逐步增大,得到了用户一致好评;中国电信也嗅到了位置服务里面巨大的商机,推出了 PHS(小灵通)平台上的位置服务业务。 然而,并不像中国三大运营商所构思的规划一样,实现业务的很大增长,在相当长的一段时间内都无人问津。基于移动网络的位置服务业务遇到了通信带宽的瓶颈,再加上当时 GPS 的普及率比较低,市场不如预期。在过去的很长一段时间,基于位置的服务业务都没
8、有得到消费市场的认可,随着信息技术的飞速发展,LBS 在一些专业的领域逐渐得到了认可,比如说在交通运输也方面。一个产业的崛起,必定有一股大的力量在推动着它向前进,2004年,交通安全管理和应急响应的需要,使得 GPS 和移动通信 LBS 服务结合,产生了一个新的增长点,大量的民营资本的进入,使到交通方面的位置服务逐步商业化,大量基于 GPS 的运输管理系统产生,这些软件系统运用到的基本技术都是LBS。我们可以从统计的数字看出,全国十几个省市都陆续采用位置服务技术对公交车、出租车、货运、航运等交通工具进行位置跟踪管理,大量用于车速管理、车辆监控、车辆调度等管理。随着社会经济的发展,私家车的数量越
9、来越多,GPS的市场得到了空前的增长,各种基于位置服务的厂商不断涌现,形成了一个新的产业点,我们相信随着移动通信网从 2G 到 3G 的升级,带宽的不断增大,在不久的将来,LBS 的运用会呈现革命性的增长。1.3本文主要工作本文一共分为五章:第一章是绪论,主要叙述了移动公交查询系统产生的应用背景以及对国内外LBS的研究现状进行介绍,并对本文为什么选择Android作为系统开发平台进行分析。 第二章章分析了移动公交查询系统所用到的关键技术,主要涉及了LBS运用的简单介绍、GIS技术的介绍、移动终端的定位方法、手机与服务器端的数据交互方式、多线程技术、手机数据存储方式。 第三章对系统需求分析,包含
10、需求分析和功能分析。 第四章主要介绍了移动公交查询系统的功能模块和系统的设计与实现以及对统的测试。 第五章对本文的研究内容进行了总结及对未来LBS发展进行了展望。最后是参考文献和致谢。2系统关键技术2.1 关键技术概述 移动公交系统中涉及的技术比较复杂,首先需要对公交进行定位,在定位的过程中会有数据的存储,事件的并发,将定位后位置信息反馈给GIS处理等基本操作。主要包括的问题如下: 1)定位问题 移动公交查询系统具有准确,实时,快速等特殊性,不和普通的LBS应用一样,要求更高的位置精度,定位要求更加快速。GPS的定位方式,显然在移动公交查询系统中就显得力不从心,我们从GPS的特点就可以了解到,
11、它第一次定位非常耗时,而且还存在搜不到卫星导致无法定位的情况。因此,结合移动公交查询系统的特点,我们选择了GPS与基站定位相结合的定位方法。系统接收到定位的请求时,通过移动网络的基站进行快速的初步定位,然后再应用GPS定位。这样的操作大大的满足了用户的需求,而且定位的精度也更加精确,更加高效,更加快捷,降低了系统的出错率,提升用户体验。 2)客户端与服务端数据交互 客户端请求查询要求时,客户端会向服务端发送一个请求,请求的数据通过Web service方法进行调度,服务器响应后,会同样通过Web service接口进行反馈数据给客户端。 3)多线程技术 同一时间,可能会有多个请求,通过多线程可
12、以更加充分的利用系统的资源,完成更多的任务。 4)手机数据存储 服务端返回的数据包保存在手机上,本系统用的数据库为SQLite。2.2 LBS技术LBS (Location Based Service),其中包括两方面的含义:首先是确定移动设备或用户的地理位置,二是提供各种信息服务和位置。意指各种与定位相关的服务系统,称为“定位服务”,另一种被称为MPS (Mobile Position Service),也称为“移动定位服务”系统,如找到手机用户的当前位置,然后在城市范围内寻找手机用户当前位置处一公里范围内的酒店,电影院,图书馆,加油站等,所以LBS是利用互联网或无线网络,在固定用户或移动用
13、户之间,完成定位和服务功能。随着手机成为我们的生活一个不可分割的部分。基于位置的移动服务的日益突出,基于位置的业务的巨大魅力凸显。第二种含义是根据用户位置信息提供无线IP服务。LBS是GIS、移动无线网络和Internet三者的交集。如图2-1所示。图2-1 LBS的交集 Mobile GIS是移动无线网络和GIS的产物。它是基于移动互联网的支持,以智能手机或平板电脑终端,北斗系统,GPS或基站为定位手段的GIS系统。运行于各种移动终端,通过无线通信与服务端进行数据交互,也可以独立运行,具有流动性。能够迅速响应用户的请求,能够处理在用户环境中随时间变化的因素的实时影响。系统所提供的服务与用户的
14、位置信息是密切相关的。移动GIS的表达体现在移动终端上,移动电话,掌上电脑,车载终端,这些设备的制造商不唯一,他们所使用的技术是不统一的,这必然引起移动终端的多样性。 Web GIS是Internet技术应用于GIS开发的产物。是一个交互式的、分布式的、动态的地理信息系统,是由多个主机、多个数据库的无线终端,并由客户机与服务器相连所组成的,是GIS技术的一个重要的应用方向。GIS通过WWW功能得以扩展,真正成为一种大众使用的工具。Internet用户可以浏览Web GIS站点中的空间数据、制作专题图,以及进行各种空间检索和空间分析,从而使GIS进入千家万户。当然WebGIS也有不足的地方,一旦
15、用户不能连接网络,GIS服务就停止了,但是一旦引入了无线网络,以上问题就能得到解决。 将移动互联网、Web GIS和Mobile GIS结合。LBS通过移动互联网,结合地理信息系统,给移动用户提供位置服务。在3G网络中,要实现LBS应用涉及了多个实体,LBS网络模型如图2-2所示。图2-2 定位业务的网络结构图 1)定位操作平台:通过各种定位技术来获取移动台的位置信息。 2)中间件:给移动用户提供定位服务接口,通过这些接口用户可以访问地理信息系统,完成的需求。 3)GIS:将位置信息(经纬度)转化成具体的事物信息的信息系统。 4)SP(application ):给移动用户提供LBS服务。 5
16、)终端(UE):移动用户通过3G网络获取LBS服务。 为了更好地开展LBS服务,移动网络运营商首先需要建设定位操作平台。鉴于我国基于LBS的GIS系统发展情况,SP/CP靠自己实现GIS具有相当的大的难度,同时也是资源的一种浪费。相对而言,由运营商统一建立一套GIS的方案是可行的。2.3 GIS技术 LBS的核心是服务。主要由智能终端、无线网络、通信网、服务、定位、GIS系统几大部分组成。GIS即地理信息系统,结合空间地理数据库,来对地理空间数据做操作。只有一些苍白的地理经纬度数字是毫无意义的,这些数据没有任何的具体含义,我们要做的就是把这些直白数字信息,转化成用户想要的实物数据。这就需要我们
17、将这些坐标点放在地理信息系统中来,才能代表具体的地点、方位等,这些最终的信息才是用户需要的、能理解的东西。GIS主要包含了电子地图、地图匹配、坐标系匹配等技术。 1)地图匹配技术 地图匹配是指在不同条件下获取的同一物景的地图之间的配准。同一传感器在不同时间,或不同类型传感器在同一时间,或不同类型传感器在不同时间所获取的两幅地图中的同一地面点所对应像素之间的配准,是图像处理的一个重要课题。最常用的匹配方法是互相关法。 地图配备技术是一种将定位轨迹与数字地图中的道路网络结合起来,在地图中去确定定位物体的位置。 2)电子地图技术电子地图技术,得益于信息技术的发展,它利用计算机技术按照数字方式对地图信
18、息进行存储和查阅。电子地图存储的地图信息是采用矢量的方式存储的,在这样的操作下,地图的现实效果就不会受地图比例的放大、缩小或旋转影响。早期的地图存储方式是位图式,地图比例不能做调整。现如今,电子地图软件都采用地理信息系统进行地图的存储。3)路径规划问题 路径规划是指,在具有障碍物的环境中,按照一定的评价标准,寻找一条从起始状态到目标状态的无碰撞路径。本算法中路径规划采用了基于知识的遗传算法,它包含了自然选择和进化的思想,具有很强鲁棒性。 路径规划的核心目的是要算出起点和终点之间最优路径,它是地理信息系统中的基本功能。常用的最佳路径算法是Dijskra算法。在LBS服务中我们不可能采用这种方式的
19、原因是智能终端的处理效率和网络传输的瓶颈。我们必须对这个算法进行改造。 4)移动数据库技术 移动数据库是能够指出移动式计算环境的数据库,其数据在物理上分散而逻辑上集中。它涉及到移动通信技术、分布式计算技术、数据库技术等多个学科,与传统的数据库相比,移动数据库具有移动性,位置相关性,频繁的断接性,网络通讯的非对称性等特征。 移动数据库作为分布式数据库的延伸和扩展,拥有分布式数据库的诸多优点和独特的特性,能够满足未来人们访问信息的要求,具有广泛的应用前景。2.4 手机定位技术 手机定位技术是指将使用GPS技术或基站定位技术,来对手机进行定位的技术。使用手机的GPS定位模块基于GPS的定位,将自身的
20、位置信号发送到后台来实现手机定位。基站定位则是使用基站对手机的距离的测算距离来确定电话的位置。后者并不需要具有GPS定位功能的移动电话,但精度极大地依赖于所述基站的密度,并有时会错误超过一公里。前者定位精度高。此外,还有使用WiFi在一个小区域的定位方式。众所周知,GPS是美国的全球定位系统系统,他们掌握着GPS技术的核心模块,提供给我们使用的都是一些小精度的服务,而且随着GPS设备的小型化,每次启动设备都需要花很长的时间初始化,大大的降低了用户的满意度。为了解决这一问题,GPS辅助定位的方式就应运而生了。GPS辅助定位的流程如下:通信网收到GPS发来的辅助信息,通信网将信息推送给手机,手机获
21、取到GPS信息,测算出手机终端的位置信息,手机将信息发送给通信网。辅助GPS技术(A-GPS ),它是通过移动通信的基站来快速定位。当无线电信号很差的情况下GPS定位就显得力不从心,例如在一座城市,这些信号可能会被许多建筑物、墙壁或树木削弱。在这样的条件下,辅助GPS技术就可以发挥其优势,利用基站进行快速定位。该定位方式包括手机辅助GPS定位和手机自主GPS定位两种。1)手机辅助GPS定位方式这种方式通过GSM网向手机发送辅助信息,来减少设备访问GPS获取数据的时间,将传统的GPS的大部分功能交由网络处理器来完成。GSM发送的辅助信息可以持续几分钟,网络处理器分析这些辅助信息,测算出手机的位置
22、,完成辅助定位功能,提供定位的精确度。2)手机自主GPS定位方式这种自主的定位方式要比辅助定位复杂,要求传入的参数更多。它包含了辅助方式的所有定位功能,而且还添加了对卫星位置和手机位置的计算功能。这种方式的最大特点就是需要手机包含一个全功能GPS接收器。WiFi定位,类似于基站定位,由于WiFi热点特点位置很少变动,每一个WiFi热点都有唯一一个mac地址。WiFi定位精度比GPS要低,受服务范围限制,而且没有方向、速度等数据,不能导航,更不能离线使用。不过它有比GPS更优越的地方,就是在人口、楼群越密集的地方,使用的效果会更好。GPS启动时间长,在室内是无效的,天气不好的时候表现也欠佳,楼群
23、太密集的地方也不太好用。而这些因素都能被WiFi定位很好地补充。2.5 手机端和服务器端数据交互在Android中有时候我们不需要用到本机的SQLite数据库提供数据,更多的时候是从网络上获取数据,Android从服务器获取相应数据的方式有三种,如表2-1所示。表2-1 客户端与服务器数据交换方式交互方式原理系统中是否使用Sockettcp协议是Web servicesoap协议是HttpClienthttp协议否这三种数据交换方式,各自有使用场合,第二种和第三种都是比较适合轻量级的数据。Web service传输的数据格式一般都是xml这种类型的,在本系统中,要对公交的情况进行实时捕获,获得
24、其位置信息(经度、维度),因此使用第二中方式是最为合适的,也是最为方便的。Socket方式是基于TCP协议的套接字方法,这种方法适合于大数据的传输,支持断点续传。虽然HttpClient也支持大数据的传输,但不支持断点续传。2.6 多线程技术 线程可以定义为进程中的异步代码路径。在支持多线程技术的操作系统中,进程可以包含多个线程,这些线程可以按照与多用户操作系统同时支持多进程相同的方式同时运行。从本质上讲,多线程可以在一个进程内同时运行。这就是为什么线程有时候被当成轻量级进程的原因。多线程设计技术的优点主要有下面四点:1)响应能力。多线程处理一个交互应用程序的时候,当线程的一部分被阻塞的时候,
25、该应用程序还能继续运行,因此对用户增强了响应能力。2)资源共享。线程共享它们所属进程的内存和资源。共享的好处就是一个应用程序可以有多个拥有相同地址空间的不同线程在运行。3)节约内存。为进程的创建分配内存和资源是很昂贵的开销,因为线程共享它们所属的进程的资源,所以在创建和上下文转换线程的时候就要节约很多。要去测量、比较创建以及管理进程和线程之间的花费是很困难的,通常来说,创建和管理一个进程的花费要比之下同意的操作大得多。4)多进程结构体系的利用。多进程结构体系因为可以让进程在不同的进程中并行执行而可以充分发挥多线程的优点。在一个单线程结构体系中,CPU在不同的线程之间快速转换,让线程看起来好像是
26、并行执行的,但实际上在一个时刻中只有一个线程在执行。多线程技术的应用使得Android系统处理一些比较耗时的操作显得如鱼得水。用户只会认为当前只有一个程序在运行,根本无法察觉到还有其他程序也在执行,用户的体验度根本没有丝毫的降低。说到多线程技术,首先我们必须要明确多线程的原理,多线程并不代表多个线程在同一时刻执行,线程之间是呈交替状态执行,只是这个交替的时间片段非常短暂,再加上CPU相当高的执行效率,使得线程之间的切换让人察觉不到。再者CPU在同一时间只能处理一件事情,这样情况下就造成很多线程同时运行的错觉。应用程序在采用了多线程技术后可以更充分的利用系统资源,不同于桌面端程序,手机自身的局限
27、性,使得手机应用程序举步维艰,采用多线程后,最大限度的利用CPU资源。属于一个进程的所有线路共享同一个内存,这样就解决了资源如何分配的问题。Thread类和Runnable接口是实现多线程的两种主要方法。在Java中不能多继承,所以这里使用Runnable接口。start()方法产生运行线程所必须的资源,调度线程执行,并且调用线程的run()方法。在这时线程处于可运行态。sleep()方法使线程休眠,当休眠的线程被唤醒时线程的状态为可运行状态。调用notify ()方法可将等待状态的线程恢复到正常的运行状态。详细的线程状态图如图2-3。图2-3 线程状态切换示意图3 需求分析3.1 需求分析
28、随着我国城市化进程的快速发展,人们的出行越来越频繁,公共交通工具成为生活中不可或缺的一部分。那么传统的获取出行线路信息的方式是大部分人乘坐公交时,都会习惯性的从自己所在的公交站牌处了解有关公交线路、沿途停靠的站点、发车时间和收车时间等基本信息。公交站牌所提供的信息是有限的,无法提供换乘的信息。随着当今信息技术的发展,网络己经成为了社会大众不可或缺的渠道。乘客在出行前,可以通过网络查询公交信息的网站,了解应当怎么样出行,应该在哪个站点换乘,乘坐哪一条线路。但是相应的问题也产生了,通过计算机浏览网页的方式不够灵活,尤其不方便的是在出行过程中查询公交信息。随着智能手机的大量普及和移动3G技术的发展,
29、人们不再需要通过计算机浏览网页的方式查询公交信息,人们只需要拿出你的智能手机轻松一点就可以快速获得相应的站点信息和站点附近的商业圈信息。“基于Android平台的移动公交查询系统”就是在这样的背景下提出来的。 需求分析的目的是为了更好的满足用户的需求,我们需要确定系统应具备什么样的功能和性能,系统需要做什么。根据上面的文字叙述我们初步确定了该系统应包含手机客户端、web管理端和服务器三大部分。3.1.1 系统用例图 用例图即为系统功能模型图,展示用例之间的联系要包括一般用户、系统管理员两种角色。根据不同的角色对系统有不同的需求。 一般用户输入注册成功的用户名和密码后登录系统,可以搜索公交线路和
30、站点,同时也可以对自己的注册的基本信息进行维护。一般用户需求用例图如图3-1所示。图3-1 一般用户用例图 系统管理员主要对整个系统进行管理。登录系统后可以对普通用户进行管理,也可以对站点及线路进行管理。系统管理员用例图如图3-2所示。图3-2 系统管理员图例3.1.2 功能需求 Android手机客户端,是移动用户在手机上操作系统,主要有以下几个功能模块:个人信息管理、站点搜索、线路搜索等,如图3-3所示。图3-3 客户端功能模块图 1)个人信息管理 Android手机用户登录系统进行密码的修改和用户基本信息的维护。 2)线路搜索 公交的线路、站点和经纬度已存在数据库中,通过访问数据库,就可
31、以获取到每条公交线路的每一个站点。手机客户端登入系统后,选择要查询的线路,定位自己手持终端的位置,这样就可以实现线路站点和自己位置的导航。 3)站点搜索 以自己的手持终端位置为中心点向附近辐射,搜索附近所有的站点信息,选择站点,就可以轻松实现自己和站点间路径搜索和导航。3.2 系统架构设计 根据系统需求的分析移动公交查询系统主要可以采用C/S架构。一般手机用户通过C/S(client/server)模式,使自己的手持android客户端与服务器之间进行数据交互。移动用户通过基站获取自己的位置信息,并将这些位置信息,发送给服务器,服务器就对这些请求做处理,反馈请求信息给手机客户端,实现了手机端和
32、服务器之间的数据交互。在C/S模式中,客户端向服务器发送数据请求,服务器接受来自客户端的请求消息并处理它们,客户端则使用服务器提供的服务,两者以同步或异步的方式。系统总体架构主要包括了手机客户端、服务器、Mysql数据库。 在系统中,公交的线路、站点、经纬度等基本信息己经保存在数据库中。我们可以访问数据库查询每一条线路的每一个站点信息。然后对自己的手持终端进行定位,这样就可以轻松实现路线的导航。线路搜索模块流程图如图3-4所示。图3-4 搜索流程图4公交查询系统的设计与实现4.1 Android程序开发 Android系统为开发者提供了丰富的可视化界面设计组件,包括菜单、对话框、按钮、文本框等
33、,其中最主要的界面元素包括以下三类。 1)视图组件(View:是基类Android.view.View的一个实例,用来存储屏幕上特定矩形内的布局和内容属性,由视图又衍生出了一个子类Widgets(窗体控件),用来处理屏幕区域的测量和绘制,常用的Widget包括Text, EditText, Button,CheckBox和ScrollView等。2)视图容器(ViewGroup:是基类Android.view.ViewGroup的一个实例,用来承载和管理一组下层的视图和其他视图组,通常称为View的容器。3)布局管理:Android使用布局管理器来管理应用程序中各用户界面的组件,这样做的好处是
34、可以避免因手机分辨率、尺寸等的差异导致编写的应用程序无法移植,因为布局管理器能根据运行平台调整组件的大小。所有的布局管理器都是ViewGroup的子类,图4.1表示布局管理器中各类的关系。图4.1 Android布局管理器的类图 1)LinearLayout(线性布局):该布局中元素之间成线性排列,常用的布局有水平布局和垂直布局。 2)RelativeLayout(相对布局):该布局中元素之间根据相对位置排列,即在指定一个元素位置时往往会以它的父元素或其它元素的位置作为参照,来决定当前元素的位置,这种布局方式相对随意,没有规律性,但必须保证在使用之前其参照物己经存在。 3)AbsoluteLa
35、yout(绝对布局):该布局中元素之间根据坐标排列,即将整个手机划分成坐标系,通过指定坐标系中的两个偏移量来决定元素的位置。 4)FrameLayout(帧布局):该布局为每个加入的组件都创建了一个空白区域(一帧),这些帧会根据gravity属性自动对齐,这样会形成组件叠加的效果。 5)TableLayout(表格布局):该布局中元素之间的排列由表格决定,表格的行和列通过添加TableRow或其他组件来控制,通常加入一个TableRow或是一个组件都代表一行,表格的宽度取决于父容器的宽度,这种布局只是实现方式与表格类似,但元素之间并没有实际的分界线。Android中提供了两种方式来利用上面的组
36、件设计布局,一是在XML布局文件中通过设置XML属性进行控制,二是在Java程序中通过调用函数进行控制,也可以将这两种方法组合起来使用。Android推荐使用XML布局文件的方式来控制用户界面的显示,这样做不仅简单明了,还可以将视图控制逻辑从代码中剥离出来,放入一个单独的文件中进行控制,更好的体现了MVC原则。4.2 SQLite简介SQLite数据库中的结构新建由以下四个部分组成:新建表:CREATE TABLE table_ name (column_ name1 data type, column_ name2 data type,),用来在SQLite数据库中新建一张数据表。新建视图:
37、CREATE VIEWdatabase nameview name AS select statement,用来在SQLite数据库中新建一个视图(虚拟表),该表以另一种方式表示一个或多个表中的数据。新建触发器:CREATE TRIGGER trigger_name Database_eventON database_ nametable_ name Trigger_ action Database_ event: delete /insert /update /update of Trigger_ action:BEGIN select-statement/insert_ statement
38、 /update_ statement/delete_ statement END,用来在SQLite数据库中新建一个触发器,在用户试图对指定的表执行指定的数据修改语句时自动执行,其中触发器是一种特殊的存储过程。新建索引:CREATE INDEX index name ONdatabase nametable name,用来为指定表或视图创建索引。 SQLite数据库中的结构删除由以下四部分组成: 1)删除表:DROP TABLEdatabase_nametable_name,用来删除数据表及该表的全部索引。 2)删除视图:DROP VIEW view_name,用来删除一个视图。 3)删除触
39、发器:DROP TR工GGERdatabase_nametrigger_name,用来删除一个触发器。 4)删除索引:DROP INDEXdatabase_nameindex_name用来删除一个索引。SQLite数据库中的数据操作分为增加、删除、修改和查找四个部分,各个操作的主要语法如下:增加:INSERT INTO table namecolumnl,column2,. VALUES (valuel,value2,.),向SQLite数据库的数据表中插入一行数据。删除:DELETE FROM table name WHERE column name=some value,删除SQLite数
40、据表中符合条件的数据。修改:UPDATE table name SET colume name=new value WHERE column name=some value,将SQLite数据表中符合条件的记录修改为新的数据。查找:SELECT select list FROM table source WHERE search conditionGROUP BY group by_ expressionHAVING serch_ condition,查找SQLite数据表中符合条件的记录。4.3 系统功能详细设计与实现 1)地图加载模块 本系统所有的功能都是以百度地图为基础,围绕百度地图展开
41、的。因此需要加载百度地图。实现该模块的部分代码如下:import android.app.Activity;import android.content.Intent;import android.graphics.Bitmap;import android.os.Bundle;import android.widget.Toast;import baidumapsdk.demo.R;import com.baidu.mapapi.BMapManager;import com.baidu.mapapi.map.MKMapViewListener;import com.baidu.mapapi.
42、map.MapController;import com.baidu.mapapi.map.MapPoi;import com.baidu.mapapi.map.MapView;import api.basestruct.GeoPoint;public class BaseMapDemo extends Activity final static String TAG = "MainActivity";private MapView mMapView = null;private MapController mMapController = null;MKMapViewLi
43、stener mMapListener = null; Override public void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); /* * 使用地图sdk前需先初始化BMapManager. * BMapManager是全局的,可为多个MapView共用,它需要地图模块创建前创建, * 并在地图地图模块销毁后销毁,只要还有地图模块在使用,BMapManager就不应该销毁 */ DemoApplication app = (DemoApplication)this.getApplic
44、ation(); if (app.mBMapManager = null) app.mBMapManager = new BMapManager(this); /* * 如果BMapManager没有初始化则初始化BMapManager */ app.mBMapManager.init(DemoApplication.strKey,new DemoApplication.MyGeneralListener(); /* * 由于MapView在setContentView()中初始化,所以它需要在BMapManager初始化之后 */ setContentView(R.layout.activi
45、ty_main); mMapView = (MapView)findViewById(R.id.bmapView); /* * 获取地图控制器 */ mMapController = mMapView.getController(); /* * 设置地图是否响应点击事件 . */ mMapController.enableClick(true); /* * 设置地图缩放级别 */ mMapController.setZoom(12); /* * 将地图移动至指定点 * 使用百度经纬度坐标,可以通过http:/ * 如果需要在百度地图上显示使用其他坐标系统的位置,请发邮件至mapapi申请坐标转
46、换接口 */ GeoPoint p ; double cLat = 39.945 ; double cLon = 116.404 ; Intent intent = getIntent(); if ( intent.hasExtra("x") && intent.hasExtra("y") ) /当用intent参数时,设置中心点为指定点 Bundle b = intent.getExtras(); p = new GeoPoint(b.getInt("y"), b.getInt("x"); els
47、e /设置中心点为天安门 p = new GeoPoint(int)(cLat * 1E6), (int)(cLon * 1E6); 2)站点搜索模块 在百度地图上实现站点搜索。实现该部分功能部分代码如下:import java.util.List;import android.app.Activity;import android.graphics.drawable.Drawable;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android
48、.widget.Toast;import com.baidu.mapapi.BMapManager;import com.baidu.mapapi.cloud.BoundSearchInfo;import com.baidu.mapapi.cloud.CloudListener;import com.baidu.mapapi.cloud.CloudManager;public class CloudSearchActivity extends Activity implements CloudListener MapView mMapView; Override protected void
49、onCreate(Bundle icicle) super.onCreate(icicle); DemoApplication app = (DemoApplication)this.getApplication(); if (app.mBMapManager = null) app.mBMapManager = new BMapManager(this); app.mBMapManager.init(DemoApplication.strKey,new DemoApplication.MyGeneralListener(); setContentView(R.layout.lbssearch
50、); CloudManager.getInstance().init(CloudSearchActivity.this); mMapView = (MapView)findViewById(R.id.bmapView); mMapView.getController().enableClick(true); mMapView.getController().setZoom(12); mMapView.setDoubleClickZooming(true); findViewById(R.id.regionSearch).setOnClickListener(new OnClickListene
51、r() Overridepublic void onClick(View v) LocalSearchInfo info = new LocalSearchInfo();info.ak = "B266f735e43ab207ec152deff44fec8b";info.geoTableId = 31869;info.tags = "";info.q="天安门";info.region = "北京市";CloudManager.getInstance().localSearch(info););findViewByI
52、d(R.id.nearbySearch).setOnClickListener(new OnClickListener() public void onClick(View v) NearbySearchInfo info = new NearbySearchInfo();info.ak = "D9ace96891048231e8777291cda45ca0";info.geoTableId = 32038;info.filter="time:20130801,20130810";info.location = "116.403689,39.9
53、14957";info.radius = 30000;CloudManager.getInstance().nearbySearch(info);); 3)线路搜索 在地图上创建站点路线后,通过遍历方法可以实现路线搜索结果的显示。实现该部分功能的部分代码如下:import java.util.ArrayList;import java.util.List;import android.app.Activity;import android.os.Bundle;import android.util.Log;import com.baidu.mapapi.search.MKSearchListener;import com.baidu.mapapi.search.MKShareUrlResult;import com.baidu.mapapi.search.MKSuggestionResult;import com.baidu.mapapi.search.MKTransitRouteResult;import com.baidu.mapapi.search.MKWalkingRouteResult;import api.basestruct.GeoPoint;import baidumapsdk.demo.R;/* * 此demo用来展示如何进行公交线路详情
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 乐队训练第二学期计划2篇
- 主诊医师述职报告范文(6篇)
- 中学生繁星春水读后感
- 高职伤逝课件教学课件
- 探究性阅读课教案
- 美术大纲课件教学课件
- 轮椅车座椅 第14部分:与外力控制以维持组织完整性有关的概念 征求意见稿
- 农小蜂-中国香蕉市场动态监测(2024年10月)
- 八年级上学期语文1月月考试卷
- 初中化学基础知识与题目(含答案)
- 心理健康教育心理健康知识讲座-课件
- 2023年新高考数学(新高考Ⅰ卷)真题评析及2024备考策略
- 湖北省武汉市华中师范大学附属小学六年级小升初语文测试卷(8套试卷带答案解析)
- 新媒体运营(用户运营内容运营活动运营产品运营社群运营)PPT完整全套教学课件
- 赣州市中小学三年级上册计算机教室上机记录表
- 任务七食品中脂肪含量测定
- 《IT人员职业规划》
- 初级社会统计学智慧树知到答案章节测试2023年哈尔滨工程大学
- 诗歌鉴赏基本知识点
- 人文英语3范文+人文英语3阅读740
- GB/T 3274-2007碳素结构钢和低合金结构钢热轧厚钢板和钢带
评论
0/150
提交评论