公交查询系统


摘    要

随着无线移动通信的高速发展及各种移动业务种类的快速增长,一切互联网上的业务都在移动通信系统中得到应用。然而,由于用户需求的原因,或者终端支持与否的因素,并非所有手机都能正确显示同一信息内容。而且随着客户端设备的类型越来越多,人们对个性化服务的要求越来越高,个性化信息服务成为将来网络信息服务发展的一个重要的方向。

移动终端是一种采用先进通信协议栈的复杂系统,它需要具有与许多网络设备互操作、支持先进而丰富的多媒体的应用程序。而且,所有这些都必需在一个资源有限的嵌入式系统的约束条件下实现。Android技术提供了跨平台的能力,并支持多种器件设备。Android技术为无线设备创建了一个全新的开发平台,可以让移动通信设备发挥出最大的潜能。Android手机作为移动终端为今后移动通信发展提供了很好的解决方案。

本文对Android系统的特征,系统架构及应用程序构建、开发都做了比较详细的分析。同时结合Baidu Maps、GPS定位技术、对在android上定位和导航进行了深入的研究,并设计了基于Android系统的公交路线查询应用。系统使用java语言和eclipse开发工具进行编写。同时给出了详细的系统设计过程、部分界面图及主要功能运行流程图,本文还对开发过程遇到的问题和解决方法进行了讨论。

本系统的主要实现的功能有换乘查询,还有线路查询和站点查询功能,不仅能显出查询的结果,而且还能够根据用户选择的线路实现电子地图的显示,使系统更加直观。

关键词android,公交路线查询, Baidu Maps

ABSTRACT

With the rapid development of wireless mobile communication and the rapid growth of the mobile business types, all business on the Internet in a mobile communication system. However, due to reasons of user needs, or whether or not the terminal supports the factors, not all phones can correctly display the same information content. And more and more with the type of client device, more and more personalized service requirements, personalized information service has become important direction of the future development of a network information service.

Mobile terminal is a complex system with advanced communication protocol stack, it needs to have interoperability with many network devices, and support advanced rich multimedia applications. Moreover, all of which must be implemented in a resource-limited embedded system under restricted conditions. Android technology provides cross-platform capability, and supports a variety of devices devices. Android technology for wireless devices to create a new development platform that lets mobile communications equipment to play the greatest potential. Android phone as a mobile terminal provides a good solution for the future development of mobile communication.

In this paper, the Android system characteristics, system architecture and application build, developers have done a more detailed analysis. Combination Baidu Maps, GPS positioning technology, positioning and navigation android conducted in-depth research and design of bus routes Android-based query application. The system uses the Java language and Eclipse development tools to write. At the same time gives a detailed system design process, part of the interface diagram and operation flow chart of the main function of the development process, the paper also encountered problems and solutions are discussed.

The system functions of the main transfer query line query and site search function, not only can show the results of the query, but also to the electronic map display based on user-selected line, to make the system more intuitive.

Key words: android, Bus routes queries, the Baidu Maps

目    录

第1章 绪论

1.1课题的研究意义

1.2移动终端的发展现状

1.3公交查询现状

1.4本次课题研究内容

第2章 需求分析

2.1 服务器端需求分析

2.1 客户端需求分析

第3章 技术背景介绍

3.1 GPS

3.1.1全球定位系统简介

3.1.2 GPS系统的组

3.1.3 GPS的功能

3.1.4 应用前景

3.2 Android平台

3.2.1 Android特征

3.2.2 Android架构

3.2.3 Android应用的构成和工作机制

3.3本章小结

第4章 平台的搭建

4.1 Android 开发环境的搭建

4.1.1 JDK的安装

4.1.2 Eclipse的安装

4.1.3 Android SDK安装

4.1.4 ADT安装

4.1.5 创建AVD

4.2 Eclipse简介

第5章 程序设计

5.1系统体系结构

5.2 Baidu Maps API 申请及使用

5.2.1申请Baidu Map Key

5.2.2获取坐标和地址

5.2.3地图自动定位

5.2.4百度地图地址解析服务Geocoder

第6章 系统设计与实现

6.1 欢迎界面的实现

6.2 主要功能的实现

6.3 截图及运行说明

6.4 软件可以改进之处

第7章 系统测试

7.1手动测试方案

7.2工具测试方案

7.2.1单元测试

7.2.2 系统测试

7.3测试用例

7.4辅助测试工具

结论

参考文献

致谢

第1章 绪论

1.1课题的研究意义

出行是人们日常生活中不可或缺的一部分,而公交车是大多数人出行首选的交通工具,如何才能随时随地、方便快捷的获取公交线路的信息,合理安排自己的出行线路,是很多人非常关心的问题。

建设智能公交系统,利用当代高新技术:电子、信息、通信、计算机、GPS、GIS等,将交通系统中的人、交通设施和交通工具有机的联系起来,建立智能公交系统,如公交优先系统、公交查询系统、智能化行车系统等,为乘客提供实时的更多更全面的出行信息,更好的为乘客服务。

在智能公交系统中,公交查询系统的服务是目前最贴近乘客日常生活的,也是最能让乘客亲身体会公交服务水平高低的方面。因此,如何给乘客提供一个良好的平台,让乘客选择或是推荐合适的乘车方案出行,以节约乘车时间,缩短到达目的的乘坐距离,减少乘坐的票款成本,才是提高公交服务水平最值得关注的问题之一。

越来越多的人倾向通过上网获得和共享信息,随着网络应用的普及而不断的发展,Internet的应用成了世人关注的焦点。公交路线查询系统既提供全面的公交信息,更具有实用性、便利性、多样性。因此我们提出开发并设计了一个基于Android平台的公交路线查询系统。用户可以在任意一款Android手机中安装此工具。通过此查询工具可以查看线路,查找任意两地的乘车方案等,更方便用户出行,节约时间,减缓交通压力。

