《基于百度地图的导航设计-v1.0.pdf》由会员分享,可在线阅读,更多相关《基于百度地图的导航设计-v1.0.pdf(32页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、摘要摘要计算机网络通信技术和 Internet 的飞速发展,基于因特网的手机移动应用已经开始成为一种全新的功能需求,并且越来越受到人们的关注。由于移动应用具有简单性,随时随地性等诸多特点,因此它有着传统计算机所无法比拟的优点。这样一来,手机移动应用的开发工作就显得尤为重要,开发出一个导航软件就更有必要了。本文依据设计实现出的以 SQLite 数据库为例的导航,做了全面系统的介绍。全文共五章,按照前期的开发顺序,从系统分析与研究开始,逐一对开发过程做了全面的介绍。关键字:关键字:移动;安卓;导航;百度地图AbstractAbstractThe rapid development of compu
2、ter network communication technology andInternet,mobile application based on Internet has started to become a new functionalrequirements,and more and more get the attention of people.Because the mobileapplications has simplicity,sex anytime and anywhere,and many other features,so ithas the advantage
3、s of traditional computer.As a result,the development of the mobileapplication is particularly important,develop a navigation software is more necessary.In this paper,according to the design to realize the navigation in SQLite database,forexample,do a comprehensive system is introduced.Full text alt
4、ogether five chapters,according to the prophase development order,starting from the system analysis andresearch,one by one,made a comprehensive introduction of the development processKeywordKeyword:Mobile;Android;Navigation;Baidu map目录1 绪论.51.1 国内外开发背景.51.2 项目开发目的和意义.61.3 论文的组织形式.81.4 本章小结.82 开发环境介绍
5、.92.1 Android系统的架构.92.1.2 应用程序框架.92.1.3 系统运行库.102.1.4 Linux 内核.112.2 安全权限机制.112.3 Android平台的搭建.112.3.1 JDK 的安装.112.3.2 Eclipse 安装.122.3.3 Android SDK的安装.122.3.4 ADT的安装.122.3.5 创建 AVD.132.4 JAVA 简介.143 需求分析.163.1 自驾游导航的可行性分析.163.1.1 软件开发的可行性.163.1.2 社会因素和市场因素可行性.173.2 需求描述.183.3 主要功能分析.183.4 本章小结.194
6、 系统设计与实现.204.1 系统概述设计.204.2 系统详细设计.204.1.1 普通地图模块.214.1.2 交通地图模块.214.1.3 卫星地图模块.224.1.4 查询模块.224.1.5 经纬度转地址模块.234.3 架构代码的实现.235 系统的测试.275.1 测试方案设计.275.1.1 测试策略.275.1.2 测试安排.275.1.3 测试资源.275.2 测试用例构建.285.2.1 测试用例编写约定.285.2.2 测试用例设计.285.2.3 测试分析.28结束语.30致谢.311 1 绪论绪论随着人们生活水平的提高,各种社会上的压力也在不断地增加,因此闲暇时光自
7、驾车旅游就成为人们放松自己和缓解压力的好方式,可往往出行之前没有好的计划使自己在出行的过程中常常浪费很多时间,所以开发一款关于自驾游导航的软件便迫在眉睫,使之在自驾游旅行的过程中不但享受美景、陶冶情操。更能方便快捷使之充分的更好的享受工作之余的闲暇时光。1.11.1 国内外开发背景国内外开发背景当前全球智能手机市场正在以惊人的速度发展,中国无疑已经成为了最大的市场,与此同时,中国企业也开始在国际舞台“大展身手”。中国智能手机市场正在经历“你死我活”的激烈竞争,格局已经悄然生变,大牌纷纷推陈出新抢占市场,跨界企业摇摇欲试准备进军智能手机市场,业内认为,智能手机市场将迎来一个黄金发展期。功能描述市
8、场增长率 2012 年,中国智能手机销售量为1.89 亿部,同比增长137%。中国智能手机近两年增长速度快。进入壁垒较高中国智能手机目前市场主流品牌已经基本形成,新的市场进入者要打破现有的竞争格局有一定难度。当前,全球智能手机市场正在以惊人的速度发展。国际市场调研机构eMarketer 公布的最新数据显示,到 2016 年全球使用智能手机的人数将超过 20亿人,占世界人口四分之一以上,发展中国家的使用率快速提升是主要的驱动力。到 2018 年,智能手机使用人数有望进一步提高到超过25.6 亿人,约占世界人口的三分之一,到时候,智能手机的使用人数将正式超过功能机。由此来看,全球智能手机市场潜力巨
9、大,eMarketer 数据显示,2014 年智能手机用户人数最多的前三个国家分别是中国,用户人数 5.197 亿;美国,1.653亿;印度 1.233 亿。据估计,2018 年,中国的智能手机用户人数仍将统领全球,达到 7.041 亿,印度将升至第二,用户人数 2.792 亿,美国第三,用户人数约 2.20亿。截至 2014 年 6 月,我国网民上网设备中,手机使用率达 83.4%,首次超越传统 PC 整体使用率(80.9%),手机作为第一大上网终端设备的地位更加巩固。同时网民在手机电子商务类、休闲娱乐类、信息获取类、交通沟流类等应用的使用率都在快速增长,移动互联网带动整体互联网各类应用发展
10、。1.21.2 项目开发目的和意义项目开发目的和意义当今的移动应用端的系统很多。主要的操作平台有:android(androidOS)、Android、Nokia Symbian、BlackBerry、Java ME、Windows Phone、Flash/Flash Lite、mobile web(WAP/XHTML/CSS/Javascript).Android 以其开放性,多任务,大功能,画面流畅,硬件设备优良多样等各种优点,占国内智能机一大部分;然而它也存在着很明显的不足,如:兼容性差,各种机型的配置不一样,以至于开发的时候出现各种版本。其次在应用运行过程中并不是十分的稳定,和 and
11、roid 相比,安卓的不少设计都显得不够直观,造成了操作困难的问题;菜单键可用性不可见、按钮手势太过隐蔽、安全问题依然突出、维护成本偏高等问题使其用户体验很差。Symbian 主要基于 C 语言的应用开发,支持多线程运行模式,但是开发代码量过大给开发人员造成很大的不便,另外塞班版本之间兼容性差使之逐步退出移动设备应用操作平台。还有新逐步发展起来的 Windows Phone 铃声和媒体音量不能分开调节、来电振动只在铃声开始时、删除首账户必须重置手机、多任务管理不完善、NFC 文件传输形同虚设。1.Android market 的支付模式成熟。不仅仅是商业模式的创新,更重要的是无法模仿,经过长时
12、间的运营,Android market 已经形成完备的支付模式,被大部分用户接受。2.android 是用 Objective-C 开发。从全球的编程语言排行榜来看,虽然,Objective-C 只有苹果公司一家使用,但是已经排名第 4,可见 android 开发的普及性和受欢迎程度,另外,基于 C 语言,运行效率更高。3.苹果 android 以及所有苹果的硬件软件策略和控制让苹果在用户体验和控制产品质量方面占尽先机,大部分 android 用户能够同时对他们手中的设备进行更新,这会吸引更多用户。4.android 在中国极受欢迎。中国的各大移动运营商都积极地与苹果公司合作,各自推出适合中国
13、人使用的手机套餐和应用,比如中国联通,中国电信等等,社会各界也对 android 有很好的评价。android 在各国开发者中有很好的学习氛围,如 facebook 的 three 20 android开源代码库,都是良好的学习资源。智能手机的稳定快速发展,带动APP移动应用行业的迅速崛起,苹果Androidmarket 应用总数达 65 万。就目前而已,我们可以看到整个App市场大体的分类已经形成并趋向稳定,App 的确一派热火朝天的发展之势,但除了游戏和广告之外,众多 App 都还没有找到合适的盈利模式。很多手机游戏年收入都高达千万上亿,“钱”景动人。而其他类型的 App 应用,从去年来数
14、量暴增,同质化严重,抄袭成风,几十万款App 中,只能有几百个可以生存。这显然无法吸引风投再为之疯狂。而且即便是手机游戏 App,到如今已经有了极高的门槛,首先要付出相当多的精力去开发有创新的精品游戏,其次要有好的平台投放以及运营能力。随着人们的生活水平的提高,旅游出行已经在越来越多人的年中计划里。据相关数据统计,2014 年国民旅游意愿强烈,有超过 99%的人计划出游,51%的人选择出游 3 次或以上;95%的消费者会增加旅游预算或保持不变,1/3 的人出游计划支出在 1 万元以上。另外,根据最新发布的2014-2015 年中国旅游发展分析与预测显示,2014 年,在全球经济不景气的大背景下
15、,旅游业成为推动社会经济增长的领跑者。如今的旅游类 APP 各有侧重:有些是平台类的,即通过一个 App 聚集了多个 App 产品;有些是特定功能类的,如查询信息,办理票务、旅游攻略等。但不管侧重如何,旅游出行类 APP 已经成为用户装机的必备应用,旅游 App 拼的不是谁的更快,更全面,谁的技术更领先,旅游的核心是服务和体验,就算你的功能再强没有体验,也终将被淘汰。携程、去哪儿、同程、艺龙、途牛这几家国内在线旅游的老牌公司大家都耳熟能详,在移动互联网爆发之际相继向移动客户端发力,是目前较为有影响力的旅游 APP 客户端。虽然同为旅游公司,但她们之间的侧重还是有所不同,其中携程核心业务是机票、
16、酒店、度假三大产品,强项在商旅市场;去哪儿则是在线旅游产品的搜索、比价服务,现今已经开始开拓酒店资源;途牛则是跟团游市场的领先者,出境游占据绝对优势;艺龙的酒店服务是最大优势;全国连锁式的休闲旅游服务则是同程的最大优势。如今是一个信息爆炸的时代,能在最短的时间内获得更多的信息资源是大众用户的刚性需求,移动旅游也不例外,并且对这些需求更加旺盛。对于普通用户来说,一款好用的旅行 APP 第一要素就是能够拥有更多的产品提供选择,用户可以在一个 APP 内就找到自己所有的需求,这也就我们常说的厂商向用户推出的“一站式”服务。本文阐述了利用 android 平台设计的自驾游导航,来满足用户对娱乐游戏的使
17、用需求,给用户带来游戏上的享受,更好的释放压力缓解心情。1.31.3 论文的组织形式论文的组织形式本文分为五章:第一章是引言部分,主要是对与该系统相关的国内外研究现状以及研究的背景进行分析从而得到本系统开发的意义与价值所在;第二章是对于该系统相关的技术的简介,使用户对相关技术所有了解,对本系统所有了解;第三章主要是对该系统进行需求分析,在方便用户理解其功能的同时有助于开发者对系统的设计与实现;第四章是系统的实现问题,利用实现的界面图和重要的功能代码来展示本系统功能实现的效果以及实现的代码。第五章是系统测试,测试表明本系统稳定符合设计要求。1.41.4 本章小结本章小结本章主要描述了有关该系统的
18、国内外研究现状以及研究的背景和意义还有本论文的组织形式。通过对其国内外现状的的研究以及研究的背景和意义能够让研究人员以及用户更好的了解该系统目前的发展现状,对于本课题的开发的方向与本课题的开发意义有所了解,使研究者更有信心、有方向的去开发,使用户更容易接受本系统,发现其优点,更加积极主动的去使用。2 2 开发环境介绍开发环境介绍本系统的主要开发环境是基于 Android 平台,接下来将介绍 Android 的系统的主要组成部分和 Android 环境的搭建。2.1 Android2.1 Android系统的架构系统的架构Android 的系统架构和其操作系统一样,采用了分层的架构。如图 2-1
19、 所示,Android 分为四个层,从高层到低层分别是应用程序层、应用程序框架层、系统运行库层和 linux 核心库层。2.1.1 应用程序Android 会同一系列核心应用程序包一起发布,该应用程序所有的功能模块都是使用 java 语言编写的。2.1.22.1.2 应用程序框架应用程序框架核心应用程序所使用的是 API 框架,开发人员是可以访问的。该架构的设计能够简化组件的重用;并且每一个应用程序都可以发布它自己的功能块,同样其他的应用程序都可以使用该程序发布的功能块。同样,用户也能使用应用程序的重用机制来替换其他程序组件6。应用后面的是一系列的系统和服务,其中包括:(1)内容提供商:使该应
20、用程序可以共享它们自己的数据或者访问另一个其他应用程序的数据.Android 的系统架构也同样采用了分层的架构。Android 的构架分为四层,从高到低层分别是:应用程序层、应用程序框架层、系统运行库层和 Linux 核心层7。(2)丰富而又可扩展的视图:可以构建应用程序,它包括网格、列表、按钮、文本框甚至是可嵌入的 web 浏览器。(3)资源管理器:能提供非代码资源的访问,如,图形、本地字符串和布局文件。(4)通知管理器:使得应用程序能显示自定义的提示信息于状态栏中。(5)活动管理器:用来提供常用的导航回退功能并管理应用程序的生命周期8。如图 2-1 所示:图 2-1Android 系统架构
21、图2.1.32.1.3 系统运行库系统运行库(1)程序库Android 包含一些库,Android 系统不同的组件都能够使用这些 C/C+库。开发者的服务是通过 Android 应用程序框架来为提供的,下面是一些核心库:系统 C 库:它是一个专门为基于 embedded linux 的设备而定制的,从 BSD继承来的标准 C 系统函数库。媒体库:是基于 PacketVideo OpenCORE 的库;该库能支持多种比较常用的视频格式、音频格式的录制和回放,同时也能够支持静态图像文件。其中编码格式包括 MP3、MPEG4、AMR、AAC、H.264、PNG、JPG。Surface Manager
22、:,能为多个应用程序提供 2D 和 3D 图层的无缝融合,并且对显示子系统的管理LibWebCore:是一个最新的 web 浏览器引擎用,它能够支持一个可嵌入的web 视图和 Android 浏览器3D libraries:;该库可以使用高度优化的 3D 软加速或者使用硬件 3D 加速,是基于 OpenGLES1.0 APIs 实现的。FreeType:矢量和位图的字体显示。SQLite:是一个功能强劲且任意应用程序都可用的轻型关系型数据库引擎。SGL:是底层的 2D 图形引擎。(2)Android运行库Android 的核心库包括一个提供大多数功能的的 JAVA 编程语言核心库。所有Andr
23、oid应用程序都拥有一个独立的Dalvik虚拟机实例并且都运行在它自己的进程中。Dalvik 是一个可以同时高效地运行多个的虚拟系统。其执行的是Dalvik 可执行文件(.dex)。由于虚拟机是基于寄存器的,所以所有由虚拟机来执行的类都需经由 JAVA 编译器编译好,然后再通过 SDK 中的“dx”工具转化成.dex 格式10。Dalvik 虚拟机主要依赖于 linux 内核的一些底层内存管理机制和线程机制的功能。2.1.4 Linux2.1.4 Linux 内核内核Linux2.6 内核是 Android 的核心系统服务所依赖的,其中如安全性,内存管理,进程管理,网络协议栈和驱动模型。同时L
24、inux 内核也作为软件和硬件栈之间的抽象层12。2.22.2 安全权限机制安全权限机制在 Android 系统中,应用都以唯一的一个系统识别身份(Linux 用户 ID 与群组 ID)来运行,这个操作系统的权限是分立的。系统将应用与应用,应用与系统隔离开是 Linux 的作用,是通过每个部分分别通过使用各自独立的识别方式来实现的。系统的安全功能是通过权限机制来提供的。权限可以限制某个特定进程的特定操作,同时也可以限制每个 URI 权限对特定数据段的访问。2.3 Android2.3 Android平台的搭建平台的搭建2.3.1 JDK2.3.1 JDK 的安装的安装双击 JDK 安装包,按照
25、安装提示一步一步走。然后配置环境变量,安装完成之后,可以在检查 JDK 是否安装成功。打开 cmd 窗口,输入 java-version 查看JDK 的版本信息。出现如图 2-2 的信息表示安装成功了。图 2-2 验证 JDK 安装是否成功2.3.2 Eclipse2.3.2 Eclipse 安装安装EclipseIDEforJavaDevelopers(EclipseHelandroid3.6)。http:/www.eclipse.org/downloads 下载完之后,直接解压安装即可(例如的安装路径 C:Program Fileseclipse_java)。2.3.3 Android S
26、DK2.3.3 Android SDK的安装的安装(1)从Android Developers下载Android-sdk_r05-windows.zip,在下载完成后,解压到任意路径。(2)运行 SDK Setup.exe,点击 Available Packages。若没有出现可以安装的包,需要点击 Settings,然后选中 Misc 中的“Force http:/.”这项,再点击 AvailablePackages 即可。(3)选择所希望安装的SDK 及其文档或者其它包,然后点击InstallationSelected、Accept All、Install Accepted,开始下载安装所
27、选的包。(4)在用户变量中新建 PATH 值为 Android SDK 中的 tools 绝对路径13。2.3.4 ADT2.3.4 ADT的安装的安装(1)打开 Eclipse IDE,进入菜单中的“Help”里的“Install New Software”点击 Add.按钮,弹出要求输入 Name 和 Location 的对话框,在 Location输入 http:/dl- 2-3 所示:图 2-3 ADT 的安装(2)点击 OK 后,展开 Developer Tools 将显示 Android DDMS 和 AndroidDevelopment Tool 两个选项,勾选它们,然后按照提示
28、继续下一步。(3)完成之后,选择 WindowPreferences.,在选择面板左边的 Android,然后在右侧点击 Browse.并选中 SDK 路径 E:Android-sdk-windows,然后点击Apply、OK,配置完成。(4)ADT 离线安装法第一步:把 ADT-xx.zip 解压到 ADT,之后进入 ADT 目录,删除 web 目录、site.xml 和 index.html,再然后将 ADT 文件夹 copy 到 Myeclipse 8.6/dropins 目录下,重启 Myeclipse 8.6 即可。第二步:你下的 ADT 应该有两个文件夹,plugins 和 fea
29、tures,在你的 Eclipse中找到这两个文件夹,把 ADT0 中的 plugins 和 features 分别复制到 Eclipse 的plugins 和 features 文件夹中。2.3.52.3.5 创建创建 A AVDVD(1)在 Eclipse 中,选择 WindowsAndroid SDK and AVD Manager,点击左侧面板的 Virtual Devices,再右侧点击 New,填入名字 ff、Target 选择 Android2.2-API Level8、SD Card 512MiB,选用 HVGA Skin,其余默认设置。(2)点击 Create AVD 即可完
30、成创建 AVD。运行新建的模拟器,在列表中选中要运行的模拟器,然后单击“start.”;再单击“launch”。当运行成功后出现如图 2-4 所示界面:图 2-4模拟器2.4 JA2.4 JAV VA A 简介简介Java 是一种编程语言的网络,其基本结构非常类似于 C+,但它是简单的。它结合了一些功能和其他语言的优点,又避免了它们的缺点。Java 语言是简单的,废旧很少在 C+中使用,它是复杂的,混乱的特点,不需使用指针,并提供了自动垃圾回收,因此程序员不需要担心存储器管理12;Java 语言是体系结构中立的,因为它使用的第一个聚合成中间代码(字节码),然后加载奇偶校验,然后解释给其他的机器
31、代码来执行,只要由 Java 虚拟机的支持,可以运行各种Java 程序的;Java 语言定义,在 Java 平台的 Java 程序将被合并成字节码格式,然后就可以实现运行 Java 平台的任何系统,在运行时,Java 平台的 Java 解释器,他们被授权传达字节码执行,类的性能,你需要加载运行环境的结合部;Java 语言是多线程的,多线程指的是相同的应用程序中,有多个数据流同时来执行顺序较内部的多线程程序可以统称为执行多个线程一次。可以更好地表达多线程程序和解决现实生活中的问题,是计算机应用与工艺设计发展的必然趋势。系统为什么不选择 C 或 C+语言和 Java 的主要原因,选择 Androi
32、d 的应用层是通用的中级 Java 字节码,它不需要各种硬件模型的每个厂家封装的等效版本。为了避免游戏版本,诺基亚,联想版的情况下 moto 的版本。一次编写,到处运行。其次,在竞争中 Java 和.NET 平台是应用程序本身最适合的一个平台,有一个庞大的开发基地,节省大量的再教育14重新学习的成本。JAVA 实现数据交换停止使用的 I/O(输入/输出,输入和输出)流,该流是指在所谓的能够输出的任何数据源或数据对象是能够接收数据的数据源对象。用于操作 Java 流对象内置的 Java IO 包,其包含一系列的文件和目录来运行读取文件并写入类15的操作的属性。DOM(文档对象模型,所述文档对象模
33、型)可以是一种语言的与平台无关的方式来访问和修改文档的内容和结构。加工该XML 文档或 HTML(超文本标记语言,HTML)(可扩展标记语言,可扩展标记语言)的一种常见的方法。您可以使用的设计是基于对象管理组织和DOM在任何编程语言的法规。让您DOM技术用户能够动态地更改页面,您可以动态显示或隐藏元素,改变它们的属性,DOM 的技术正在使大大提高了互动网站。在工作状态下,对于任何一类的 Java 反射,了解所有的属性和这个类的方法;为别的,你可以以任何方式调用;的方式来动态地捕捉动态调用对象的信息,并调用函数反映了 Java 语言的机制。Java 反射机制主要提供以下功能:识别属于任何一类在运
34、行时的对象;在运行时,任何类对象的构造;统治阶级的成员变量和在运行时的方法;使用任何运行对象时程序;生成动态代理17。3 3 需求分析需求分析根据第一章所定义的课题研究方向及目标,本章将对系统功能进行具体的需求分析,具体分析基于百度地图导航所要实现的功能以及欲达到的效果。需求(Requirement)是待开发系统的特征。需求分析(Requirements Analysis)就是开发人员着手分析软件系统用来解决手头问题所需要的软件特征。需求分析由一系列活动构成,包括许多需要解决方案的问题的研究和确定系统解决方案必须具有的行为。软件需求分析阶段的工作和任务是在对问题进行调查了解的基础上,用一定的方
35、法和手段对问题进行分析建模。需求分析的结果应该反映的是必须干什么,而不是怎么干。它的主要用途是明确需求,为用户和开发人员提供一起协商讨论的依据并作为设计和实现的目标.3.13.1 自驾游导航的可行性分析自驾游导航的可行性分析3.1.13.1.1 软件开发的可行性软件开发的可行性伴随着时代的进步,生活水平提升。人们在工作之余的空闲的时候就会去旅游,并且随着人们的生活水平的提高,伴随着私家车的增多,更多的人选择出去户外自驾游。但是当下很多人出去自驾游并不是很方便,需要准备地图、导航、以及相应的旅游宝典、并且到当地并不是很熟悉,常常浪费时间和金钱并且有时旅游并不是很愉快。并且伴着智能手机的普及越来越
36、多的人选择了 android 手机或者 android 系统应用的产品。目前在 Android market 有很多应用,而且目前来说国内对于 android 开发有了很大热情,但是对于自驾游导航软件并不是很多,且其开发的空间很大,市场空间很大,这就需要开发者的不懈努力,才能满足人们对当下自助游的需求作为基于 android 平台的自驾游导航系统方面的应用,主要是面向人群是在工作,学习之余独自外旅游的人们,这款应用可以帮助独自户外旅游的人们提供必要的地图展示以及 GPS 定位导航服务,避免道路不熟引起的迷路等不必要的麻烦,提供当地的旅游景点以及名胜古迹,让自己在独自旅游中避免在目的地不知如何更
37、好的玩耍,并且更好的来完成,目前有相应的软件主要有:(1)高德地图:此软件是一款专注与大众地图的移动应用,提供精准的地图展示,并且精准导航服务,里面也包含了很多的地域的酒店商场银行公交等基础服务设施的位置,也包含周围的景点以及名胜古迹的位置,并且对于当地的特色的景点有了部分的介绍,致力于更好的地图导航(2)百度地图:此软件是百度公司提供的地图服务的应用,随时定位你的位置,展示你周围的地址。为了更快的展现出地图,你可以在 WiFi 环境下,先浏览目标附近的地图百度地图不仅能有优质的地图功能,还能获取最新团购,美食,酒店,休闲娱乐,交通设施,生活服务等等附近你可能用到的几乎一切信息。以上软件虽然都
38、可以实现地图的展示,并且定位相应的位置,但是作为独自旅游的人们来说设计自己旅游线路的的自驾游宝典的功能比较欠缺,基于此开发了基于 android 平台的自驾游导航系统,本系统就是提供相应的导航以及相应的景点,当地美食等服务。在智能手机逐步普及的当下,以及在未来追求独自,追求个性,追求自由的形势下,将会进入大众的视野里,让人们在工作之余的独自旅行有了方便的工具,使自己不会因为旅行中那些不必要的麻烦影响自己心情。3.1.23.1.2 社会因素和市场因素可行性社会因素和市场因素可行性如今社会发展迅速,每个人都不再满足于功能单一的自驾游导航,越来越多地倾向于娱乐性能完备的音乐播放系统。用户对在听音乐的
39、同时还可以玩小游戏来更加的享受。按照目前市场情形,越来越多的移动开发者涌进 android 开发领域。android平台上应用软件,Android market 的支付模式更为成熟而且有监管,另外 android的兼容性问题小,开发人员不用考虑太多的配置兼容问题,美观大方的外形,更是吸引了大量的用户。而且其良好的用户体验,都为 android 的发展奠定了良好的基础。本软件是基于 android 平台开发的一款自驾游导航系统,将要应用在 android移动通讯设备上,能够尽可能的满足用户更方便更快捷的娱乐需求,对于一个导航系统,首先能够显示地图并且对相应的路线搜索,并且可以搜索周围环境,如美食
40、,景点住宿环境等。3.23.2 需求描述需求描述通过对用户需求进行分析,本系统软件主要的功能分为以下几个方面.1.软件导航功能.在软件中,在启动的过程中定位当前位置,并且点击地图生成目的地的位置,使其在地图中显示出相应的线路,并给予线路的行走路线。这样有利于用户在驾车时所去的地方不会过于盲目,使大部分的时间都浪费在了路程上面,有了更好的玩的心情。2.景点查询功能.用户到了当地,可以查询当地的旅游景点,并且在旅游景点介绍其相应的了游览价值和游览地域,让用户旅游过程中更好的游览,不至于到了陌生的地方盲目起来不知去哪里游玩。其次本软件不涉及用户登录界面,这样用户在浏览里面的内容以及对里面的操作有了更
41、多的权限,并不需要第三方的干预,以及盗取信息的危害。3.33.3 主要功能分析主要功能分析作为当前的系统,主要的功能是实现用户当前位置的定位以及在以后位置的定位以方便作为软件的开发来说实现相应的位置,然后显示运行线路.并且在运行线路中展示相应的行走线路,更好地实现线路的内容。作为导航,首先进行的是定位,定位的话,首先调用相应的库,并且在相应的 android 库中找到对应的参数,调用协议,遵循其内部的方法,实现内容,并且在内容中可以更好的调用对应的参数,主要是得到了地位坐标,并且在地位坐标中显示当前的地理位置。然后在地图中找到你所需要到达的位置,进行定位,获取相应的地理位置坐标经纬度。然后在相
42、应的经纬度中找到相应的路径。并将路径展现在地图上,调用系统地图来实现相应的导航信息,更好的实现导航中的内容。在实现景点的内容,首先从网络中获取相应的数据,并以MVC 的设计模式进行读取,然后再进行对内容本地化数据保存,然后在保存的过程中查看数据的格式,以相应的形式保存到数据库中。然后得到相应的搜索内容可以得到对应的数据链条,将所需要的数据链条展现出来。其次在实现日记本的功能中,首先需要打开相应的数据库,然后再在数据库中提取相应的数据,然后以列表的形式展开。然后点击相应的内容进行查看,若要添加新的日志内容,需要添加相应的模板控件,并且在相应的空间中填写内容,填写完成之后进行保存,然后再让数据进行
43、保存到数据库中的数据列表中。3.43.4 本章小结本章小结本章主要是对该系统进行了需求分析,主要包括了对该系统的可行性分析、需求描述、面向对象分析、主要功能分析和数据字典的描述等,通过对系统的需求进行分析,百度需求分析作用。需求分析的任务是通过详细调查现实世界要处理的对象,充分了解原系统工作概况,明确用户的各种需求然后在此基础上确定新系统的功能。确定对系统的综合要求,虽然功能需求是对软件系统的一项基本需求,但却并不是唯一的需求,通常对软件系统有下述几方面的综合要求。4 4 系统设计与实现系统设计与实现4.14.1 系统概述设计系统概述设计概要设计的主要任务是把需求分析得到的数据流程图转换为软件
44、结构和数据结构。设计软件结构的具体任务是:将一个复杂系统按功能进行模块划分、建立模块的层次结构以及调用关系、确定模块间的接口以及人机界面等。数据结构设计包括数据特征的描述、确定数据的结构特性、以及数据库的设计。显然,总体设计建立的是目标系统的逻辑模型。(1)导航功能。在系统中,首先定位当前的地理位置坐标,然后在地图中显示当前自己所在的地理位置,其次是在地图中选定已经确定好的位置,并且在确定好的位置上获取相应的地理位置坐标以及相应的经纬度坐标,然后在相应的经纬度坐标中呈现相应的行走路线,并且指明路线行走的方向。(2)美景模块:通过相应的模块在内容中添加地区列表,并在地区列表后点击,显示在列表中显
45、示景点列表,并在景点列表中显示详细的景点介绍,并且提供相应的服务指南。根据如上所述所得到的功能模块图如下:基于安卓平台的自驾游导航系统普通图交通图卫星图画覆盖物查询经纬度转地址图 1E_R 图4.24.2 系统详细设计系统详细设计详细设计的主要是设计每个模块的实现算法、所需的局部数据结构,其主要目标是实现模块功能的算法要逻辑上正确和算法描述要简明易懂。对该系统进行详细设计,是要在概要设计的基础上进一步明确系统结构,详细的介绍系统的各个模块,为进行后面的时限和测试做准备。为每个模块进行详细的算法设计。用某种图形、表格、语言等工具将每个模块处理过程的详细算法描述出来。为模块内的数据结构进行设计。对
46、于需求分析、概要设计确定的概念性的数据类型进行确切的定义。详细设计是软件工程中软件开发的一个步骤,就是对概要设计的一个细化,就是详细设计每个模块实现算法,所需的局部结构。4.1.1 普通地图模块普通地图模块主要实现用户以普通地图的模式来对地图进行查看的功能,普通地图模块实现界面如图 3 所示。图 3 普通地图界面4.1.2 交通地图模块交通地图模块主要实现用户以交通地图的模式来对地图进行查看的功能,可以查看当前的交通状况,交通地图模块实现界面如图 3 所示。图 3 交通地图界面4.1.3 卫星地图模块卫星地图模块主要实现用户以卫星地图的模式来对地图进行查看的功能,卫星地图模块实现界面如图 3
47、所示。图 4 卫星地图界面4.1.4 查询模块查询模块主要实现用户查询景点信息的功能,用户可以选择城市,输入关键词进行搜索,查询模块实现界面如图 5 所示。图 5 查询模块界面4.1.5 经纬度转地址模块用户输入经纬度信息,地图转到相应的地址,以及用户选中某地址地图显示地址的经纬度,经纬度转地址模块实现界面如图 5 所示。图 5 经纬度转地址模块界面4.34.3 架构代码的实现架构代码的实现部分代码实现#import LZXAppDelegate.h#import MyTabBarController.himplementation LZXAppDelegate-(void)dealloc s
48、elf.window=nil;superdealloc;-(BOOL)application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptionsself.window=UIWindowalloc initWithFrame:UIScreenmainScreen bounds autorelease;MyTabBarController*myTabBar=MyTabBarControlleralloc init;self.window.rootViewController=m
49、yTabBar;myTabBarrelease;/Override point for customization after application launch.self.window.backgroundColor=UIColorwhiteColor;self.windowmakeKeyAndVisible;returnYES;MyTabBarController.m部分代码NSArray*titles=;NSMutableArray*arr=NSMutableArrayalloc init;for(int i=0;i 4;i+)PhotoWallViewController*photo
50、=PhotoWallViewControlleralloc init;NSString*plistPath=NSBundle mainBundle pathForResource:imagePlistNamesiofType:plist;photo.filePath=plistPath;UINavigationController*navc=UINavigationControlleralloc initWithRootViewController:photo;photo.navigationItem.title=titlesi;photo release;navc.tabBarItem.ti