基于j2me的手机gps导航系统的设计与实现内容摘要:

同类型的手机必须实现对HTTP协议的支持,而其他协议的实现都是可选的而不是必需的。 因此,考虑到不同类型的手机上的可兼容性,客户端和服务端采用HTTP协议进行通信。 数据存储技术本系统中查询记录是保存在手机记录管理系统(RMS)中,从服务端接收的地图文件是先保存在手机文件系统中,再读取文件并渲染到地图界面中。 系统涉及数据存储技术,在此作简明介绍。 RMSJ2ME 记录管理系统(RMS)提供了一种机制,通过这种机制,MIDlet 能够持久存储数据,并在以后检索数据。 在面向记录的方法中,J2ME RMS 由多个记录存储构成。 记录存储在与平台相关的位置(比如非易失性设备存储器)创建,这些位置不直接公开给 MIDlet。 RMS 类调用特定于平台的本机代码,这种本机代码使用标准 OS 数据管理器函数来执行实际的数据库操作。 记录存储实现确保所有单个的记录存储操作都是原子的、同步的以及序列化的,因此多个访问将不会出现数据毁坏。 记录存储被盖上时间戳来指示它上次被修改的时间。 记录存储还维护版本(version),它是一个整数,修改记录存储内容的操作每发生一次,这个数加一。 版本和时间戳对于同步目的很有用。 记录存储中的每个记录是一个字节数组,并且有唯一的整数标识符。 文件系统在CLDC配置下,文件系统并没有收纳在MIDP功能子集中,而是以可选包的形式提供。 文件系统可选包(JSR75规范)中定义了J2ME平台的文件系统接口。 (GCF)来提供的文件存取接口。 也就是说,和文件系统打交道的与其他通用连接框架的应用没有很大的区别,其特有的部分就是文件系统处理。 XML技术XML(Extensible Markup Language)即可扩展标记语言,它与HTML一样,都是SGML(Standard Generalized Markup Language,标准通用标记语言)。 XML是Internet环境中跨平台的,依赖于内容的技术,是当前处理结构化文档信息的有力工具。 扩展标记语言XML是一种简单的数据存储语言,使用一系列简单的标记描述数据,而这些标记可以用方便的方式建立,虽然XML占用的空间比二进制数据要占用更多的空间,但XML极其简单易于掌握和使用。 常见的XML解析技术有以下两种: DOM解析技术DOM(Document Object Model,文档对象模型)是一种应用程序接口(API)的应用,它将文档(如XML文档,HTML文档等)看成是一个文档对象,然后通过程序语言(如JavaScript等脚本语言,C++等)调用该文档对象,对文档中的数据进行存取,并利用程序对获取的数据进行跟进一步的处理。 DOM是基于内存的,不管文件有多大,都会将所有的内容预先装载到内存中。 从而消耗很大的内存空间。 SAX解析技术SAX是(Simple API for XML)简易应用程序编写接口,SAX解析器不在内存中建立和XML文件相对应的树形结构数据。 SAX解析器的核心是事件处理机制。 不同于DOM的文档驱动,SAX是事件驱动的,也就是说,它并不需要一次性读入整个文档在内存中操作,而文档的读入过程也就是SAX的解析过程。 多线程技术 多线程概念由于在J2ME程序中访问网络时会花较长时间的连接远端服务器发送请求及接收数据,为了提高程序的响应速度和程序运行效率,不致于用户在单击按钮后程序不再响应用户的其它操作,增加用户界面的友好性易用性,引入了多线程机制。 用户发起网络请求时,网络请求由独立于界面线程的单独网络请求线程发起,该线程完成网络操作后将结果或接到数据显示到界面上。 多线程是这样一种机制,它允许在程序中并发执行多个指令流,每个指令流都称为一个线程,彼此间互相独立。 线程又称为轻量级进程,它和进程一样拥有独立的执行控制,由操作系统负责调度,区别在于线程没有独立的存储空间,而是和所属进程中的其它线程共享一个存储空间,这使线程间的通信比进程间通信简单。 多个线程的执行是并发的,也就是在逻辑上“同时”,而不管是否是物理上的“同时”。 如果系统只有一个CPU,那么真正的“同时”是不可能的,但是由于CPU的运算速度非常快,用户感觉不到其中的区别,因此我们也不用关心它,只需设想各个线程是同时执行即可[3]。 线程状态和生命周期创建一个新的线程的生命周期如下状态:(1)新建:当一个下hread类或者其子类的对象被声明并创建时,新的线程对象处于新建状态,此时它已经有了相应的内存空间和其他资源。 (2)就绪:处于新建状态的线程被启动后,将进入线程队列排队等待CpU服务,这个时候线程具备了运行的条件,一旦获得CpU的时间片,便可脱离创建它的主线程独立开始自己的生命周期。 (3)运行:就绪的线程被调度并获得CUp的处理边进入了运行状态,每一个Thread类及其子类的对象都有一个重要的run()方法,当线程对象被调度执行的时候,它将自动调用对象自身的run()方法,从第一句代码开始执行。 所以说对线程的操作应该写到run()方法中。 (4)阻塞:一个正在执行的线程如果在某种情况下不能执行了,进入阻塞状态,此时它不能再次进入排队状态,只有引起了阻塞的原因消失时,线程才可以继续进入排队状态等待CPU处理。 (5)死亡:处于死亡状态的线程不具有继续执行的能力,线程死亡主要的原因是正常运行的线程完成了全部工作,即执行完了run()方法,另外就是被提前强制的终止了。 Java中多线程的两种实现方式(1)方式一:继承们时Thread类,覆盖父类Thread的run()方法,如果我们要实现多线程只需要继承该类就可以,其它方法不需要自己实现。 (2)方式二:实现Runnable接口Java语言提供了Runnable接口来帮助我们编写多线程程序,Runnable接口只有一个方法run(),我们要实现多线程只需要implements接口并override方法run()即可。 线程的安全问题——同步与协作(1)线程同步标记:synchronized关键字同一进程中的多个线程共享同一片存储空间,在带来方便的同时,也带来了访问冲突问题。 Java语言提供了专门机制来解决这种冲突,有效避免了同一个数据对象被多个线程同时访问的问题。 针对方法Java提出同步机制,由synchronized关键字来实现,主要有两种用法:synchronized方法(方法同步)和synchronized块(块同步)。 (2) 线程协作处理:使用join()方法当一个线程启动前需等待另一个线程运行完毕时,将要考虑线程协作,可以使用join()方法处理,该方法的本质还是通过wait()方法实现,该线程的启动必须拿到另一个线程的锁才能执行。 Servlet技术 Servlet基本概念Servlet是一种独立于平台和协议的服务器端的Java应用程序,可以生成动态的Web页面。 它是位于Web 服务器内部的服务器端的Java应用程序,与传统的从命令行启动的Java应用程序不同,Servlet由Web服务器进行加载。 Servlet是JSP的前身,在MVC架构中起到了控制中心的作用。 Servlet的生命周期 Servlet 的生命周期始于将它装入 Web 服务器的内存时,并在终止或重新装入 Servlet 时结束。 (1) 初始化  在下列时刻装入 Servlet:如果已配置自动装入选项,则在启动服务器时自动装入;在服务器启动后,客户机首次向 Servlet 发出请求时;重新装入 Servlet 时装入 Servlet 后,服务器创建一个 Servlet 实例并且调用 Servlet 的 init() 方法。 在初始化阶段,Servlet 初始化参数被传递给 Servlet 配置对象。 (2) 请求处理  对于到达服务器的客户机请求,服务器创建特定于请求的一个“请求”对象和一个“响应”对象。 服务器调用 Servlet 的 service() 方法,该方法用于传递“请求”和“响应”对象。 service() 方法从“请求”对象获得请求信息、处理该请求并用“响应”对象的方法以将响应传回客户机。 service() 方法可以调用其它方法来处理请求,例如 doGet()、doPost() 或其它的方法。 (3) 终止  当服务器不再需要 Servlet, 或重新装入 Servlet 的新实例时,服务器会调用 Servlet 的 destroy() 方法。 Java Servlet APIJava Servlet 开发工具(JSDK)提供了多个软件包,在编写 Servlet 时需要用到这些软件包。 其中包括两个用于所有 Servlet 的基本软件包: 和。 可从sun公司的Web站点下载 Java Servlet 开发工具。 HTTP Servlet 使用一个 HTML 表格来发送和接收数据。 要创建一个 HTTP Servlet,请扩展 HttpServlet 类, 该类是用专门的方法来处理 HTML 表格的 GenericServlet 的一个子类。 HTML 表单是由 FORM 和 /FORM 标记定义的。 表单中典型地包含输入字段(如文本输入字段、复选框、单选按钮和选择列表)和用于提交数据的按钮。 当提交信息时,它们还指定服务器应执行哪一个Servlet(或其它的程序)。 HttpServlet 类包含 init()、destroy()、service() 等方法。 其中 init() 和 destroy() 方法是继承的。 SVG地图图片的渲染及制作技术 SVG地图图片渲染技术本系统中的电子地图采用SVG图片格式,使用到Mobile SVG Tiny JSR226开发包,该开发包提供了完整的在移动设备上构建SVG矢量图形的方法。 地图制作软件——Adobe IllustratorIllustrator是由美国Adobe公司开发的一款图形绘制功能强大的平面设计软件。 它被广泛应用于平面广告设计、网页图形设计、电子出版物设计等诸多领域。 通过使用它,用户不但可以方便地制作出各种形状复杂、色彩丰富的图形和文字效果,还可以在同一版面中实现图文混排,甚至可以制作出极具视觉效果的图表。 作为全球最著名的图形软件Illustrator,以其强大的功能和体贴用户的界面已经占据了全球矢量编辑软件中的大部分份额。 具不完全统计全球有67%的设计师在使用Illustrator进行艺术设计。 尤其基于Adobe公司专利的PostScript技术的运用,Illustrator已经完全占领专业的印刷出版领域。 第三章 GPS导航模型需求分析通过对GPS导航系统体系结构的了解和分析,论文中的GPS导航系统需要实现以下主要功能:地图服务、定位服务和查询服务。 地图服务:由于本次系统设计时采用的地图数据主要是合肥学院这一块的地图,主要是满足在合肥学院周边地区人们获取地理信息数据的需求,包括地图的平移、缩放和测距等跟地图操作相关的功能[4]。 与传统GIS的主要区别在于移动终端同服务器之间的连接网络是无线网络,网络带宽窄,且不稳定,再者移动终端的计算能力及存储能力都不能跟PC同日而语,在设计地图服务功能时要充分考虑以上因素。 定位服务:现在人们的活动中有80%左右都会跟其自身所处的位置相关,并且定位功能也是GPS导航系统中非常重要的一项功能,如何快速、准确得到移动终端的位置并显著的在地图上标识出来是一个需要仔细考虑解决的问题。 查询服务:人们在使用地图服务时,经常会用到的功能是给出一个地名,查看该地名周边的环境及建筑物等,也就是人们常说的以文查图,给出相应的文字信息,在地图上找到想要找的位置。 第四章 GPS导航模型概要设计 功能模块划分 图41 系统功能模块图GPS导航模型中软件共分为两部分,一部分是运行在移动终端上的客户端软件部分,另一部是运行在Web服务器端的服务端软件部分,客户端和服务端通过HTTP协议进行数据传输。 下面分别对这两部进行详细描述: 客户端功能描述(1)地图服务主要完成地图的平移、缩放、测定距离、图层控制、重定中心等功能,其中地图平移功能包括左移、右移、上移、下移四项功能。 (2)定位服务移动终端通过蓝牙协议与蓝牙GPS信号接收器通讯,接收蓝牙GPS信号接收器接收的卫星导航数据,并对该数据进行解析得到当前位置的经度、纬度、海拔高度,将这些数据发送给后端的Web服务器,由Web服务器调用地图服务器API进行重定中心运算,生成以该经度和纬度为中心的栅格图像,并将该图像传到客户端显示,实现定位目的。 (3)查询服务客户端用户输入文字信息,该文字信息被传送到后台服务端,服务端在地图上进行快速定位,实现以文查图功能。 (4)系统设置设置地图视图方式,分混合视图、建筑视图、交通视图。 选择混合视图时地图中将包括建筑物信息及交通信息,选择建筑视图时地图中将只包括建筑物信息而不包括交通信息,选择交通视图时地图中将只包括交通信息而不包括建筑物信息。 (5)系统帮助:提供该系统的使用帮助信息。 服务端功能描述地图服务器端软件主要负责响应客户端发送来的各种请求,并同地图服务器交互完成数据处理和处理后的数据发送。 (1)Web服务路由模块主要负责接收移动客户端软件通过HTTP协议传送过来的请求数据包,并将该请求数据包经解析后发送给业务处理模块。 (2)业务处理模块主要根据用户的客户端请求处理类型执行相应的业务逻辑运算,得到运算结果。 选择不同业务处理响应客户端服务。 (3)数据发送模块主要完成接收业务处理模块的处理结果数据并对数据进行分析选择相应的地图,并将地图数据返回到客户端。 第五章 GPS导航模型详细设计 系统设计思想 Java设计模式设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。 使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 利用设计模式可方便地重用成功的设计和结构。 把已经证实的技术表示为设计模式,使它们更加容易被新系统的开发者所接受。 设计模式帮。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。