1.2移动终端的发展现状

当今在全球信息与通信领域中,无线移动通信的发展之快最引人注目。在中国,仅蜂窝移动通信用户早已跨过3亿大关,而在全球15亿的移动用户已成事实。中国在全球范围内不仅用户数增长最快,而且移动用户与固定电话用户之比的增长率也是全球第一。

按照无线移动终端的发展历程大致将其分为三类:

第一类是以语音通信为主的手机,也就是我们传统意义上的手机,目前主要面向低端市场,这类手机的硬件都是围绕一个单一的基带处理器搭建的,该处理器执行电信和其它简单的应用任务。

第二类是增值业务手机,也叫多功能手机,这是目前需求量最大的手机。这些手机一般面向特定应用,一个功能强大的基带处理器芯片实现移动终端的主要功能,如果基带处理器不能满足诸如视频处理等功能,可以配套使用一个应用协处理器,它面向特定应用。

第三类是智能手机,即高端手机,曾被定义为“拥有操作系统并支持第三方应用的手机”。这类手机中应用处理器成为系统的核心,而GSM/GPPS等通信MODEM则成为实现连接功能的外设之一,此外还有其它通信外设,如WLAN、蓝牙、USB等,并且可能提供统一的扩展接口。智能手机通常要采用复杂的嵌入式操作系统为上层应用提供统一的应用接口。并且,智能手机多备有较大显示屏,具有计算和文字处理方面的功能。

从移动业务的角度看,目前现有的业务种类已经是琳琅满目,一切互联网上的业务都在移动通信系统中得到应用,当然,由于现有网络质量和带宽的限制,它还远不能给用户以有线网络的体验,而且有些业务在目前条件下也只是概念上的炒作。然而,并非所有的业务都能顺利推出,其中有用户需求的原因,也有终端支持与否的因素,并非所有终端都能对统一网站的内容正确显示,并非所有手机都能正确显示同一信息内容.而且随着客户端设备的类型越来越多,人们对个性化服务的要求越来越高,个性化信息服务成为将来网络信息服务发展的一个重要的方向。

1.3公交查询现状

国外许多国家都十分重视公交查询的研究和应用。其目的在于通过提供及时准确的信息和服务,吸引更多的出行者使用公共交通,促进公交的大力发展,减缓城市的交通压力。尤其是美国,他们的研究取得了较好的效果。他们发展公交查询系统的特点是能够提供快捷、方便的电话咨询服务;与定位技术相结合,提供实时信息服务;触摸屏在公共场所的广泛使用以及查询与网络的结合。欧洲一些国家,如芬兰、意大利等,他们在研究公交查询方面也取得了不小的成果。

近年来,我国的公交查询系统也在迅速地发展,不少城市也都有拥有公交线路查询系统,网络上也可以下载到许多不同的版本。不过公交查询系统在发展的同时也存在一些问题,需要不断地改进和完善。

比如早期的公交查询系统脱离了网络,只是一种供人下载后方可查询的程序,是一种单机程序。这样的信息不够准确,也不够及时。

有一部分公交查询系统,它们只是简单地将各个线路和站点的信息一一罗列出来,让用户自己去一条条查找。而真正意义上的公交查询系统应该是用户输入想要查询的内容,系统能够自动查询出结果,而不是靠用户人工进行查询。

还有一部分网上的公交查询系统,它们的系统功能比较完善,实现站点、线路查询以及换乘查询,更加完善一点的系统还有电子地图查询等功能,但是对城市有代表性的地点介绍和查询的功能,做得好的比较少。

还有就是手机上的公交查询系统,可以采用短消息的形式进行查询,但也有一定的局限性。硬件方面,比如遇到服务器、网络繁忙时或者信号盲区,导致用户请求长时间得不到回应。软件方面,运营商不一定提供此类的查询服务。

现行的公交车系统或多或少都还是存在一些缺陷的。但是随着技术的更新以及不断的改进,相信可以做出更人性化、更完善的公交查询工具。

1.4本次课题研究内容

本次毕业设计要研究的内容是学会界面的设计,进行数据库的设计并学会使用SQLite数据库,学会在Baidu Map的基础上进行地图开发。

论文第一部分介绍了目前公交路线查询的现状,第二部分为关键技术介绍,主要介绍本系统中所涉及到的主要关键技术,第三部分是关于系统总体结构设计,主要介绍系统的功能模块和数据库的设计与实现。第四和第五部分就是系统详细的设计与实现及测试结果等,然后对整个毕业设计进行了总结,最后部分为致谢。


第2章 需求分析

手机公交线路查询软件最基本的功能是能够有效的为用户提供查询服务,在最短的时间内给用户一条或多条到达目标地的路径。整个查询过程中,只有数据信息是依靠服务器同步获取,其余功能均在手机端完成。在此分别对手机公交线路查询软件的服务器端和客户端做需求分析。

2.1 服务器端需求分析

服务器作为后台,需要专业人员对服务器操作和维护,一般情况可由非专业人员借助管理软件对服务器进行常规维护。服务器可以通过数据库同步,为客户端数据库提供数据。通过仔细分析服务器需求之后,服务器端要完成以下功能:

1、服务器后台管理功能

服务器后台管理是针对数据库进行操作,具有增、删、改、查功能。

2、数据同步功能。

采用REST协议,响应客户端请求,返回给客户端一端数据流,该数据流按照JSON格式,返回给客户端,由客户端进行解析。

服务器端功能模块划分如图2-1所示。

图2-1 服务器端功能模块

2.1 客户端需求分析

