客户端与服务器通信向服务器发送GPS,司机端接受到最近的地址就用GPS导航到该地方,接到之后开始导航目的地,有

手机gps导航软件
→ 手机gps导航软件
手机gps导航软件
上传时间: 来源:
第一篇:手机gps导航软件北京邮电大学 硕士学位论文 基于智能手机的GPS导航系统的设计与实现 姓名:肖国元 申请学位级别:硕士 专业:软件工程 指导教师:罗守山
基于智能手机的GPS导航系统的设计与实现
如今,GPS导航正在成为IT业的一大热点。据www.canalys.corn 的报道,光是2006年第二季度各种嵌入式GPS导航设备的出货量就 达到了二百五十万部,比2005年同期增长了96.6%。在西方发达国 家GPS导航系统已经相当普及了。智能手机的发展同样异常迅猛。据知名网站 www.palminfocenter.com的报告,2006年全世界有六千四百万部智能
手机被交付。智能手机正一步步渗透进普通人的生活。其中,加拿大
Research in
Motion(RIM)公司的黑莓(BlackBerry)系列产品增势迅猛, 2006年黑莓以年出货量350万部,10%的增速依然占据智能手机市 场的头把交椅。GPS手机方面,根据市场研究机构Isuppli的最新预测,2006年
至201 1年,全球范围内具备定位功能的手机出货量将翻两番,由1.096
亿部增长到4.44亿部。赛迪顾问数据显示,目前GPS导航手机市场 占有率约为2.3%,随着3G的发展,GPS手机市场预计到201 1年其 市场占有率将达到20%。目前超过50%的黑莓手机都内置了GPS模 块。与专业的导航产品相比,手机导航具有便携性好、价格较低、永 远在线,而且服务获取方式更灵活(用户可试用,且不满意可随时退 订服务)等独特的优势,从而越来越被人们所关注。市场分析公司 In.stat最近发布的市场调查报告发现,导航手机的发展潜力非常大有93.7%的受访者表示,他们希望手机能够集成导航功能,39.8%的 受访者对基于位置的服务有着强烈的兴趣,如本地信息搜索和导航 等。相信在不久的将来导航服务将成为手机服务中重要的一个功能。基于上述分析,在全球最流行的黑莓智能手机上研制GPS导航 系统是非常有意义的。本文通过对黑莓手机平台架构进行分析,在掌 握了该平台上的用户界面,GPS,数据持久层,音频,以及网络编程 的基础上,提出了整体解决方案,并针对上一代产品的缺陷提出了改 进意见。实现基于黑莓智能手机的GPS导航系统涉及到的技术可以 分为两个方面:服务器端技术和客户端技术。客户端技术主要涉及
J2ME编程,黑莓开发工具包编程,计算机图形学以及GPS信号处理 等技术;服务器端技术主要涉及Web服务器技术、数据库访问以及 地理信息系统方面的技术。本论文主要针对客户端技术进行讨论,论 述了构建C/S结构的手机GPS导航软件所涉及的各项技术。论文的主要工作体现在如下方面1.对黑莓手机平台的各系统API,特别是用户界面和GPS进行 分析并得出在该平台开发导航软件可行的结论。2.确定客户端.服务器基本架构以及手机端与服务器通讯的接
3.完成导航软件客户端的模块设计和大部分编码工作。4.针对上一代产品存在的几大问题进行了相应改进。
关键词:J2ME、计算机图形学、全球定位系统、导航、三维导航地
DESIGN AND
MLEⅣ匝N1:ATION 0F GPS NAVI(弘汀ION
ABSTRACT
SYSTEM BASED ON SMARTPHONE
Nowadays.GPS navigation has become hotter and hotter in IT industry.According
report
www.canalys.corn,2,500,000
embedded GPS navigation units have been manufactured in 2加quarter of 2006,96.6%up
against the same quarter of 2005,a big rise trend.
Actually GPS navigation has been
popular in western countries.
Similarly,smartphones has gmned more and more popularity
the world.Per www.palminfocenter.com,64,000,000 smaaphones were
manufactured
in the year of
2006.More and more ordinary
people
becoming the owners of
smartphone.Meanwhile,Blackberry
series has
smartphones manufactured by Research In
Motion(RIM)in Canada
gained the greatest market share among all the
smanphone vendors―in
year 2006,3,500,000
against year 2005.
BlackBerry devices were sold,10%increasing rate
On the other hand,according from year 2006
to year 20 1 1 the
to Isuppli,a
market research institute,
shipment of GPS enabled mobile phones
will quadruple,from 1 09,600,000 to 444,000,000.Per ccidnet.com,GPS mobile phones have
market share of about 2.3%.As 3G develops,this 20%by year 20 1 1.Moreove,more than 50%
number will become
BlackBerry
devices
internally integrated with GPS module,enabling
nature.
itself to run location based services by Compared
expertised GPS navigation products,mobile phone
based navigation systems have their unique advantages:they
portable,lower price, always
online,
more of
flexisible all these
subscription/unsubscription
service.Because
advantages,mobile phone based navigation systems and more attention.According
drawing more
research
recently
published
investigation report by In―stat,GPS enabled mobile phones have yet
large room to develop:93.7 of the interviewees said they hoped mobile phones
be integreated with navigation function.while 39.8%of them
showed their strong interest in location―based
service(LBS)such
local
point of interests search and navigation.It’S clear that in the
navigation
future
service will become
very important
function in mobile
services.
Based
the above analysis,it’S meaningful and lucrative to study
and design of the cutting―edge GPS navigation application
the most
popular BlackBerry phones that have 3D moving map and many other
fancy features.This article analyzes BlackBerry platform architecture comes up with software
solution
how to develop navigation system handset reviewing the platform’S
Blackberry
after
system
runoffons like UI,GPS,data persistence level architecture,audio,and audio.T11e‘technologies involved in realizing based GPS navigation system side technoligies and
can server can a
BlackBerry
smart phone
be divided into two categories:client
side technologies.Client side technoligies
further
divided
programming,BlackBerry
SDK related
programming,computer
graphics
programming,and
technologies;Server side technologies,however,ale composed of server,database
access,and GIS(Geographical Information System)
technologies.This article will mainly focus only. This article describes following parts:7 1.Analyze each API’S,and comes to
client side technologies
system API,especially
interface and GPS
the conclusion that it’S feasible to develop GPS
navigation system that has 3D moving
maps.
2.Determine
client.server
architecture
the interfaces between
the client software and the
servers.
3.Fini sh the client side software module design and most of the coding work. 4.Enhance the software by fixing some of the critical defects in the last generation of the software.
WORDS:J2ME,Computer Graphics,GPS(Global
Navigation
Positioning
System),Navigation,3 D
独创性(或创新性)声明 本人声明所呈交的论文是本人在导师指导下进行的研究工作及取得的研究
成果。尽我所知,除了文中特别加以标注和致谢中所罗列的内容以外,论文中不
包含其他人已经发表或撰写过的研究成果,也不包含为获得北京邮电大学或其他
教育机构的学位或证书而使用过的材料。与我一同工作的同志对本研究所做的任 何贡献均已在论文中作了明确的说明并表示了谢意。申请学位论文与资料若有不实之处,本人承担一切相关责任。本人签名:
垫皇££』::丝
关于论文使用授权的说明 学位论文作者完全了解北京邮电大学有关保留和使用学位论文的规定,即:
研究生在校攻读学位期间论文工作的知识产权单位属北京邮电大学。学校有权保
留并向国家有关部门或机构送交论文的复印件和磁盘,允许学位论文被查阅和借 阅;学校可以公布学位论文的全部或部分内容,可以允许采用影印、缩印或其它 复制手段保存、汇编学位论文。(保密的学位论文在解密后遵守此规定) 围 适用
零雾 鹜莩械盐讪
"Z.ao是,j,哆
Ⅵ咿舌.厂.1 3
第1章绪论
1.1基于智能手机的GPS导航系统简介
基于智能手机的GPS导航系统,就是运行在智能手机上的一个应用程序,它 能读取到全球定位系统(GPS)的信号,并与运行在无线运营商网络后端的服务
器通信获得路线和地图等信息,向用户提供实时导航以及其它相关功能的一项服 务。随着无线通讯技术的应用与发展,移动电话的芯片速度越来越快,因此越来 越多的移动电话可以运行复杂的GPS导航应用。传统的车载导航系统的市场份额
J下一步步被更灵活的基于手机的导航系统所蚕食。
相比传统的车载导航系统和其它类型的导航系统,基于智能手机的GPS导航 系统的最大优点在于它的可携带性(portability)和数据的实时性,以及所有功能基 于一体(a11.in-one),低成本。可携带性:由于它本身就是手机内的一个应用程序,基于智能手机的GPS导 航系统的可携带性不言自明。数据的实时性:手机导航是一个典型的客户端.服务器架构的系统,几乎所 有路线,地图,商户等信息都是实时取得的,因此绝对不会有信息过时的问题存 在。反观传统的单机导航系统,数据过时是一个比较大的问题。所有功能基于一体:由于它仅仅是手机内的一个应用程序,手机的其它功能 不会收到任何影响。成本:传统的车载导航系统需要用户一次性花费数额不小的一笔资金来购 买,地图等数据的更新往往还需要额外花费;而手机导航一般是与无线运行商绑 定的一项服务,可以随时订购和退订,付款方式更加灵活,而且享受免费的地图 升级服务。其它:最新版本的TeleNav NavigatoreP将包含实时交通信息和电子社区的功 能,这些都是不拥有网络功能的传统车载导航系统所不具备的功能。
1.2论文背景
泰为公司作为基于手机的无线定位/实时导航应用领域的先驱,已成功与世
界各地众多无线运营商合作,提供多样性的GPS(全球定位系统)增值服务。其
旗舰产品,TeleNav
Navigator是世界上首个基于手机的GPS导航系统,可以
运行于几乎所有流行的移动电话上,其中由加拿大RIM(Research
Motion)公司
推出的黑莓系列智能手机是运行该产品用户数最多的手机平台之一。目前基于该
手机平台的产品已经进行到了第二代。
在已经推出的基于RIM BlaceBerry的第一代产品中已经实现的主要功能有:
基于图标的实时导航功能;基于PNG的地图功能;黄页功能;交互式语音回应地
址输入(IVR,or
Interactive Voice Response)。
基于图标的实时导航:
当前的导航提示信息通过图标的方式来表示。这种
方式具有功能简单,网络流量小的特点,比较适合与低端或早期的手机型号或需 要较少网络流量的情形,如网络信号比较弱的时候。
基于PNG的地图功能:地图数据由服务器端实时生成(PNG)格式的二进制 形式并传回到手机端显示。最新的第二代产品计划包含的功能有:三维移动地图导航功能(3D moving
map navigation);实时交通信息;电子社区;以及分稚式语音识别(DSR,or
Distributed Speech
Recognization)功能。
不难看出,第一代产品的功能相对比较简单,主要原因是当时的手机硬件和
无线网络的性能还比较初级,不足以满足高速度运算和存储的需要。随着近年来 手机功能的不断增强,第一代产品的已经不能满足市场的需要,手机速度完全能 满足如3D实时导航对手机和无线网络性能的要求。本论文主要论述对第二代产 品3D导航地图和GPS相关技术在黑莓平台的设计与实现。
1.3论文创新点
本课题的创新之处在于:
提出并描述了目前市场上最新一代基于黑莓智能手机的GPS导航系 统的功能描述和设计实现的细节,即三维移动地图导航功能(3D
moving map navigation);。
分析了NMEA.0183协议的细节,使用事件模式来自动接收GPS。分 析并验证了水平精度衰减因子的含义,提高了应用程序的可用性。
1.4论文结构与主要工作
1.4.1论文结构
第一章主要介绍了基于智能手机的GPS导航系统的概念,本课题的研究背景
以及主要工作。
第二章首先介绍TGPS的工作原理以及相关标准、然后介绍了黑莓平台的特
性以及与手机导航系统设计相关的J2ME程序设计知识,最后简要介绍了相关计
算机图形学知识,并对3D坐标变换以及3D透视投影变化作了详细讲解,为后面 的3D导航地图的设计和实现打下了基础。
第三章介绍了项目的需求分析与总体设计,并深入讨论了黑莓手机平台的性 能并得出可行性分析。
第四章介绍了基于黑莓智能手机GPS导航应用的详细设计,并重点介绍了3D
导航地图的设计思路。第五章介绍了在系统实现过程中的一些实现细节以及碰到的问题和解决的 办法,对功能和性能方面的不足作出了分析,并详细介绍了在第二代产品中如何 利用工厂模式等技术手段弥补那些不足。
1.4.2主要工作 本文通过对基于黑莓智能手机的第一代GPS导航系统的工作过程进行了深 入的分析,对GPS.0183协议进行了深入研究,论证了采用事件模式自动接收GPS 信号以及利用HDOP经验值过滤质量不好的GPS点来提高GPS读取模块稳定性的 可行性,并提出了采用工厂模式合并重复代码的方法。参考已有J2ME平台产品 完成了基于黑莓智能手机的第二代导航系统客户端的系统设计、部分程序编码以 及软件测试与分析工作。在本课题中,本人参与了基于黑莓智能手机的第二代导航系统客户端设计与 实现的全过程,主要做了如下四个方面的工作●基于黑莓智能手机的第二代导航系统客户端的可行性分析 ●基于黑莓智能手机的第二代导航系统客户端的系统设计,提出了使用工
厂模式来合并重复代码的构想,并在实施中取得良好效果。
●程序编码 ●软件测试
第2章相关基础知识简介
GPS简介
全球定位系统(GPS)是一个具有全球性、全能性(陆地、海洋、航空与航 天)、全天候优势的导航定位、定时、测速系统,由空间卫星系统、地面监控系 统、用户接收系统三大子系统构成,已广泛应用于军事和民用的众多领域。全球定位系统有着非常广泛的应用,其中最基本的应用之一就是导航和定位 服务。本文就将重点描述如何在黑莓智能手机上实现一个GPS导航系统的功能。
2.1.1
GPS系统的特点 GPS系统具有全天候、全方位、高精度、多用途以及方便快捷高效等特点。1)全天候:指野外观测可不受时间的限制。不论白天黑夜、刮风下雨、夏
暖冬寒,均可获得满意的观测效果。对于基于手机的导航系统来说,这意味着用 户在使用导航服务的时候可以不受任何时间和天气情况的限制。2)全方位:指不受空间的限制,只要能同时接收到四颗或以上卫星的信号, 即可进行定位。对于基于手机的导航系统来说,这意味着用户可以在全球任何一 个地方使用导航服务。3)较高精度:民用GPS经纬度精度能达N15米左右,根据调研,这个精度 能够产生比较好的导航效果。军用GPS精度更高,但因本文所述导航系统使用民 用GPS,不再详述。
2.1.2
GPS工作原理 GPS卫星以大约一天两周的速度沿着预定轨道环绕地球飞行,并向地面发射
信号。地面的GPS接收器收到信号后通过三角学原理计算出用户的具体位置信 息。导航功能实际上是定位功能的延续一有了持续的位置信息,并结合地图信 息,就能实现导航功能。以下详述GPS卫星用L波段的两个无线电载波(Ll=19cm,L2=24cm)向地面连续不 断地发送导航定位信号(简称GPS信号)。每个载波用导航电文和测距码进行双 相调制。导航电文包括卫星星历、时间、时钟改讵、电离层延时改正和卫星工作状态
信息等,是导航定位的数据基础,也称数据码(D码)。由导航电文可知该卫星 当前的位置和卫星工作情况。
测距码是伪随机码(PRN),分为粗码(C/A码)和精码(P码)。粗码用于 捕获信号及粗略定位。精码用于精密定位,但由于美国的AS政策,P码是保密的, 禁止非特许用户使用。GPS接收器自己也使用相同的方式基于本身的时钟生成伪 随机码,然后与从卫星收到的码相比较得出时间差,然后通过一个简单的公式来 计算距离:光速x传输时间。由于受下列因素的影响,这个距离是不精确的:卫
星钟差,接收机钟差,电离层延迟,大气对流层延迟。根据测绘学原理,利用三个或以上卫星的已知空faJ位置,用空间距离交会法,
求得地面待定点(接收机)的位置,这就是GPS卫星定位的基本原理:卫星是高 速运行的动态已知点,卫星的实时位置是由导航电文解算的,只要实时测量出测
站(接收机天线中心)至卫星问的距离,就可以进行测站点的定位。如公式2.1 所示:
彳=G,-)2+◇P―y≯+G,_户 房=GP一工:)2+◇p―y:)2+(z,一z:)2
房=GP―b)2+◇P―Y3)2+(z,一z,)2
公式2-1:空间距离交会法方程式组
式中(Xj,y。,Z.i)为三个卫星某时刻的位置(j=l,2,3);(x,,Y,,Z。,)为
测站点P点坐标;(p,,p:,p。)为卫星到接收机天线的距离。
但考虑上述到各种误差的影响,为了达到定位精度要求,至少需要同步观测 4颗以上的卫星。
一般来说,GPS接收器会根据捕获到的卫星数量以及卫星的相对位置等信
息,给出一个误差的估计,最PDOP(Dilution ofPrecision)。应用程序可以根据 不同的需要参考这个精度以决定GPS点的取舍。讨论GPS基本工作原理的意义在于选择何种类型的GPS接收设备或手机内 置GPS接收器是否能满足导航系统的基本要求,以及如何设计导航软件以达到容 错的目的。由于手机属于同用消费品,出于成本考虑,本导航系统应能支持最基本的 GPS接收器。
2.1.3 NMEA
0183接口标准
NEMA0183接口标准为4800波特率的串行数据总线定义了电子信号需求, 数据传输协议和时间,以及特定语句格式。它主要用于GPS接收器和其它设备(如 智能手机)之间的数据传输。目前黑莓平台利用NEMA 0183协议与GPS接收装置 交换数据。本文讨论的为1997年1月l同由美国国家海洋电子协会(National
Marine
ElectronicalAssociation,orNMEA)公布的2.20版本。目前最新版本为3.0l,但由于 其为付费文档,为避免版权纠纷,本文采用互联网上公布的较老的2.20版本,其
主要内容和最新的3.Ol版本保持一致,所以仍然具有借鉴意义。
1)NMEA0183输出消息格式
NEMA0183接口标准定义TGPS接收器输出给其它设备的消息格式,一共分 为6种,参见表2.1:
表2-1:NMEA输出消息类型
NEMA记录
GGA GLL GSA GSV
描述 GPS定位信息(Global
positioning system fixed
data)
经纬度定位信,皂,(Geographic position―lmituddlongitude) 当前卫星信,皂,(GNSS 可见卫星信息(GNSS
DOP and active satellites) satellites in view) specific GNSS
推荐定位信.窟,(Recommended minimum 地面速度信息(Course over
data)
gfround and ground
speed)
为实现较基本的导航功能,一般只需要用至IJRMC和GGA两种输出消息即可。
本文将只介绍这两种消息的格式。
2)RMC
应用程序(如手机导航程序)I古JGPS接收器请求RMC信息,GPS接收机输出 该信息给应用程序。一条典型的RMC消息如下(详细解释请参考表2.2)¥GPRMC,161229.487,A,3723.2475,N,12158.3416,w,o.13,309.62,120598,,宰10
3)GGA
应用程序(如手机导航程序)向GPS接收器请求GGA信息,GPS接收机输出 该信息给应用程序。一条典型的GGA消息如下(详细解释请参考表2―3):。
¥GPGGA,161229.487,3723.2475,N,12158.3416,Wjl,07,1.0,9.0,M,,,,0000木18
表2-2:RMC输出消息格式
名称 Message ID
¥GPRMC
说明 RMC protocol
header
UTC Position Status
161229.487 A
hhlllIllss.sss A--data Valid data not Valid
Latitude
N/S Indicator
3727.2475 N
ddmm.mmmm
N---north S=south
Longitude
12158.3416
dddmm.1nlTlmnl
E=east knots
Indicator
W--west
Speed Over Ground Course Over Ground Date
309.62
degrees
120598
ddmmyy
Magnetic Variation
Checksum 木10
degrees
E=east
W--west
<CR×LF>
End of message termination
表2.3:GGA输出消息格式 名称
Message ID
¥GPGGA
GGA protocol header
UTC Position
161229.487 3727.2475 N
hhmmss.SSS ddmm.mmmm N=north S=south
Latitude
N/S Indicator
Longitude
12158.3416
dddmm.mmmm E=east
E朋Indicator
W--west
Position fix indicator Satellites used HDOP
参见表2-4
07 1.O
Range 0 to 12 Horizontal Dilution of Precision
MSL Altitude
Units Geoid Separation UnitS Age ofDiff.Corr.
meters meters
meterS
meters
second Nun field when DGPS isnotused
Dif.Refi Station ID Checksum 木18 End of message termination
<CRxL,F>
表2-4:Position fix indicator值
0 1 2 3
描述 GPS点不存在或无效
GPS SPS Mode,fix valid Diferential GPS,SPS Mode,fix valid GPS PPS Mode,fix valid
4)NMEA 0183输入消息格式 NEMA0183接口标准定义了GPS接收器接收由其它设备输入的命令格式,限 于篇幅,本文仅讨论其中最重要的查询/速率控制消息。
¥PSRFl 03,00,01,00,01幸25
具体解释见表2.5。
表2.5:查询/速率控制输入消息格式
Message ID Msg Mode
¥PSRFl 03
PSRF 1 03 protocol header
参见表2.6
0=SerRate,
1=Query
Rate 00 seconds Output―off=0, max=255 CksumEnab Le 01 0=Disable Checksum, 1=Enable Checksum
Checksum
E=east
W=west
<CRxLF>
End of message termination
表2-6:受控输出消息类型
GGA GLL GSA GSV
0 2 3 4 5 6
需要特别注意的是以上协议指出,手持设备既可以主动NGPS接收器查询
GPS信息,也可以启动事件模式,即设置GPS读取GPS点的频率,读到后以事件
方式通知手持设备。后者避免了主动轮询带来的丌销,效率较高。
2.2J2ME和黑莓AP l简介 黑莓系列智能手机上运行的操作系统是J2ME的一?个超集。下面将对J2ME 和黑莓手机操作系统不同于J2ME的部分进行简要的分析。
2.2.1
1)J2ME概述
Sun公司将J2ME(Java 2
Micro Edition,Java 2微型版)定义为“一种以广泛
的消费性产品为目标的、高度优化的Java运行时环境’’。自从1999年6月在
JavaOne Developer
Conference上声明之后,J2ME进入了小型设备开发的行列。
通过Java的特性,遵循J2ME规范开发的Java程序可以运行在各种不同的小 型设备上。
Sun公司希望借助J2ME这把利剑对嵌入式设备这个混乱的领域进行统一,
让Java的范围扩展到所有的电子设备丌发上,按照现在的发展速度,J2ME很 快将被广泛应用于消费和嵌入式设备中。
与以前Sun公司推出的J2EE(Java
(Java 2
Standard Edition,Java
2 Enterprise Edition,Java
2企业版)、J2SE
2标准版)规范相比,J2ME不是一个单独的技术规
范,而是一系列技术规范总称。这些规范定义了Java技术在资源限制的设备中 的表现形式。J2ME主要适用于小型嵌入式设备,这些设备与PC或是服务器设备 相比没有统一的硬件标准、外观与操作方式,其功用也是千差力‘别。但是J2ME在 适用于这些设备的同时也保留了Java的传统特性,即任何时『自J和任何地点的代 码具有可移植性、部署灵活性、安全的网络传输性,以及代码稳定性。正是因为
如此,开发人员才可以借助J2ME力量让编写的程序能够运行在其他型号或厂商
的设备上。
2)J2ME总体架构 玉2ME使用配置和简表定制Java运行时坏境(JRE)。作为一个完整的 JRE,J2ME由配置和简表组成,配置决定了使用的Java虚拟机,而简表通过添 加特定于域的类来定义应用程序。配置将基本运行时环境定义为一组核心类和一个运行在特定类型设备上的
特定JVM。我们将在J2ME配置一章中详细讨论配置。
简表定义应用程序;特别地,它向J2ME配置中添加特定于域的类,定义 设备的某种作用。图2.1描述了不同的虚拟机、配置和简表之问的关系。它同时把J2SE API和 它的Java虚拟机进行了比较。虽然J2SE虚拟机通常被称为一种JVM,但是 J2ME虚拟机、KVM和CVM都是JVM的子集。KVM和CVM均可被看作 是一种Java虚拟机一它们是J2SE JVM的压缩版,并特定于J2ME。
LeasI PowetluI Deoces
Mosl PowerfuI 1.3eoces
图2―1:虚拟机、配置和简表之问的关系 3)配置概述 配置将基本运行时环境定义为一组核心类和一个运行在特定类型设备上的 特定JVM。虽然还可能在将来定义其他的配置,但当前J2ME存在两种配置1、连接限制设备配置(CLDC)特别与KVM一起用于内存有限的16位 .或32位设备。这是用于开发小型J2ME应用程序的配置。
2、连接设备配置(CDC)与C虚拟机(CVM)一起使用,用于要求内存超
过2兆的32位体系结构。互联网电视机项盒便是这类设备的一个示例。
4)CLDCAPI
参见表2.7。
表2.7:CLDC API包
Java.io Java.1ang Java.1ang.ref java.util javax.microeditiOil.io
描述 提供数据流的系统输入和输出。提供Java编程语言基础类。提供引用对象类,它们支持一定程度上的垃圾回 收。包含集合类,时间,以及多样的实用类。包含一般连接的类。
本文描述的导航应用使用Yjavax.microedition.io来进行网络操作;使用了
java.io来进行一般性的数据输入输出流操作;还使用]'java.util中的工具类。
5)简表概述
筒表定义了应用程序所支持的设备类型。特别地,它向J2ME配置添加了 特定于域的类来定义设备的某种作用。简表建立在配置的顶部。已经为J2ME定 义了两种简表:KJava和移动信息设备简表(MIDP),它们也被建立在CDLC 上。这两种简表适用于小型设备。
6)MIDPAPI 参见表2.8。
表2.8:MIDPAPI包
javax.microedition.1cdui javax.microedi t i on.1cdui.game javax.microedition.midlet
包含MIDP用户界面API,它为MIDP应用程
序的用户界面实现提供了一组特性。包含了可以为黑莓设备进行丰富游戏内容开 发的类。定义了MIDP应用程序以及应用程序和应用 程序运行的环境之间的交互。
javax.microedition.pki javax.mi croedi t i on.rms
定义了用来验证安全连接信息的证书。为MIDlet提供一种机制来存储和取得持久 性数据。
本文描述的导航应用基本上没有使用MIDP中的API。使用的是黑莓APIqh自带的UI包来实现。
对于Ul和RMS来说,
2.2.2黑莓API
黑莓Java丌发环境(简称JDE)的设计提供了一套完整的API¥I]SI:具,来丌 发在黑莓设备上运行的Java应用程序。黑莓设备包含了一个基于CLDCl.1以及MIDP2.0的Java
Micro ME(Java Platform
Edition)运行时坏境。黑莓APl9。展提供了额外的功能,并且和黑莓集成
得更紧密。
在应用程序中可以同时使用CLDC/MIDP和黑莓API。为了能让应用程序在
任何采用JTWI(Java Technology
Wireless Industry,无线领域的Java技术)的
设备上运行,仅需要使用CLDC和MIDP API来编写标准的MIDP应用程序。参见
图2.2:标准MIDP应用程序将只适用CLDC和MIDP,得到的好处是它也能在其它 J2ME设备上运行;黑莓定制应用程序同时使用了CLDC/MIDP以及黑莓API,这
样写出来的应用程序与黑莓设备集成更紧密,用户体验也更好。一般情况下黑莓 平台软件开发商都会选择制作黑莓定制应用程序以更好地满足用户的需要。
图2.2:黑莓手机操作系统组件图
黑莓APII拘java包定义参见表2―9。
表2-9:黑莓API包
net.rim.blackberry.api.browser
描述 应用程序可以调用黑莓浏览器,为了得到 更多信息, 允许应用程序调用黑莓应用程序,如任 务,消息,备忘录以及电话。定义了必要的功能来将内部的RIM消息系 统对象组件转化为和Mai 1 API兼容并可 移植的对象。同时也提供了发送,接收, 以及访问消息的功能。为了得到更多信 息,
net.rim.blackberry.api.invoke
net.rim.blackberry.api.mail
net.rim.blackberry.api.mail.event
定义了消息事件以及监听者(Listener) 接L J来管理邮件事件。为了得到更多信 息,
net.rim.blackberry.api.menuitem
允许应用程序在黑莓的应用程序例如地 址本,R历以及消息中增加客户定制的菜 单项,
net.rim.blackberry.api.options
允许应用程序在黑莓设备的选项中增加 选项条目。允许应用程序和黑莓个人信息管理(PIM) 交互,PIM包括地址本,任务,同历。MIDP 包javax.microedition.pim提供了类似 的功能。
net.rim.blackberry.api.pdap
net.rim.blackberry.api.phone
提供了访问电话应用程序的高级特性。提供了访问电话呼叫历史记录的功能。允许黑莓应用程序在一个蓝牙序列端口 连接的基础上与打丌蓝牙无线技术的设 备进行通信。
net.rim.blackberry.api.phone.phondogs net.rim.device.api.bluetooth
net.rim。device.api.browser.field
允许程序在界面上显示浏览器的字段。
允许程序增加额外支持的MIME类型到黑 莓浏览器上。为管理数据集合定义了接口和实用类。
net.rim.device.api.browser.plugin
net.rim.device.api.collection
net.rim.device.api.collection.util
net.rim.device.api.compress
提供实用类来进行GZip和ZLib数据压 缩。提供类来支持黑莓设备上应用程序的本 地化。提供一个定制的黑莓类库来管理数据的 输入和输出。提供与MIME编码的数据流一起工作的类。提供触发事件的通知以及响应系统以及 程序的事件的方法。允许程序增加,删除,以及访问服务约定 (Service Book)的接口。提供访问系统级的功能,包括键盘和滑轮 的事件监听者,图像创建和支持,和应用 程序控制。
net.rim.device.apl。.i l 8n
net。rim.device.apl’.io
net.rim.device.apl’.mime
net.rim.device.apl‘.notification
net.rim.device.api.servicebook
net.订m.device,apl’.system
net.rim。device.api.ui
提供增强的功能来控制黑莓用户界面,包 括屏幕和控件靠局管理,控件类型支持, 焦点,滚动,以及改变监听者。提供了创建UI程序的界面组件库。提供创建UI程序的界面管理组件的库。
net.rim.device.api.ui.component
net.rim.device.api.ui.container
net.rim.device.api.ui.text
提供类对文本字符串进行过滤,包含多种 类型的数据,例如电话号码或URL。提供实用的方法和接口,包含数组,哈希 表,字符匹配。
net.rim.device.api.util
特别需要注意的是,不要把如下两个包混用●MIDP
APIs(javax.microedition.1edui package) APIs(net.rim.device.api.ui packages)
●BlackBerry UI
这是黑莓手机的一个限制,以避免两种不同风格的用户界面混用。
2.3计算机图形学相关知识简介
本章将主要介绍制作3D导航地图所涉及到的计算机图形学相关知识。
2.3.1位图和矢量图 位图,又称光栅图,一般用于照片品质的图像处理,是以无数的色彩点组成 的图案。由像素的位置与颜色值表示,能表现出颜色阴影的变化。此类图像适合 作效果图,因为它的颜色表现丰富。缺点是无限放大时用户会看到一块一块的像 素色块,效果会失真。矢量图,在数 学上定义为一系列由线连接的点。矢量文件中的图形元素称为 对象。每个对象都是一个自成一体的实体,它具有颜色、形状、轮廓、大小和屏 幕位置等属性。既然每个对象都是一个自成一体的实体,就可以在维持它原有清 晰度和弯曲度的同时,多次移动和改变它的属性,而不会影响图例中的其它对象。这些特征使基于矢量的程序特别适用于图例和三维建模,因为它们通常要求能创 建和操作单个对象。基于矢量的绘图同分辨率无关。这意味着它们可以按最高分 辨率显示到输出设备上。缺点是颜色表现不如位图丰富。
2.3.2
3D/2D坐标变换 在一个笛卡尔三维坐标系中(无论左手螺旋还是右手螺旋),空间任何一个
点的坐标可以用向量(x,y'z)来表示。坐标变换指的是对一组三维空间中的点进行 平移,缩放,旋转,反射以及错切等操作之后的坐标。在3D导航地图的研究中, 对这些操作的了解是必要的。为方便计算,一般把点所对应的向量用规范化的齐次坐标表示,即(x,y,z,1)。矩阵,并且使用4X4矩阵方式来表示坐标变换,因为在三维坐标系罩我们需要附
加的行和列来完成计算工作。
在下面的变换公式中,我们用P表示表换前的点的其次坐标,即(x,x z,1); 用P’表示表换前的点的其次坐标,即(x’,Y’,z’,1)。变换矩阵则分别用变换名称对 应英文名称首字母表示,即:
平移变换:T(Translation)
缩放变换:S(Scale)
旋转变换:R(Rotation)
1)31)平移变换 将坐标系中的一点沿X方向平移dx,沿Y方向平移dy,沿方Z向平移dz,表示 为P’=T?P,其中符号“,表示矩阵相乘。变换矩阵见公式2-2。
1 0 1 0 O 0 0 1 0 d。d, d1
r0,,d,,d:)=
公式2.2:3D平移变换矩阵
2)3D缩放变换
将坐标系中的一点沿X方向缩放Sx,沿Y方向缩放Sy,沿方Z向缩放Sz,表示 为P’=S?P,变换矩阵见公式2.3。
sG,,s,,J:)=
s:0 O l
公式2.3:3D缩放变换矩阵
3)3D旋转变换(绕X轴) 将坐标系中的…点绕X轴方向旋转0度。,表示为P’=Rx?P,变换矩阵见公 式2.4。
0 COS0 sin 0 O
0 ――sin 0 cosO O
O 0 0 l
Rx(臼)=
公式24:3D旋转变换矩阵(绕X轴)
4)3D旋转变换(绕Y轴) 将坐标系中的一点绕Y轴方向旋转0度,表示为P’=Ry?P,变换矩阵见公式
0 1 0 0
sin秒0 0 cos0 O 0 0 1
R。p)=
O ―.sin0 O
公式2-5:3D旋转变换矩阵(绕Y轴)
5)3D旋转变换(绕z轴)
将坐标系中的一点绕Z轴方向旋转0度,表示为P’=Rz?P,变换矩阵见公式
2.6。’
0一sin口0 l O O cos0 O O 0 O l
R:(o)--
sin秒 0 O
公式2-6:3D旋转变换矩阵(绕Z轴)
6)3D旋转变换(绕任意向量) 将坐标系中的一点绕以向量(x,y,z)旋转。度,表示为P’=R?P,变换矩阵参 见公式2.7和图2.3。
红2+C R= try―sz txz+sy O
txy+sZ
txz――sy tyz+sx 纪2+C
0 0 0 0
ty2+c tyz―sx O
c=cos(01 5=sin(O) t=(1一c)
公式2-7:3D旋转变换矩阵(绕任意向量)
图2.3:3D旋转变换示意图(绕任意向量)
7)3D反射和错切变换 3D导航地图一般不需要用到这两种变换,
8)2D坐标变换 2D各坐标变换币f13D对应变换类似,在此不再详述。
2.3.3
3D透视投影
1)简述 在2D地图的显示中一般采用平行投影以达到不失真的目的。3D导航地图的
显示则采用单点透视图的形式来展示,这样对象离开眼睛的距离越远,投影就越
小。这点非常重要,因为只有经过透视投影这个步骤之后地图才真正具有3D的 效果。参见图2-4。
图2.4:3D单点透视投影示意图
2)3D透视变换 假设眼睛的位置在Z轴上的(0,0,d)点(其中d>O),眼睛向XY平面方向看。空 问中任一点(X,Y Z)(其中Z<o),投影到XY平面的坐标为(Xp,Yp,O)。如图2―5所 示。
图2.5:3D透视变换示意图
从.Xe方向看其投影到YZ平面效果如图2.6
(XJL Z)
图2.6:从.Xe方向看
从.Ye方向看其投影到XZ平面效果如图2.7
,、A’1’圳
一xD.I/
图2.7:从jYe方向看
最终投影变换方程如公式2.8。
/(d―z)
k,y,。。】=b
z?]l d三
d“鼍0一z’0三三0
公式2.8:3D单点透视投影变换矩阵
2.3.4墨卡托投影 1)简述 墨卡托(Mercator)投影,又名”等角正轴圆柱投影”,荷兰地图学家墨卡托
(Gerhardus
Mercator)在1569年拟定,假设地球被围在一中空的圆柱里,其赤道
与圆柱相接触,然后再假想地球中心有一盏灯,把球面上的图形投影到圆柱体上, 再把圆柱体展丌,这就是一幅标准纬线为零的“墨卡托投影"绘制出的世界地图。参见图2.8。墨卡托投影没有角度变形,由每一点向各方向的长度比相等,它的经纬线都
是平行直线,且相交成直角,经线间隔相等,纬线间隔从标准纬线向两极逐渐增
大。墨卡托投影的地图上长度和面积变形明显,标准纬线无变形,从标准纬线向 两极变形增大,但因为它具有各个方向均等扩大的特性,保持了方向和相互位置 关系的正确。在地图上保持方向和角度的『F确是墨卡托投影的优点,墨卡托投影
地图常用作航海图和航空图,如果循着墨卡托投影图上两点问的直线航行,方向 不变可以一直到达目的地,因此它对船舰在航行中定位、确定航向都具有有利条 件,给航海者带来很大方便,适合用于导航地图。
芸尊 诧型●
图2―8:墨卡托般影示意图
2)墨卡托投影坐标与经纬度坐标转换 EarthPos是经纬度坐标,数据以经纬度坐标表示,
的坐标,是画图坐标。GlobalPos是墨卡托投影后
EarthPos{
double longitude://>=一180&&<=180 double latitude; //<=85.051129&&>=.85.051129
GlobalPos{
double posX;//>.司&&<_1 doubleposY;// >:o&&<_1
转换关系:
double double
posX=(10ngitude+1 80)/360; posY=0.5一Math.109(Math.tan((1atitude+90)幸Math.PI/360))/2/
Math.PI;
double double 360―90;
longitude=posX}360-Math.floor(posX)奉3 60―1 80; latitude=Math.atan(Math.exp((O.5一posY)事2幸Math.PI)1/Math.PI?
地图上对经纬度的计算,如角度,距离,点的删减,等等,都有必要先转换 成GlobalPos后再作计算。
2.4d,结
本章主要简要介绍了GPS、J2ME和计算机图形学3大方面的相关基础知识, 为接下来的系统设计和实现部分打下基础。首先,简要介绍了全球定位系统(GPS)的基本原理和应用,分析了GPS接 收器和手持设备之间的通讯协议格式,并重点介绍了事件驱动模式可能给应用程 序带来的效率提升。其次,介绍了J2ME运行时环境的特点。其最大的好处是程序是用java语言写 的,开发人员不需要学习新的语言,同时兼容性极高,一次编写,到此运行。同 时重点介绍了黑莓API的内容,并特别指出了在UI和持久层存储两个方面需要使 用黑莓API而不是标准J2ME,从而获得更好的用户体验,效率和安全性。最后,简要介绍了矢量地图和位图的区别,指出3D导航地图必须以矢量地 图的方式呈现,重点介绍了3D/2D坐标变换的基本知识,阐述了它们在地图处理 中的重要位置,同时说明了3D透视投影的概念以及其在3D导航地图实现过程中 的重要地位。最后简要介绍了导航地图常用的墨卡托投影的概念。
第3章基于黑莓第二代GPS导航需求分析与总体设计
本章首先给出项目的需求分析报告:接着讨论在黑莓手机平台开发此项目的 可行性分析;最后给出项目的总体设计,包括功能模块设计和系统架构设计。
3.1系统需求分析
1.地址输入:
用户可以方便地输入目的地地址。可以选择的输入方式包括键盘输入和语音
1.1键盘输入又可以分为全地址输入,城市名输入和交叉路输入。地址输入 指的是按照最详细的方式来输入地址,如输入门牌号,路名,城市名,州名或省 名,邮编,以及国家。由于输入信息较多,这样得到的地址是最精确的。示例见 图3.1;城市名输入相当于地址输入的简化版本,只需要输入城市名,州名或省 名以及国家名,但得到的是该城市中心点的地址。示例见图3.2;交叉路输入需 要同时输入两条交叉的道路名称(不需要门牌号),以及州名(省名)和国家代 码。示例见图3.3。另外,不同的国家或地区可能有不同的输入习惯,如美国可 以单独使用邮编来查询地址,而中国则不支持。
图3.1:全地址输入
图3-2:城市名糟队
图3.3:交叉路输入
1.2当用户选择语音输入时,软件自动接通免费客户服务电话号码,用户通 过电话使用语音输入地址,后台服务器将自动识别地址,如识别成功将地址推送
到手机端。
2.带语音提示的3D/2D移动导航地图2.1视觉界面需求:当用户驾车时,导航系统根据用户当前所在位置自动给 出用户导航所需要的信息,包括:当前所在街道名、下一拐弯位置、拐弯后到达 街道名、从当酊位置到拐弯处的距离、以及到达目的地距离。2.2听觉界面需求:在路上行驶时,驾车指令将被清晰地通过语音播报给用
户,并显示在屏幕上。
2.3导航地图需求:用户导航时,当前位置以及周边道路情况将以地图形式
被清楚地显示在屏幕上。用户可以选择3D/2D或者图标3种模式来显示导航界面。
2.4偏离路线后自动重新计算:如果用户不小心未能按照导航指令拐弯而导 致偏离原定路线,导航软件将根据当前位置重新计算路线并告知用户。3.地图浏览:用户有时候并不需要导航而直接以2D或3D模式浏览当前位置或某
指定位置的地图。地图又分为两种:静念地图和随行地图。3.1静态地图:定好地图显示初始中心点后,用户可以缩放以及向上下左右 四个方向拖动地图。
3.2随行地图:地图随用户位置改变而改变,地图中心点始终为当前位置。
用户可以缩放地图,也可以向上下左右四个方向拖动地图,但在一定时间内若用
户没有操作,地图中心点将自动回复到用户当前位置。
4.导航软件应能支持内置或外置(蓝牙)GPS接收器。
5.其它需求,如用户登录,兴趣点浏览,相对次要,将不再本文描述范围内。
3.2黑莓手机操作系统平台分析
从第三章我们了解到,黑莓手机操作系统是一个与传统的基于java的手机操 作系统J2ME兼容的操作系统,支持所有J2ME规范,同时又提供黑莓平台特有的
功能支持。3.2.1黑莓手机平台APl分析 用户界面方面,如第三章所述,黑莓手机支持两种不同类型的API
‘MIDP UI APIs(javax.microedition.1cdui package)
’BlackBerry UI APIs(net.rim.device.api.ui
packages)
使用MIDP
UI API的是标准MIDP应用程序,将只适用CLDC和MIDP,得到 UI
的好处是它也能在其它J2ME设备上运行;使用BlackBerry
API的是黑莓定制应
用程序,在该组API中充分利用了黑莓手机都有的用户界面设计,从而使用户得 到更好的体验。黑莓智能手机的外观与标准J2ME手机是有较大区别的。一个典型的J2ME手
机如3.4所示,屏幕下方左右各有一个命令按钮,而典型RIM BlackBerry手机如3.5 所示,最大的区别在于屏幕右侧有一个滚轮和一个后退键。由于这些差异,虽然
令按钮将被映射为菜单。因此,BlackB矾供了一套独立的甩户界面API,用
于支持滚轮等输入设备。
BlackBerry'ljIl能运行标准J2ME应用程序,但是效果是不好的,因为左右命
GPS方面,黑莓平台提供了两种GPS支持:内置GPS(E口JSRl79)以及蓝牙
G;PS(即JSR82)。
内置GPS使用了标准J2ME中的jaVax.microedition.10cation'包。
蓝牙GPS使用了黑莓API@特有的net.rim.device..api.bluetooth包,它使黑莓应 用程序能够通过蓝牙串行接IZI和其它蓝牙无线设备包括蓝牙GPS接收器进行通
k嬲蕊胧娩嫩德黝懑愿黝搦澄瀚蕊誊豸!溯霞翻
F_i)e
j爱辅i 。鼍
!v,1 t‘‘,’!
:lf=I|ll lIlI
三 ?了订'
订订mm曩?I
m【●lI
L二 IjLYLt.J
‘I?■、111I】【Z101Iff≯'’【酊● 覆娟
麓翳霪葱。
剖鬻够≥一““。“_:}}『。鬻;’囊荔j荔戳
。’。S热
&…………。~。,~…。煳㈣。。。墨..d盔
b。越盆盆彘&越 S
”≯MS}J}tl一。l
。缀谴-漱《&。‰。,。
7%黼≮磐嚼讳粕■缉,I窜t…。M_。群w
!翳-鬈。
z穗鼢一-1'
网:鏊陡k要0洲晨渊 l
揍赫一w”―磐。。,盈l
《i薅拼j-
?I,黯1 }r
k*’r。颤
一=j。舅 融蕊麓删
图3-5:黑莓8700c手机示意图(带滚轮) 另外,RIM BlackBerry平台提供了一套独有的数据持久层(位于
net.rim.device.api.util包中),使用这套API而不是标准J2ME的Record Store(位 于javax.microedition.rms包中)能使应用程序拥有更高的安全性以及更快的速度。更高的安全性体现在不同应用程序使用互相隔离的数据持久层,从而数据更加安 全,这点对于企业级或高级个人应用就显得尤为重要。音频方面,标准的J2ME iavax.microedition.media包提供了较好的支持。我们 比较了几种音频格式,最后选定了AMR音频格式,它是JSRl35标准格式之一, 具有文件尺寸小的特点 (这点非常重要,因为导航时会有音频流实时从服务器
端发送到手机端进行播放。)
网络方面,标准的J2ME iavax.microedition.io包提供了较好的支持。
3.2.2基于黑莓手机的3D GPS导航软件可行性 用户界面方面,通过对黑莓丌发工具包自带的实例程序对BlackBerry
UI API
在8700c型号的黑莓手机上进行了测试(8700c是我们计划采用的最低性能的手
机),并与成熟的已经为之开发GPS导航应用的J2ME手机比较,用户界面性能相 当或更优,证明在黑莓手机上开发高级用户界面应用完全是可行的。GPS方面,在8700c手机上编写GPS澳,O试程序,与成熟的已经为之开发GPS 导航应用的J2ME手机比较,GPS性能相当或更优,证明在黑莓手机上开发GPS 应用完全是可行的。持久层性能方面,性能测试表明,使用黑莓独有数据持久层APIfl皂得到比标
准J2ME更快的存取速度。音频方面,功能测试和性能测试也表明完全能满足导航应用的需要。
网络方面,与成熟的已经为之开发GPS导航应用的J2ME手机比较,网络性 能相当或更优。综上所述,在黑莓手机平台上丌发3D GPS导航应用具有较高的可行性。
3.3I:j能模块设计
根据系统需求分析,本系统应该包含如下功能模块:地址输入,导航,GPS 信号管理,地图浏览。如图3.6所示。
图3―6:功能模块结构图
?地址输入模块包括如下功能模块:键盘输入和语音输入,其中键盘输入 有可以分为全地址输入、城市名输入以及交叉路输入。
导航模块包括如下功能模块:视觉界面、听觉界面、导航地图以及偏离
路线后自动重新计算。
?地图浏览模块包括如下功能模块:静态地图和随行地图。?GPS信号管理模块包括如下功能模块:内置GPS和外置(蓝牙)GPS。
3.4系统架构设计
首先,基于手机的的GPS导航软件是客户端.服务器架构,在客户端(手机) 上只保留了较少的数据,导航等关键服务所需要的数据都来自服务器端。除了客
户端层和服务器层,还有提供数据服务的数据存储层,导航等关键服务所需要的 数据都直接或间接(经过服务器计算)来自数据存储层。参见图3.7。
图3.7:导舷款件系统架构图
黑莓手机客户端软件使用HTrP协议通过无线网络连接到导航代理服务器, 该服务器的主要功能是作为一个集中式服务器来为所有手机客户端提供导航以
及鉴权的服务,所有其它具有具体职能的服务器均不直接与手机通讯。主要职能 服务器包括地图服务器,提供所有地图相关服务;求路服务器,提供求路服务; 以及用户兴趣点服务器,提供商户,餐馆等兴趣点信息。最后端为数据库服务器,
提供数据存取服务。由于篇幅有限,本文将只描述客户端软件的设计与实现。
3.5小结
本章首先描述了项目的关键需求,其中导航模块是重点中的重点;接着分析 了黑莓手机平台的特性并作出了可行性分析;然后从系统设计角度对模块进行了
划分;最后从系统架构角度描述了客户端软件与服务器软件的关系。
第4章基于黑莓第二代GPS导航系统详细设计
上一章给出了系统的需求分析以及高层次的概要设计,本章承接上一章继续
深入讨论了每一功能模块的重要设计细节。
4.1地址输入详细设计
所有地址输入方式的相同之处是通过它们输入的信息最终都被地址识别服 务器解析成真正的地址(包含经纬度信息)并返回给客户端,不同之处在于输入 信息的详细程度有所不同。一般来说(以美国为例),地址识别服务器需要的输 入信息为:街道名1(可包含门牌号码)、街道名2(可为空,若非空则表示用于 交叉路查询)、城市名称、州名、邮编以及国家。其中,城市名输入的方式实际
上是全地址输入的一种快捷方式。对于不同国家的地址输入习惯不同的问题,专门设计了“地址输入模板”的 数据结构。对于系统支持的任一语言+国家组合,在服务器端部署一个对应的模
板,不同国家的模板可能是不同的,如美国可以输入邮编,而中国则不需要。用
户可以在客户端改变界面的语言,每次保存这个改变时需要从服务器端下载对应 语言下所有国家的地址输入模板。在地址输入界面中,用户改变国家时,将根据
该国家对应的模板重新绘制地址输入界面。参见图4.1。在地址输入中有一个需求是某些输入域之间可能具有互斥的关系,例如对美 国地址,城市+州名与邮编是互斥关系,即要么输入城市+州名,要么输入邮编。在地址输入模板里定义了输入域互斥的关系,如上述互斥关系可以在模板中表示 为(城市,州名)<->(邮编),客户端根据模板提供的信息进行解析并实现该 互斥关系。语音地址输入的本质和键盘输入是一样的,只不过是通过语音识别技术获得 相同的信息。由于本文主要关注客户端技术,这里不展丌描述。
图4-1:地址输^模版示意图
4.2导航详细设计
开始导航之前,客户端需要传递如下信息给服务器端:
目标地址(包括经纬度)
?求路偏好(如最快,最短,避丌收费站,等) ●当前位置(包括经纬度) 服务器端进行运算后将路线信息返回给客户端。4.2.1导航算法设计 导航丌始后,将专门有一个线程进行导航运算,每隔2.5秒检查用户当前位 置和其它信息(速度,方向等),并与路线信息进行贴合比较,同时更新导航界 面。单次导航的过程如下1.获取当fi;JGPS位置信息 2.进行偏移量调整计算:使用速度以及GPS点时间戳和当前时间的差值对
当首f.fGPS位置信息沿路线方向进行调整得到用户实际位置信息。。’
3.测试用户是否偏离路线
a)对于路线中的所有路段与用户实际位置信息进行贴合比较,若用户 实际位置对所有路段的垂直距离均超过一定阈值,则表示贴合失败,
用户已经偏离路线。
b1为防止偶然偏离,只有当连续3次导航循环都检查出当前位置偏离路 线,才真J下视为偏离路线,同时终止导航
4.将导航状态通知给应用层。应用层将会:
曲更新导航视觉界面,如剩余路程,下一导航指令(左拐、右拐、直
行,等)等。b)更新听觉界面:播报相应导航指令音频,如“先前直行500米右拐到 人民路’’。4.2.2导航地图详细设计 为显示地图,客户端按一定时间间隔向服务器请求当前位置周围的地图数 据在导航地图中,车辆的和位置和方向是随时在改变的,所以如果采用位图方 式来描绘的话基本上是不可能的(那样的话需要服务器端不断发送新的导航地图
到客户端)。要实现导航的效果必须使用矢量图。
实现3D导航地图的主要流程为1.客户端根据当前经纬度,缩放比例(以确定图层)和屏幕坐标确定需要 的块的索引。
2.客户端检查所需矢量数据块是否已经存在于本地缓冲中了。如果不存在,
则向服务器发出请求。3.服务器端发回对应2D矢量数据块。
4.客户端根据用户当前位置、车辆行进方向以及用户指定的放大倍数对数
据进行2D变换。
5.客户端对数据进行3D坐标变换(主要是旋转)。6.客户端对数据进行单点透视变换,得到对应实际屏幕的2D数据。
7.最后在屏幕上绘制各矢量对象并填充着色。这个过程在导航过程中不断进行着,于是用户就看见了3D导航地图的效果。详细流程请参看图4.2。
图4―2:3D导航地图基本处理流程
1)3D地图分层和切块 在服务器端采用类似Google Map的地图分层和分块处理:地图是等分分层, 相邻层是两倍的关系。在每一层上由都切分成多个位图块和矢量地图块,位图块
是256像素*256像素的图片(用于静念地图显示的位图);矢量地图块则包括矢量
数据(用于3D/2D导航地图)。具体说, 在顶层,是一张256像素*256像素的位图块和矢量地图块。
下一层,边长X2,图片数X4,矢量地图块X4。
第N层,边长为N.1层边长数X2,图片数为N.1层图片数X4,矢量地图块数
为N.1层矢量地图块数X4。
到可见的街道级试图,是第17层块,一共是18层块。
这里可以得出在某一层(n)的边长上位图块或矢量地图块数:
edgeNum=Math.pow(2,1 7-n);
如果有_个经纬度,比如(40.689240..74.044570),
计算在第3层所在的块位置。
EarthPos ePos=new GlobalPos
EarthPos(?74.044570,40.689240);
g/'os=ePos.convert2GlobalPos0;
//gpos=(0.29432063888888893,0.37606712260001934)
int int int
edgeLen=Math.pow(2,17-3)=16384; tileX=(int)(1 6384宰0.29432063888888893)=4822; tileY=(int)(16384}0.37606712260001934)=6161;
所以这个Tile的索引就是[4822 2)矢量地图块数据2D变换
客户端得到相应的矢量地图块之后,需要对它们进行2D变换。矢量地图数 据的坐标是经纬度坐标,先要把它们按照转换为世界坐标系,然后再平移到坐标 原点,进行缩放和旋转转换,再次平移到相应位置。3)3D变换
这项操作是为了实现俯瞰的效果。原始矢量地图数据其实是2D的,加上绕X
轴进行的一定角度(一般为45度)的旋转之后就变成T3D数据。
4)3D透视投影变换
先将上步输出的3D数据向屏幕朝早方向平移一定距离,然后做单点透视投 影(单点设在Z轴屏幕朝外某处)得到在XY平面上的2D地图数据。5)3D地图绘制
最后一步是以矢量对象为单位按照屏幕可视范围进行多边形剪裁,以及按照 对象类型进行颜色填充,如公园为绿色,水为蓝色,等等。
4.3地图浏览详细设计
地图浏览中的地图显示技术本质上和导航地图是一样的。
静态地图相对比较简单。首先定好地图中心点初始位置,按照初始放大倍数 向服务器端请求地图数据,接收到地图数据后绘制到屏幕上。如上节所示,地图
数据是分层和分块处理的,不同的放大级数相当于不同的层,而同一层上的地图 按全世界范围分成相同大小的块(如果是位图,为256*256大小)。同时应用程序
设有一定大小的地图缓存,已经接收到的地图将存放到缓存中去,对于已经存在
于缓存中的地图块将不会向服务器再次请求。当用户缩放地图的时候,计算当前 屏幕对应的地图层号和块号,并向服务器请求(如不在缓存中>。拖动地图的处 理类似:每次拖动后根据新的位置计算是否需要请求新的地图块。
图4.3:地图浏览模块基本处理流程
随行地图则可以看成是导航地图的另一种更简单的表现形式:使用一个线程
循坏定时(如每2秒钟)检查当前用户位置,计算当前屏幕对应的地图层号和块
号,并向服务器请求(如不在缓存中)。与导航地图的主要区别在于这里没有路 线信息,也没有偏离路线之说。对于地图缩放和拖动与静态地图类似。拖动时, 如果在一定时间内若用户没有操作,地图中心点将自动回复到用户当前位置。参见图4.3。
4.4GPS信号管理详细设计
目前BlackBe玎y平台支持两种GPS:内置和外置(蓝牙),将来还可能支持其 它种类。GPS模块之外的应用层并不关心也不应该关,t二'GPS的细节,而只需要知 道如何获取GPS信息,以及如何启动和停止GPS(有时我们需要主动停止GPS以 节省用电量)。因此,需要给GPS模块增加一个对外的接口,如下所示:
public interface IGpsSource
public static final int GPS BLUETOOTH public static final int GPS JSRl 79
=1://外置蓝牙GPS =2://内置GPS
●Get the GPS data out ofthe GPS
sogrce.
幸@param
numFixes number of fixes we of GPSData
want【1….”,may
not get many.
木@return Vector
fixes(if is
one,it will contain only
item)
public Vector public
getFixes(int numFixes);
boolean isStarted0; getSourceO; start(); stop(); setSource(int source)throws Exception;
public int
public void public void public void
同时创建一个抽象类来实现此接口,.并提供某些通用实现:
abstract class GpsReader implements IGpsSource
public int
getFixes(int numFixes,IGpsData[】data)
public void
startO
public void
stopO
对于两种不同类型的GPS来说,分别继承上述抽象类,并重载相应方法即可。最后提供一个工厂类并应用单例设计模式给应用层以方便地得到不同GPS 源:
class GpsFactory implements IGpsFactory
protected IGpsSource gpsSource;
protected Object instanceMutex=new Object();
public IGpsSource
createGpsSource(int sourceType)
if(this.gpsSource―null)
{ synchronized(instanceMutex) { if(this.gpsSource==null) { if(this.gpsSource==nulll
this.gpsSource=new JSR 1 79GpsReader0; else
this.gpsSource=new
RimPushBlueToothGpsReaderO;
return gpsSource;
综上所述,GPS模块UML静态结构图参见图4.4。
[甲唧sFactnry]
图4-4:GPS模块UML静态结构图
4.5增强的系统安全性设计
在第一代产品的设计中,对系统安全性的考虑比较少,部分原因是故意简化 设计以培养用户群,“鼓励”用户一号多用的情况。具体来}兑,任何付费用户可
以将其帐号信息共享给其他任何人同时使用导航等服务,这样用户群就能较快增
长。但这样做的坏处也是显而易见的:最主要是财政上的损失,对于所有共享同 一帐号的用户只能收到一份钱。另外随着用户数量的增加,以及统计方面的需要 (同一帐号只能被统计为一个用户),反欺诈的问题就被提上同程。为解决这个问题,第二代产品充分利用了客户端.服务器架构的优势,在服 务器端进行用户认证。具体来说,用户首次使用时需要输入手机号码和密码(在
■―!竺竺竺―一。
搬务请求(细铮靛。蝰黟;带经跬丢^l;
》燃陬勰过 r‘…“‘一“‘
II…蜊》
雅务谪裳(如垮襄;【。她鞠.锈蕊嫒话玛j
:―、、携女c识”姊一赣 一擞 一 -.―一一7
》铋=t鲫凇燃
:‘、馋j:鳓垤铅嚏磁
-..一/1~
:二:=>诌求扣随墩铬羽魁。搏攥毋零凝箩饿
搬务谤求(鲰蟹鞔。地躅。蘩警杌蜡曩15秘竣诞簪;)
瑕嚣涎鞠赣镶}鬣黟盼i彤霹
p躺脯溯酬燃凝
L―一_/“1”8””驰叼%仉隈
黢铬诸嘏t撅译翻.嬲餮.菊每规毋弼麓话%}:玛)
I I 篓‘肇强务
1.―――――――――――――――――――――――――――――1
p船张昝黝㈣删
1.―一一,,%'“’RHMⅢ肫M聪仉粼
p貅托燃绷奢
图4.6:用户权限设计时序图
4.6一套代码支持所有黑莓手机
源代码重复,即不同型号的黑莓手机对应一个单独的代码库的问题,是有历 史原因的。在丌发第一代产品的时候,黑莓手机的型号还比较少,产品丌发进度 也比较紧张,开发人员对黑莓API的了解程度也比较低,因此很多不同型号的代
码库之间的代码共享只是源代码级别的,也就是拷贝、粘贴代码。这个问题是比
较明显的,因为随着手机型号越来越多,需要维护的代码库也越来越多,要修复 一个缺陷,往往需要同时更改多个代码库。
不同型号的黑莓手机彼此间或多或少有些差异,参见表4.1。
1.键盘类型
企业集团用户是黑莓的主要用户群,对他们来i兑email是最重要的功能。Qwerty全键盘类似于PC键盘,非常适合经常使用手机收发email的用户。近年来RIM也丌始大力发展个人消费市场,带压缩键盘(类似于大多数手机, 同一个键被1个数字和多个英文字母共享)的黑莓手机就是为了迎合这一市场的 需要而推出的。
设计目标:1.同一套代码库能够同时支持上述两种键盘,2.因为手机程序
大小的关系(iar size),程序执行代码中小能包含小需要的键盘类型;3.能够在
将来比较容易地支持更多的键盘类型。
表4-1:不同黑莓手机差异性列表 差异属性 键盘类型 差异值 Qwerty全:键盘 机型 8700系列;7520,7250;8800系列;8300 系列 压缩键盘 其它外设 滚轮(traekwheel) 7100系列;7130e;71309;8100系列 7100系列:7520,7250;8700系列;7130e;
71309
跟踪球(trackball) 屏幕尺寸
320*240 240*260 240*160
8800系列;8100系列;8300系列 8700系列;8800系列;;8300系列 7100系列;7130e;71309
7520;7250
JSR 135AMR
8800系列;8100系列;8700系列;8300系列
7130e; 7100i;71009;7520,7250; 8703;8800;83 10;7130e;7520
GPS类型
内置(JSRl79)+ 外置(蓝牙) 外置(蓝牙)
所有剩下的
2.其它外设
2006年以前几乎所有的黑莓手机的右手边侧面都带有一个滚轮(trackwheel), 但是随着2006年黑莓Pearl(aH81009)推出,一种新的点击外设出现了,也就是跟 踪球(trackball)。这两种外设最大的不同是滚轮只有上下两个方向,而跟踪球是 上下左右4个方向。’ 设计目标:1.同一套代码库必须同时支持两种外设2.因为手机程序大小的 关系(jar size),程序执行代码中不能包含相应其它外设的代码;3.能够在将来 比较容易地支持更多的点击设备。
3.屏幕尺寸
大多数厂家都推出不同尺寸屏幕的手机,以满足市场上用户需求的多样性。黑莓也不例外。不同尺寸屏幕手机需要的图片资源的尺寸也要与之匹配。比如程序启动时的
欢迎画面就需要对应尺寸。另外,同一个画面的uI规格就可能不同,如导航界
设计目标:1.不同UI规格的屏幕的代码要能自动调整屏幕布局以满足需求。2.能够在将来比较容易地支持更多的屏幕尺寸。
4.音频格式
老式的黑莓手机支持VII暗频文件格式,这种格式文件比较大。个别手机支
持mp3格式的音频格式;最新的音频格式是JSRl35锄格式。这3种音频格式的
播放API都不尽相同。
另外除小部分音频文件是安装在手机上,其它音频资源都是动态从服务器下
载的,如导航指令,街道名。
设计目标:1.同一套代码库必须同时包含所有音频播放代码;2.因为手机
程序大小的关系(jar size),程序执行代码中不能包含其它格式的音频资源,且
只包含播放本音频资源的代码;3.能够在将来比较容易地支持更多的音频格式。
5.GPS类型
基本上所有黑莓手机都支持蓝牙(JSR82),而有一部分手机还内置GPS接收器 (JSRl79)。设计目标:1.同一套代码库必须同时包含两种GPS代码;2.因为手机程序 大小的关系(iar size),如果手机只支持其中一种GPS,则程序执行代码中不能 包含其它种类的GPS代码。3.能够在将来比较容易地支持更多的读取GPS信号的 方式。
6.解决一套代码支持所有黑莓手机的设计
1)工厂设计模式的应用
从上述分析来看,几乎所有差异都有一个相同的要求,即为了程序尺寸的考
虑,不要包含不相关的代码。对于同一差别属性(如音频播放器),其不同形式 是具有相同的一组接口的(如,无论vnf,还是mp3,还是isrl35 amr,它们都可以
提炼出一个共用的接口,即播放),由此,可以考虑使用工厂设计模式来处理这 种多样性一让工厂根据该手机支持的音频类型来决定到底要使用哪一种音频播
放器。首先,对于每一类差异(如音频播放),定义出一个抽象类来描述所有此类
差异属性具有的共同特性:
public abstract class
AudioPlayer0
public abstract void
play(byte[】data);
||…other methods
而对于该差异的每一个差异属性,则定义一个继承上述抽象类的子类,实现 其中的抽象方法。下面仍然以音频播放差异属性为例示例说明:
public abstract class VnfAudioPlayer0 extends AudioPlayer
public void
play(byte[】data)
//code to play vnf audio stream
public abstract class Jsrl 35AudioPlayer()extends AudioPlayer
public void
play(byte[】data)
//code to
playjsrl35
audio stream
然后再生成一个工厂类取代构造函数的作用:
public class
AudioPlayerFactory0.
public AudioPlayer
createAudioPlayer0
{ //检查当前手机所具体支持的差异属性值(从配置文件读取音频类 型) if(类型是vn0
retum
VnfAudioPlayer0;
if(类型是amr)
rgtum new Jsrl 35AudioPlayer0;
在运行时,从工厂类得到需要的正确的音频播放器并播放。
AudioPlayer player=AudioPlayerFactory.ereateAudioPlayer0;
player.play(…);‘
2)动态加载需要的类 工厂模式解决了代码统一的问题,应用层代码是一致的,无需修改,差异代 码被放到不同的实现类中去了。然而,另外一个设计目标仍然没有达到,即为了
程序尺寸的考虑,不要包含不相关的代码。例如,8800手机使用的商srl35 amr
音频,那么最终发布二进制代码中就不能包含其它的音频播放代码,以减少程序 尺寸。这是因为在工厂类中,显示指定了所有实现类的名字,如下if(类型是vnO
retum new VnfAudioPlayer0;
if(类型是aiilr)
return new Jsrl35AudioPlayer0;
因此,其它不相关代码在使用了工厂方法后还没有被去掉。为此,iJl A.Class.forName(String className).newlnstance0方法在运行时动态
载入需要的实现类:
public class
AudioPlayerFactory0
public AudioPlayer createAudioPlayer0
{ //检查当前手机所具体支持的差异属性值(从配置文件读取音频类
型) if(类型是vnf)
return
Class.forName(“VnfAudioPlayer'’、.newlnstance0;
if(类型是amr)
return
Class.forName(“Jsrl 35AudioPlayer”1.newlnstance0;
经过这步处理,不相关的音频处理代码实现类就可以在编译之前去除了。
4.73D
GPS导航软件关键技术
根据客户端的功能需求和黑莓手机丌发库使用的约束条件,采用以下的设计 技术是导航软件实现所必须的。
1.工厂模式的应用:从上述同一代码库支持所有黑莓手机类型的设计中可
以看出,工厂设计模式起到了关键作用。2.多线程技术的应用:对于手机上的应用来说,导航软件是一个较为庞大 的应用,使用到了手机上几乎所有高级的API,多线程就是其中之一。要实现一 个具有友好界面的应用,必须使用多线程技术。主要的应用多线程的地方包括一、导航界面的实现。导航过程本身是一个在后台不断运行的线程,它需要不断 读取GPS点,计算当前在路线上的位置并刷新用户界面模块。用户界面模块在处 理进度条的时候必须一面在前台线程显示进度,另一方面在后台进行实际的运 算。二,地图模块中,主线程用于响应用户操作,如放大,缩小,移动等操作。由于用户界面请求必须及时响应,不能把从服务器获取地图数据以及地图绘制等 较重的工作放到主线程,而必须使用一个工作线程。
4.8小结
本章是全文的重点,讲述了如何在黑莓手机平台实现最新一代GPS导航系统 的设计思路以及关键技术。对于由于历史原因而造成的源代码库维护问题,本文 提出了以工厂设计模式为主的解决方案,在实践中得到了良好的效果。对于关键的3D导航地图的设计,本章概述了如何应用计算机图形学相关知 识,特别是2D/3D坐标变换、3D透视投影变换的方式把存储在服务器端的地图数 据用3D的形式表现出来。最后,对于安全性的问题,本章详细介绍了反用户欺诈的设计,以及对于用 户鉴权方面的改进。
第5章基于黑莓第二代GPS导航系统的实现以及性能调整
本章主要介绍了对黑莓第二代GPS导航系统设计的程序实现过程,并在程序 的设计过程中依据提高系统运行效率的原则,提出程序优化方案。
5.1地址输入模块实现
该模块的核心在于地址输入模版的实现。在服务器端以xML文件方式存放:
<?xml version=”1.0”encoding=”UTF.8”standalone=”rio”?>
template v戗-sion=”1.0”>
<locale nalne=”e11
US”>//语言l一美国英语 / >meti.国美一版模的l家国
<template
<iso country code key=”if’>US</iso country code>
<!―other 6elds….->
</template_item>
<template_item>//国家2的模版一加拿大
<isocountry_code key=”i”>CA</iso__country_code> <!―other fields…一>
</templateitem> <template_itern>//国家n的模版一墨西哥
<iso_country_eode key=”i”>MX</iso_country_code)
<!叫ther fields…..>
</template_item>
</locale>
<locale
name=”en―US”>//语言n一英国国英语
<template_item>//国家1的模版一美国
<iso_country_code key=”ift>US</iso_country_code>
<!川ther fields…..>
</template_item>
<templateitern>//国家2的模版一加拿大
<iso_country_code key=”if.>CA</iso_country_code>
<!咖ther fields….->
</template_item>
<template_itern>//国家n的模版一墨西哥
<iso country_code key=”i”>MX</iso_country_code>
<!―_otllel"fields…一>
</template_item

我要回帖

更多关于 我的世界服务器客户端 的文章

 

随机推荐