引言
随着Android平台的智能终端走进了越来越多人的生活,基于位置服务(LBS)无疑是移动业务领域的一个重要组成部分。随着世界经济的发展,我们逐渐生活在一个高楼大厦和如蜘蛛网般道路所建立的“水泥森林”当中,在这“水泥森林”里要面临大量标志和规则在一个陌生的城市或城市的陌生街道里,即使知道目的地的位置,也会被大量的道路标志和规则所搅乱,能否有一种方法来随时导引我们向正确的方向前进呢?为了方便外出,少花时间找路、问人以及更及时地关注物流相关动态,研究基于Android系统移动终端的导航定位技术就有了很好的应用前景。
当前基于位置服务的发展方向正趋向于个性化和本地化,不同的人群对基于位置的服务的功能和性能等方面都有不同的需求。目前提供导航服务的系统只是人与物或者物与物之间的导航,对于日常生活中两个或者多个好友在一个陌生的城市,因为不熟悉彼此找不到或者容易走错路导致不能见面,以及动态了解物流动态所在的位置的相关软件还没有出现,本文基于Android平台结合百度Map API相关功能设计实现一款移动导航定位服务系统,从而为用户提供功能更加方便、界面更加友好的移动导航定位服务。
1 系统设计方案
本文采用典型的C/S设计模式即客户端和服务器结构,提出了一种更轻巧、简便的系统设计方案,如图1所示。客户端安装相应的应用软件,远程服务器存储数据,客户端向服务器请求服务,服务器向客户端提供服务。以电子地图为基础,集成用户位置需求,综合利用无线通信网络(TD—SCDMA/LTE)、有线网络的优势,实现多方用户移动导航定位。
利用百度Map API技术构建位置服务系统,通过采用服务器、数据服务器、客户端三层结构来设计。客户端主要实现的功能包括地图基本功能操作,包括加载地图、浏览地图、地图缩放、POI查询及移动导航定位地图显示。服务器用主要于处理客户端注册、验证登陆、服务查询请求并响应,利用Map API将移动位置地理信息显示地图上。数据服务器主要被服务器存取用户信息和各种空间数据。该系统运行稳定,成本低,具有理论的可行性和实际的可用性。
2 关键技术研究
2.1 Android平台及应用开发
Android是一个由Linux+Java构成的移动设备软件框架,它包括一个操作系统、中间件和一些关键应用。采用了分层的架构,如图2所示。从架构图看,Android分为4层,分别是应用程序层、应用程序框架层、系统运行库层和Linux核心层,具有平台标准化、用户可定制以及服务免费等特色。
Android程序的载体是各个应用程序包,而程序运行的主体是各种“组件”。从应用程序的角度,各个组件对外的联系是程序处理的一个关键问题,组件接口包括与用户的接口和与其他包的接口两部分内容。Android的应用程序是用Java语言开发的,其编程语言完全开源免费,基于此平台,对此系统进行开发设计。
2.2 GPS定位技术
移动终端的定位是通过检测移动终端和基站之间传播信号的特征参数来获取几何位置,再根据移动终端定位进行定位估计位置。GPS全球定位系统是由美国国防部在20世纪70年代开始联合研制的新型卫星导航系统,由24颗定位卫星组成,所有卫星分布比较独特,轨道高,兼具测时和测距的功能。GPS全球定位系统实现了全球覆盖,各种气象条件下的全天候工作,定位精度高,定位导航可实时连续。定位卫星的这种分布便于需要导航的设备在全球的任意地点、任意时间都可同时观测到4颗以上的通信卫星,并能保持良好的定位解算精度。今天的智能手机平台大多都配备了全功能的GPS接收机及配套应用,根据高速运动的卫星瞬间位置作为已知的数据,采用空间距离后方交会的方法,确定待测点的准确位置。
2.3 百度地图API
百度地图API针对移动终端特别开发出百度地图移动版API,百度移动地图API是基于移动互联网设备的应用程序接口,支持Android平台。与此同时,移动地图免费对外开放地图SDK和定位SDK API,若需要在同一个工程中同时使用地图SDK和定位SDK,需先申请同一个key,接口使用无次数限制。
地图SDK是一套基于Android平台的应用程序接口,可以使用该套SDK开发适用于Android系统移动设备的地图应用,通过调用地图SDK接口,可以轻松访问百度移动地图服务和数据,构建功能丰富、交互性强的地图类应用程序。同时百度移动地图定位SDK是一个提供基础定位API的第三方平台,为各类应用提供定位能力,提升用户体验。通过移动地图API,用户可以再移动终端上便捷、轻松、准确地访问百度地图服务和数据。地图定位原理如图3所示。
百度移动地图采用GPS、基站、Wi—Fi信号进行定位。当应用程序向SDK发起服务请求时,SDK会根据应用的客观因素(GPS、基站、Wi—Fi信号)的实际情况(如是否开启GPS、是否连接网络、是否有信号等)来生成相应地理信息依据进行响应。
3 系统的功能设计
本文的研究目的是实现好友共享地理信息的移动导航定位系统,通过后台的推送服务,更新并发送给其好友,并在客户端上通过百度Map上显示出来。只要用一个账号和密码登陆,使用者就匹配数据库相关数据就可以加载好友列表,并进行位置共享进而实现移动导航功能,系统整体功能架构如图4所示。
3.1 客户端功能设计
系统客户端模块包括数据接收模块、登录模块、注册模块、定位模块和移动导航模块,客户端设计架构图如图5所示。代码实现语言采用Java,IDE是Eclipse,数据库是MySQL,Android开发工具是android-sdk-windows。
当用户登录客户端经过GPS模块接收位置信息模块,并存储在数据库里,通过DataProcess处理线程进行处理,最后通过DataProcess发送广播给UI界面Activity,Activity根据当前的状态判断是否要马上更新地图信息。
在客户端,图层显示包括地图静态图层、Poi图层、天气图层、移动导航图层。地图图层是展示的是平面地理信息图层;PCI图层展示的是兴趣点搜索结果信息图层;移动导航图层展示的是当前在线所有允许分享位置好友经纬度位置信息及最优路径。
3.2 服务器功能设计
服务器负责接受用户的登陆、注册请求,并推送好友相关的信息,其主要功能包括用户上线处理、下线处理、更新地理位置信息、获取位置信息天气、用户会话、好友移动导航、添加好友,删除好友等功能。
用户上线处理:用户请求登录,得到用户所有信息,并让所有在线好友得到上线通知。
更新地理位置信息:当前用户的地理位置信息发生改变时,通过终端GPS获取当前位置信息,并通过地图数据库实时显示在地图上。
好友移动导航:将允许可见实时在线用户信息的当前位置经纬度按照“用户账号--位置经纬度”一对一结构格式返回至客户端地图上,并根据路径规划算法实时移动导航。
添加好友:根据用户账号发送好友请求时,同意为好友则显示在对方好友列表里,可以进行会话和移动导航。
删除好友:用户选择删除好友后,该好友马上在我的好友列表上消失,会话和移动导航功能同时删除。
3.3 数据库设计
数据库设计是指在给定的应用环境下提供最优的数据模型,采用基于逻辑设计与物理设计相结合的方式抽象应用和数据,从而建立数据库应用系统,有效地存储相关数据,满足用户的应用实际需求。由于MySQL支持开源、多用户、多线程以及成本低、速度快、体积小等优势,而移动导航定位系统应为实时性要求高,故本系统采用MySQL数据库系统。
该系统的数据库主要是为了用户信息以及相应地理位置信息,包括登录用户账号、用户名、登陆密码,经纬度等,在用户信息表中存储信息如表1所列。
4 功能性测试
在无线通信网络或Wi—Fi环境下利用Android平台的智能终端GPS模块获取地理信息,在Android SDK2.3模拟器下完成主要功能功能性测试。登录界面如图6所示,定位界面如图7所示,移动导航界面如图8所示,经分析,用户登录验证、定位功能、移动导航定位等功能均满足预期设计。
结语
本文在对Android平台应用系统特点、GPS定位技术、百度Map API等关键技术研究的基础上,提出一种移动导航定位新的应用场景,设计了基于Android平台的移动导航定位系统,能够较好地提供用户定位、移动导航定位等服务。在对移动导航定位系统新的应用场景研究及其他平台的移动导航定位系统研究与设计提供重要的参考价值,将Map API有效地与定位技术相结合将有很好的应用前景。