客户端主要是手机,用户无法通过手机对本地数据库进行操作,也无法对服务器数据库操作,管理员可以通过手机浏览器登录到服务器管理员页面对数据库进行操作,可以使用一些功能。该软件应满足若干要求,比如能够随时掌握公交信息,动态更新最新数据等。也要考虑作为手机软件可能会出现查询速度慢,数据流量过大,过度依赖服务器等问题。通过仔细分析用户需求之后,该软件要完成以下功能:

1、查询线路功能

获得线路经过的每个站点信息以及线路的票价信息和发车时间信息。

2、地图查询功能

借助BaiduMap,完成公交查询并显示地图线路。

3、数据更新功能

服务器响应客户端请求返回一段数据流,客户端接收此数据流后,按照JSON格式规范对数据流进行解析,解析后将数据存入客户端数据库。

第3章 技术背景介绍

3.1 GPS

3.1.1全球定位系统简介

全球定位系统(英语:Global Positioning System,通常简称GPS),又称全球卫星定位系统,是一个中距离圆型轨道卫星导航系统。它可以为地球表面绝大部分地区(98%)提供准确的定位、测速和高精度的时间标准。系统由美国国防部研制和维护,可满足位于全球任何地方或近地空间的军事用户连续精确的确定三维位置、三维运动和时间的需要。该系统包括太空中的24颗GPS卫星;地面上的1个主控站、3个数据注入站和5个监测站及作为用户端的GPS接收机。最少只需其中3颗卫星,就能迅速确定用户端在地球上所处的位置及海拔高度;所能收联接到的卫星数越多,解码出来的位置就越精确。

该系统由美国政府于1970年代开始进行研制并于1994年全面建成。使用者只需拥有GPS接收机即可使用该服务,无需另外付费。GPS信号分为民用的标准定位服务(SPS,Standard Positioning Service)和军规的精确定位服务(PPS,Precise Positioning Service)两类。由于SPS无须任何授权即可任意使用,原本美国因为担心敌对国家或组织会利用SPS对美国发动攻击,故在民用讯号中人为地加入选择性误差(即SA政策,Selective Availability)以降低其精确度,使其最终定位精确度大概在100米左右;军规的精度在十米以下。2000年以后,克林顿政府决定取消对民用讯号的干扰。因此,现在民用GPS也可以达到十米左右的定位精度。

GPS系统拥有如下多种优点:使用低频讯号,纵使天候不佳仍能保持相当的讯号穿透性;全球覆盖(高达98%);三维定速定时高精度;快速、省时、高效率;应用广泛、多功能;可移动定位;不同于双星定位系统,使用过程中接收机不需要发出任何信号增加了隐蔽性,提高了其军事应用效能。

3.1.2 GPS系统的组

GPS系统主要由空间星座部分、地面监控部分和用户设备部分组成。

空间星座部分

GPS卫星星座由24颗卫星组成,其中21颗为工作卫星,3颗为备用卫星。24颗卫星均匀分布在6个轨道平面上,即每个轨道面上有4颗卫星。卫星轨道面相对于地球赤道面的轨道倾角为55°,各轨道平面的升交点的赤经相差60° ,一个轨道平面上的卫星比西边相邻轨道平面上的相应卫星升交角距超前30°。这种布局的目的是保证在全球任何地点、任何时刻至少可以观测到4颗卫星。

GPS卫星是由洛克菲尔国际公司空间部研制的,卫星重774kg,使用寿命为7年。卫星采用蜂窝结构,主体呈柱形,直径为1.5m。卫星两侧装有两块双叶对日定向太阳能电池帆板(BLOCK I),全长5.33m接受日光面积为7.2。对日定向系统控制两翼电池帆板旋转,使板面始终对准太阳,为卫星不断提供电力,并给三组15Ah镍镉电池充电,以保证卫星在地球阴影部分能正常工作。在星体底部装有12个单元的多波束定向天线,能发射张角大约为30度的两个L波段(19cm和24cm波)的信号。在星体的两端面上装有全向遥测遥控天线,用于与地面监控网的通信。此外卫星还装有姿态控制系统和轨道控制系统,以便使卫星保持在适当的高度和角度,准确对准卫星的可见地面。

由GPS系统的工作原理可知,星载时钟的精确度越高,其定位精度也越高。早期试验型卫星采用由霍普金斯大学研制的石英振荡器,相对频率稳定度为/秒。误差为14m。1974年以后,GPS卫星采用铷原子钟,相对频率稳定度达到/秒,误差8m。1977年,BOKCK II型采用了马斯频率和时间系统公司研制的铯原子钟后相对稳定频率达到/秒,误差则降为2.9m。1981年,休斯公司研制的相对稳定频率为/秒的氢原子钟使BLOCK IIR型卫星误差仅为1m。

地面监控部分

地面监控部分主要由1个主控站(Master Control Station ,简称MCS)、4个地面天线站(Ground Antenna)和6个监测站(Monitor Station)组成。

主控站位于美国科罗拉多州的谢里佛尔空军基地,是整个地面监控系统的管理中心和技术中心。另外还有一个位于马里兰州盖茨堡的备用主控站,在发生紧急情况时启用。

注入站目前有4个,分别位于南太平洋马绍尔群岛的瓜加林环礁,大西洋上英国属地阿森松岛,英属印度洋领地的迪戈加西亚岛和位于美国本土科罗拉多州的科罗拉多斯普林斯。注入站的作用是把主控站计算得到的卫星星历、导航电文等信息注入到相应的卫星。

注入站同时也是监测站,另外还有位于夏威夷和卡纳维拉尔角2处监测站,故监测站目前有6个。监测站的主要作用是采集GPS卫星数据和当地的环境数据,然后发送给主控站。

用户设备部分

用户设备主要是GPS接收机,主要作用是从GPS卫星收到信号并利用传来的信息计算用户的三维位置及时间。

3.1.3 GPS的功能

精确定时:广泛应用在天文台、通信系统基站、电视台中

工程施工:道路、桥梁、隧道的施工中大量采用GPS设备进行工程测量

勘探测绘:野外勘探及城区规划中都有用到

导航:

武器导航:精确制导导弹、巡航导弹

车辆导航:车辆调度、监控系统

船舶导航:远洋导航、港口/内河引水

飞机导航:航线导航、进场着陆控制

星际导航:卫星轨道定位

个人导航:个人旅游及野外探险

定位:

车辆防盗系统

手机,PDA,PPC等通信移动设备防盗,电子地图,定位系统

儿童及特殊人群的防走失系统

精准农业:农机具导航、自动驾驶,土地高精度平整

授时:用于给电信基站、电视发射站等提供精确同步时钟源

3.1.4 应用前景

随着中国国民经济的快速增长的西部大开发的实施,我省的高等级公路建设迎来前所末有的发展机遇,这就对勘测设计提出了更高的要求,随着公路设计行业软件技术和硬件设备的发展,公路设计已实现CAD化,有些软件本身还要求提供地面数字化测绘产品的支持;建立勘测、设计、施工、后期管理一体化的数据链,减少数据转抄、输入等中间环节,是公路勘测设计“内外业一体化”的要求,也是影响高等级公路设计技术发展的“瓶颈”所在。目前公路勘测中虽已采用电子全站仪等先进仪器设备,但常规测量方法受横向通视和作业条件的限制,作业强度大,且效率低,大大延长了设计周期。勘测技术的进步在于设备引进和技术改造,在目前的技术条件下引入GPS技术应当是首选。

3.2 Android平台

Android是一个移动设备的软件平台,是由Linux+Java构成的开源软件,它提供包括SDK、Key Apps、Middleware、Linux Kernel四个部分在内的全套手机软件方案。它开放了基于Linux内核以上的开发工具,从而保证了内容的可移植性和多样性。Android平台为我们开发应用程序提供了一套很好的框架,我们可以在这个平台的基础上开发不同的应用程序,也可以开发新的组件供应用程序调用[1]。

3.2.1 Android特征

Dalvik虚拟:Android采用的Java虚拟机是自主开发的代号为Dalvik的虚拟机技术,在保证API方面兼容的同时Dalvik针对移动手机进行了大幅优化,占用资源更小,运行效率更高。

内嵌浏览器:基于开源的浏览器网页排版引擎WebKit。

优化的图形:强大的自定义二维图形库。基于OpenGL ES 1.O标准的3D图形功能,在移动3D开发中有着至关重要的地位。

SQLite数据库:SQLitet提供结构化的数据存储。它是一款轻型免费的且开源的数据库,它的设计目标是嵌入式的,它占用的资源非常低、需要的内存空间少、处理速度比较快和支持事务处理功能等。

多媒体支持:支持各种通用的音视频和静态图像格式,如MP3、JPG、PNG等。Open Core是Android多媒体框架的核心,所有Android平台的音视频采集,播放的操作都是通过它来实现的。通过Open Core,程序员可以方便快速的开发出想要的多媒体应用程序。

GSM技术:(依赖硬件)Global System for Mobile Communications,全球移动通讯系统,俗称“全球通”,是第二代移动通信技术,其开发El的是让伞球各地可以共同使用一个移动电话网络标准,让用户使_一部手机就能行遍全球。

蓝牙,EDGE,3G,and WiFi是一种短距离的无线连接技术,在短距离内可以实现话音和数据的无线传输。EDGE(EnhaIlced Data Rate for GSM Evolution),是增强型数据速率GSM演进技术。

Camera,GPS,compass,and accelerometer:(依赖硬件)GPS(Global

Positioning System)ItTI驯全球定位系统。它是一个由覆盖全球的24颗1J星组成的卫星系统。Compass是个开放源代码的JAVA搜索引擎框架。强大的开发环境:包括一个设备模拟器,调试工具,内存和性能检测,以及EclipseIDE的开发插件。Eclipse是个集成开发环境[2]。

3.2.2 Android架构

Android的架构是Linux内核、C/C++函数库、Dalvik虚拟机、应用框架以及关键应用程序构成的,如图2-1。通过编译基于框架的应用程序可以降低开发负荷。应用软件原则上是在Dalvik VM上运行的。

图3-1 Android架构图

Android平台内包含一些关键应用程序,如邮件收发客户端程序、短信收发程序、日历和网页浏览器等,开发者可以在其平台上开发更多有特色的应用程序。开发语言是Java。

Android应用程序的开发基于框架和组件。Android本身已在其框架中提高了许多的组件供应用程序调用,当然开发者也开放新的组件,并将组件放入应用程序框架中,以供自己和其它应用程序调用。

Android应用程序框架之下是一套C/C++函数库,它们服务于Android应用程序组件,其功能通过组件间接提供给开发者。这些函数库包括:标准C函数库、媒体功能库、浏览器引擎、2D和3D图形库、基于WEB应用的的安全协议SSL、用于点阵和矢量字体渲染的FreeType以及SQLite引擎等。

Android的Java程序运行环境包含一组Java核心函数库及Dalvik虚拟机,它们有效地优化了Java程序的运行过程。所有的Android应用都运行在它自己的进程里,该进程是一个Dalvik虚拟机的实例,Dalvik被设计成能在一台设备上高效的运行多个虚拟机实例。Dalvik虚拟机的可执行文件被封装成Dalvik可执行格式(.dex)。这是被优化过的最小内存依赖的格式。Java编译器(dx工具)将注册了的和运行时用到的类编译成.dex格式。Dalvik虚拟机依赖于底层Linux内核提供的功能,如线程机制,和内存管理机制等。

Android系统平台是基于优化了的Linux内核,是其系统平台的核心。它提供诸如内存管理、进程管理、设备驱动等服务,同时也是手机软硬件的连接层,提供了一个屏蔽层用于屏蔽硬件和上层软件。

3.2.3 Android应用的构成和工作机制

对于一个Android应用程序来说,是由Activity、 Intent Receiver 、Service、Content Provider四部分组成,但并不是每一个Android应用程序都必须由这四部分组成。在应用程序中使用时,需要在配置文件AndroidMainfest.xml中进行配置。这个配置文件是每个Android应用程序所必需的,用于定义应用程序的组件、组件的功能以及必要条件等。

Activity是构成应用程序中最重要的构造块, 在Android应用程序中,几乎都是通过Activity来与用户进行交互,所以Activity主要负责的就是创建与用户进行交互的显示窗口,你可以在这些窗口里通过调用setContentView(View)方法来显示你自己的用户界面。

1.活动生命周期:

活动(Activity)在系统中以活动栈的形式进行管理。当一个新的活动启动后,被放到了栈项,成为了运行活动,而新活动之前的活动在活动栈里总位于新活动之下,直到新的活动退出才重新回到前台。

图3.2 Activity状态变换路径图

从图2-2可以看出,Activity有三个关键的循环:

(1)活动的整个生命期:从首次调用onCreate(Bundle)开始,到最终调用onDestroyO结束。在onCreate()中进行所有初始化,在onDestroyO时进行清理工作,释放资源。

(2)活动的可见生命期:从调用onStart()开始,到onStop()被调用为止。在这段时间内,即使活动不与用户进行交互,用户也可以在屏幕上看到它。在这两个方法调用之间,可以维护活动显示给用户的资源。onStart()和onStop()方法可以多次调用,因为活动随时可以在可见和隐藏之间进行转换。

(3)活动的后台生命期:从调用onResume()开始,到onPause()被调用为止。在这段时间内活动处于其它所有活动之前,并与用户进行交互。一个活动可以不断在resumed状态和paused状态之间变换[4]。

2.活动之间的切换

Android使用了Intent类来实现活动之间的切换工作。Intent负责对应用中一次操作的动作、动作涉及的数据和附加数据进行描述。根据Intent的描述,负责找到对应的组件,将Intent传递给调用的组件并完成组件的调用。因此,Intent起着一种媒体中介的作用,专门提供组件互相调用的相关信息,实现调用者与被调用者之间的解耦。在应用中,我们可以以两种形式来使用Intent:直接Intent,指定了component属性的Intent,通过指定具体的组件类,通知应用启动对应的组件。间接Intent,没有指定comonent属性的Intent,则需要包含足够的信息,这样系统才能根据这些信息,在所有的可用组件中,确定满足此Intent的组件。

Intent Receivert是用于对外部事件的响应,当外部事件发生时,会使用NotificationManager通知用户。当一个Intent Receiver被触发时,系统会在需要的时候启动对应的应用程序。如在本系统中,当用户正在其它界面进行操作时,有好友发送消息过来,就会以通知的形式发送到当前界面的正上方来通知用户。各种应用还可以通过使用Context.broadcastIntent()将它们的Intent Receiver广播给其它的应用程序,实现应用之间的通讯。

Service是提供连续信息的应用程序。它是运行于应用程序后台的服务,在用户进行其它活动的时候,这个服务将一直运行在基于Android平台的即时通讯系统的研究与实现后台直到用户停止该服务或服务运行结束。本系统客户端扩展功能的音乐播放就是采用Service来进行设计和开发的,使用户可以边聊天边听音乐。

Content Provider应用程序能够将它们的数据保存到文件、SQL数据库和其它的存储设备中。当应用程序需要使用存储设备中的数据时,可以使用Content Provider来完成。使用Content Provider能够灵活的替换底层使用的存储设备,使开发者可以专著于应用逻辑的开发,不用考虑底层存储设备的细节,从而使应用系统具有良好的数据。

3.3本章小结

本章对Android平台的特征、架构以及Android应用的构成和工作机制进行了详细的分析。对于Android应用程序来说,主要由Activity、Intent Receiver、Service和Content Provider四部分组成,但并不是对于每一个应用程序,这四部分都是必须的。Activity是应用程序中最重要的一种构造块,我们对其进行了详细的分析,包括Activity的生命周期以及Activity之间的切换。

第4章 平台的搭建

4.1 Android 开发环境的搭建

Android平台为开发者提供了源码开放的软件开发包( SDK) ,它包含了使用Java语言开发Android平台应用的必要工具和组件(API) 。进行开发前先要建立合适的开发环境,其中基于Java的整合型可扩展平台Eclipse是我们的首选。

搭建环境所需要的软件:

  1. 操作系统:Windows XP 或 Linux;
  2. 软件包:Android SDK,ADT;
  3. IDE环境:Eclipse IDE + ADT Eclipse3.3以上;
  4. JDK:Java Runtime Environmcnt,JDK;

4.1.1 JDK的安装

下载JDK并且一路next进行安装,这里主要讲解JDK的环境变量如何配置:

  1. 我的电脑->属性->高级->环境变量->系统变量中添加以下环境变量:
  2. JAVA_HOME值为:
    1. D:\Program Files\Java\jdk1.6.0_18(安装JDK的目录)
  3. CLASSPATH值为:
    1. .;%JAVA_HOME%\lib\tools.jar;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\bin;
  4. Path:  
    1. 在开始追加 %JAVA_HOME%\bin;

安装完成之后,可以在检查JDK是否安装成功。打开cmd窗口,输入java –version 查看JDK的版本信息。出现类似如图3-1的画面表示安装成功了:

图3.1验证JDK安装是否成功

4.1.2 Eclipse的安装

下载如图3-2所示的Eclipse IDE for Java Developers(92M)的win 32bit版(选择自己适合的版本)解压之后即可使用。

图3.2 Eclipse下载

4.1.3 Android SDK安装

在Android Developers下载android-sdk_r05-windows.zip,下载完成后解压到任意路径。

运行SDK Setup.exe,点击Available Packages。如果没有出现可安装的包,请点击Settings,选中Misc中的"Force https://..."这项,再点击Available Packages 。

选择希望安装的SDK及其文档或者其它包,点击Installation Selected、Accept All、Install Accepted,开始下载安装所选包

在用户变量中新建PATH值为:Android SDK中的tools绝对路径(本机为D:\AndroidDevelop\android-sdk-windows\tools)。

图3.3设置Android SDK的环境变量

“确定”后,重新启动计算机。重启计算机以后,进入cmd命令窗口,检查SDK是不是安装成功。

运行 android –h 如果有类似如图3-4的输出,表明安装成功:

图3.4验证Android SDK是否安装成功

4.1.4 ADT安装

打开 Eclipse IDE,进入菜单中的 "Help" -> "Install New Software"

点击Add...按钮,弹出对话框要求输入Name和Location:Name自己随便取,Location输入http://dl-ssl.google.com/android/eclipse。如图3-5所示:

图3.5 Add Site

确定返回后,在work with后的下拉列表中选择我们刚才添加的ADT,我们会看到下面出有Developer Tools,展开它会有Android DDMS和Android Development Tool,勾选他们。 如图3-6所示:

图3.6选择插件

然后就是按提示一步一步next。

完成之后:

选择Window > Preferences...;在左边的面板选择Android,然后在右侧点击Browse...并选中SDK路径,本机为:D:\AndroidDevelop\android-sdk-windows。

点击Apply、OK。配置完成。

4.1.5 创建AVD

为使Android应用程序可以在模拟器上运行,必须创建AVD。

1、在Eclipse中。选择Windows > Android SDK and AVD Manager

2、点击左侧面板的Virtual Devices,再右侧点击New

3、填入Name,选择Target的API,SD Card大小任意,Skin随便选,Hardware目前保持默认值

4、点击Create AVD即可完成创建AVD

4.2 Eclipse简介

Eclipse 是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括Java开发工具(Java Development Kit,JDK)。

虽然大多数用户很乐于将 Eclipse 当作 Java 集成开发环境(IDE)来使用,但 Eclipse 的目标却不仅限于此。Eclipse 还包括插件开发环境(Plug-in Development Environment,PDE),这个组件主要针对希望扩展 Eclipse 的软件开发人员,因为它允许他们构建与 Eclipse 环境无缝集成的工具。由于 Eclipse 中的每样东西都是插件,对于给 Eclipse 提供插件,以及给用户提供一致和统一的集成开发环境而言,所有工具开发人员都具有同等的发挥场所。

这种平等和一致性并不仅限于 Java 开发工具。尽管 Eclipse 是使用 Java 语言开发的,但它的用途并不限于 Java 语言;例如,支持诸如 C/C++ 和 COBOL 等编程语言的插件已经可用,或预计将会推出。Eclipse 框架还可用来作为与软件开发无关的其他应用程序类型的基础,比如内容管理系统。

基于 Eclipse 的应用程序的一个突出例子是 IBM Rational Software Architect,它构成了 IBM Java 开发工具系列的基础。

第5章 程序设计

5.1系统体系结构

图5.1系统体系结构

5.2 Baidu Maps API 申请及使用

5.2.1申请Baidu Map Key

百度地图Android SDK是一套基于Android1.5及以上版本设备的地图开发工具。可以使用该套 SDK开发适用于Android系统移动设备的地图应用,通过接口,可以轻松访问百度地图服务和数据,构建功能丰富、交互性强的地图应用程序。

该套SDK提供的服务是免费的,接口无使用次数限制。但需先申请密钥(key),才可使用该套SDK。

申请地址为:http://developer.baidu.com/map/android-mobile-apply-key.htm

然后随便输入软件名称,即可得到对应的Key

5.2.2获取坐标和地址

自2.0.0版本开始,获取定位坐标的方法请参考定位SDK中的说明,如下获取定位坐标的方法只针对1.3.5及以前的版本有效。

使用MKLocationManager 类的requestLocationUpdates 注册位置监听事件,在重写的回调函数onLocationChanged中,可获得定位的坐标(详见BMapApiDemoMain例程的MyLocation.java),通过调用MKSearch类的reverseGeocode接口,得到地址。

5.2.3地图自动定位

此部分是针对1.3.5及以前版本的说明,自2.0.0版本以后,定位功能已从Android SDK中分离。

首先在程序中打开相关的权限,然后将MyLocationOverlay实例添加到MapView中,并调用enableMyLocation方法,即可实现当前位置的显示,如果想让地图跟随当前位置移动,需要继承MyLocationOverlay并实现其onLocationChanged方法,调用MapView.getController().animateTo()方法移动地图位置。

5.2.4百度地图地址解析服务Geocoder

地址解析服务在MKSearch类中有两个接口:reverseGeocode、geocode。初始化搜索类MKSearch并注册结构监听对象MKSearchListener:

实现MySearchListener的onGetAddrResult获取得到的地址信息

geocode:根据地址名称获取地址信息:

第6章 系统设计与实现

6.1 欢迎界面的实现

(1) 欢迎界面的设计

SplashActivity类是本系统的欢迎界面。SplashActivity继承自Activity。

本系统的欢迎界面由两张图片组成。一张图片负责显示logo,一张图片负责显示脚注。Xml布局文件整体使用LinearLayout线性布局。

(2)Timer类

使用Timer 类实现定时执行任务的功能,本程序定时3秒钟自动跳转至主页面,主要代码如下:

import java.util.Timer;

import java.util.TimerTask;

import android.app.Activity;

import android.content.Intent;

import android.os.Bundle;

public class SplashActivity extends Activity {

Timer timer = new Timer();

TimerTask task = new TimerTask() {

public void run() {

Intent intent = new Intent(SplashActivity.this, MainTabActivity.class);

startActivity(intent);

finish();

}

};

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.splash);

timer.schedule(task, 3000);

}

}

6.2 主要功能的实现

(1) 换乘查询的实现

换乘查询主要实现的是提供从出发站到目的站的乘车方案。

实现该模块功能有关的类:DbHelper类、SwitchLineActivity类

SwitchLineActivity类的主要变量和函数的介绍:

start_id_search_key:起始线路id

end_id_search_key:结束线路id

start_search_key:起点站

end_search_key:到达站

方法:

selectSwitchLine (String start,String end)是描述搜索过程中的方法,比如说从车站A通过线路L可以到达车站B,如图4-1所示。

  

     

图4-1 SwitchLine结点

(2) 线路查询的实现

线路查询主要实现的是查询该线路经过的所有站点,下图4-2是线路查询的流程图。

图6-2 线路查询流程

当进入线路查询界面时,当按下查询按钮后,通过判断表单中的每一个文本框是否为空,如果为空,使用Toast弹出提示框否则就执行DbHelper类中的selectOneLineByName ()方法,即到数据库中查找该线路经过的站点,然后再判断返回的结果是否为空,为空则弹出提示框。否则将返回的结果通过handleMessage()方法显示的界面上,该方法主要实现的是先为获取显示内容,然后把字符串进行换行处理,再将需要显示的文本放入TextView中,再将TextView放到LinearLayout中,得到每一行列表要显示的内容 。

(3) 站点查询的实现

站点查询主要实现的是查找与该站点相关的线路信息,下图4-3是站点查询的流程图。

图4-3 站点查询流程

当进入站点查询界面时,同线路查询一样,当按下查询按钮后,通过判断表单中的每一个文本框是否为空,如果为空,就弹出提示框。然后再判断是否有该站点的相关信息,如果没有,就弹出提示没有相关的车站信息。若不为空,DbHelper类中的selectOneStopByName()方法是查找出经过该站点的所有线路,然后通过handleMessage()方法将结果显示在界面上。

6.3 截图及运行说明

(1) 运行该程序首先进入的是欢迎界面,效果如图5-1所示。

图6-1 欢迎界面

核心代码:设定三秒钟后自动跳转到下一页面:


(2) 当欢迎界面完毕,进入主界面,如图5-2所示。

图6-2 主页面

核心代码:使用TabHost实现页面切换效果
(3) 进入主界面,单击各个按钮,就进入相应的查询界面,如图5-3、图5-4和图5-5所示。

图6-3 换乘查询界面

图6-4 线路查询界面

图6-5 站点查询界面


(4) 在换乘查询界面上,输入出发站和目的站,如果输入的两个站名不为空且存在经过这两个站点的线路,将其查询结果显示在界面,如图5-6所示。

图6-6 换乘查询结果界面

核心代码:主要sql语句
(5) 在线路查询界面上,输入要查询的线路名称,单击查询按钮,如果有此线路,将其结果显示在界面上,如图5-7。

图6-7 线路查询结果界面

核心代码:主要sql语句


(6) 在站点查询界面上,输入要查询的站点名称,单击查询按钮,如果该站点存在,就先显示经过该站点的线路,如图5-8。

图6-8 站点查询结果界面

核心代码:主要sql语句

(7) 当进入线路地图查询界面时,显示用户选择的线路,并将该线路的首站显示在地图的中心位置,如图5-9。

图6-9 线路地图查询界面

核心类:


(8) 当进入站点查询界面时,也是显示用户选择的线路,但是将用户查询的站点显示在地图的中心位置,如图5-10。

图6-10 站点地图查询界面

6.4 软件可以改进之处

软件还可以进行一系列改进和优化,主要有以下几方面:

1、换乘的算法比较简单,没有进行最短路径的优化。

2、可以增加导航的功能,让用户可以根据导航找到所要去的车站。

第7章 系统测试

7.1手动测试方案

该部分主要以测试系统的功能为主,由测试小组分功能模块进行手动测试,保证系统符合需求规格中的功能,所有业务流程处理按照系统详细设计方案完成,所有处理正确。

功能举例

  1. 手机城市定位;
  2. 地图精准度定位;
  3. 其他功能模块;

7.2工具测试方案

该部分测试主要以方便编写测试脚本的单元测试和无需编写测试脚本的系统测试为主,不承担测试系统功能的任务。

7.2.1单元测试

测试步骤

  • 编写测试脚本:使用工具进行单元测试之前要编写测试脚本,测试脚本是测试工具进行自动化测试的执行代码,单元测试要以一个功能函数为单位进行用例的测试。
  • 建立测试:将所有测试脚本按照单元特性组织成测试组件,对测试组件进行统一的测试,减少测试执行次数并方便统计测试结果。

测试方案

  • 扩展TestCase类,编写测试脚本
  • 运行测试
  • 测试分析

7.2.2 系统测试

测试方案

采用脚本和人工方式进行测试,实际使用模拟方式测试。

7.3测试用例

对所有的模块进行黑盒测试,采用等价类划分的方法设计测试用例,按照设计尽可能少的测试用例涵盖所有有效等价类,设计尽可能多的测试用例涵盖无效等价类的原则进行测试用例设计。

Case类型编号:

正常测试:0

边界测试:1

极值测试:2

异常测试:3

性能/压力测试:4

接口测试:5

对数据访问对象进行白盒测试,采用路径覆盖的方法设计测试用例,测试用例覆盖数据访问的对象的全部功能路径。

7.4辅助测试工具

软件工具

主要功能

Eclipse

开发工具

SVN

版本控制

Micorsoft Project

项目管理

Junit

单元测试

自制

接口测试

DDMS

调试、监控、模拟

Traceview

性能监控

Monkey

压力测试

Monkeyrunner

黑盒测试

android-cts-manual

兼容性测试

结论

本次毕业设计是结合本地公交线路系统开发的一款手机查询工具。

历经几个月的毕业设计,我的收获还是很大的。从资料查找到课题的设计分析、数据库的设计、界面的设计、然后进行代码编写、程序调试等,整个开发过程都是一边摸索一边实践出来的。为了毕业设计,我阅读了不少的资料,付出了不少的心血,有些是对毕设有帮助的,有些只能作为知识来积累,我深有体会的是要完成一个完善的系统是相当不容易,要考虑周全也是相当困难的。

在这一步一步地学习摸索的过程中,我感到开心的就是能够将所学到的知识应用到设计中,使自己的设计能更加完善些。由于能力的限制,最终的系统还是没有那么令人满意,还是存在一些不足之处。希望在日后有机会对其继续改进。比如实现导航功能,换乘查询的算法能够更加完善等。

由于时间和个人能力有限,本文对Android的理解和分析还不够深入,系统功能也有待完善。

参考文献

[1]   李明峰,冯宝红,刘三枝. GPS定位技术及其应用.国防工业出版社,2006

[2]   熊志昂,李红瑞,赖顺香. GPS技术与上程应用.国防工业出版社,2005

[3]   田丁.基于ARM9手持GPS定位系统的研究与实现[D].武汉:武汉理工大学, 2008

[4]   孔祥元,郭际明,刘宗泉.大地测量学基础.武汉大学出版社,2006

[5]   中国人民解放军总装备部军事训练教材编辑丁作委员会.GPS技术与应用.国防工业出版社,2004

[6]   http://code.google.corn/android/

[7]   王解先,俞振武.高斯投影引起的面积计算误差[D]测绘通报,2003

[8]   http:// code.google.corn/android/what.is.android.html

[9]   何伟,杨宗德,张兵等.基于Symbian OS的手机开发与应用.人民邮电出版社

[10]  ItEye http://oxen.javaeye.com/

[11]  Wien.Global Positioning System theory and practice.NewYork:SPringer-Verlag,2001

[12]  李大文.GPS原理及应用.科学出版社,2003

[13]  Willard Marqnis.M is for modernization.GPS World,September 2001

[14]  Michael Juntao Yuan.梁超译.Enterprise J2ME Developing Mobile Java App移动应用程序开发.清华大学出版社,2004

[15]  甘树满.基于Eclipse的开源框架技术与实践.电子1:业出版社,2007

[16]  国家测绘局,地籍测量规范一匕京.测绘出版社,1988

[17]  Eric Clayberg Dan Rubel.周良忠译.Eclipse Building Commercial—Quality插件开发.人民邮电出版社,2006

[18]  Joe Walnes.甄山译Java Open Source Programming.Java开放源码编程.2005

[19]  林信良.Java学习笔记.清华大学出版社.2007

[20]  赵炯.Linux内核完全注释机械工业出版社.2004 

[21]  Robert J.Sweet.GPS for Mariners.McGraw—Hill Professional,2003

[22]  彭永麟.城镇地籍测量的可行性研究.福州大学学报,1998

[23]  冯宝红,郑小元等.GPS.PDA在_十地变更调查中的应用研究.测控技术,2003

[24]  Microsoft Corporation.Introducing Microsoft Windows CE 3.0.Microsoft Corporation,2001

[25]  嵌入式实时多任务操作系统[M].成都:电子科技大学,1999

[26]  Jan Van Siekle,GPS for Land Surveyors,CRC Press,2001

[27]  Android的安装 http://www.cnblogs.com/haix/archive/2007/11/14/959400

[28]  http://www.1etsandroid.cn/SDKm5rcl4/docs/documentation.html

[29]  Google开发人员访谈Android平台 http://www.builder.com.cn/2007/111

[30]  Alfred Leiek.GPS Satellite Surveying,John Wiley and Sons,2004

[31]  吴信才.地理信息系统的基本技术与发展动态[J].地球科学.1998

[32]  靳岩,姚尚朗. Android开发入门与实战. 人民邮电出版社. 2009

[33]  余志龙,郑名杰等. Android开发范例大全. 人民邮电出版社. 2009

.

致谢

历时将近两个月的时间终于将这篇论文写完,在论文的写作过程中遇到了无数的困难和障碍,都在同学和老师的帮助下度过了。尤其要强烈感谢我的论文指导老师,对我进行了无私的指导和帮助,不厌其烦的帮助进行论文的修改和改进。另外,在校图书馆查找资料的时候,图书馆的老师也给我提供了很多方面的支持与帮助。在此向帮助和指导过我的各位老师表示最中心的感谢!

感谢这篇论文所涉及到的各位学者。本文引用了数位学者的研究文献,如果没有各位学者的研究成果的帮助和启发,我将很难完成本篇论文的写作。

感谢我的同学和朋友,在我写论文的过程中给予我了很多你问素材,还在论文的撰写和排版灯过程中提供热情的帮助。

由于我的学术水平有限,所写论文难免有不足之处,恳请各位老师和学友批评和指正!

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

等天晴i

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值