关于百度地图SDK的andriod开发的定位功能实现

基于Android Studio的汽车定位追踪系统的设计

摘要:随着经济的发展和汽车化时代的到来,人们对于车辆的服务的智能化,便捷化提出了更高的要求。文章主要研究通过软件编写一个汽车定位追踪系统,并利用汽车定位追踪系统对定位信息进行数据处理分析,再将分析的数据可视化直观的通过手机APP展现给车主实现车与人的交互,达到提供智能便捷的服务的目的。

1、引言

当代机动车保有量延续增加,车辆被盗的案件在世界各个地方都时有发生,并且正在逐年的增加。随着汽车被偷辆数越来越多,人们对于定位追踪车辆的需求越来越大。
中国近几年汽车发展迅速崛起,随着汽车技术的发展,随之带来的汽车被偷事件也变得比以前更加严重了。据统计显示,仅是深圳市一年被盗车辆高达上千辆,美国在一年之中被盗车辆甚至高达一百万辆,其被盗的速率是每秒0.36辆。现今随着汽车的数量逐步增多,汽车被盗案件也变得越来越多了,目前对于被盗车辆定位追踪问题也成为了较大难题。汽车被盗案件频频产生、高续不下,对于失窃车辆的找回的需求日益增加。对于被盗车辆的找回需求日益增长现状,如何处理该事件也变地更加重要了,所以汽车定位追踪装置成为了非常重要的部件。当下,对自己的汽车进行实时定位监测已经是一个急需去处理的问题,所以汽车定位追踪已经成为了一项很重要的研究。

1.1、定位软件的发展现状

现如今,市场上面存在着许多的汽车定位追踪软件,他们都是一些小众化的产品,例如:欧创GPS定位器手机客户端 、途骏APP 、途强gps定位器软件 、攀西gps客户端(车辆定位) 、爱查车app(汽车定位) 、平安神gps定位跟踪器、mankiw曼昆定位器 、摩羯星gps客户端(机动车防盗) 、爱车生活gps定位系统 、汽车在线GPS定位手机客户端 、上海英迪gps监控平台(车辆定位) 、lkgps跟踪器 、GPS查车app 、金慧眼gps监控平台 、马良车辆监控系统app(总平台) 、gps爱车定位app 、伴车安(GPS定位) 、追踪在线手机客户端(车辆GPS定位) 、鸿通gps 、烽火台gps手机应用版 、吉利新能源手机版(车载定位)、 泽速gps定位监控系统手机查车 、路精灵gps 、申吉经纬gps等等。它们的功能都大同小异,都能简单的实现汽车的定位这一基本功能。下面拿几个简单的汽车定位追踪软件来看:
途骏app功能:查看车辆列表、单车实时跟踪、多车监控、回放历史轨迹、逆地址查询、通过不同图标显示不同车辆状态等
欧创gps定位器app主要功能:
1.实时跟踪:手机端轻松获取爱车地理位置,随时随地知晓爱车所在地。
2.历史轨迹:轻松获取爱车运动轨迹
3.震动报警:停靠更放心,爱车有动态早知道
4.报警提醒:爱车的贴身保镖,实时动态第一时间知道
5.停靠报表:即时获取停车场信息
6.设备信息:轻松获知爱车综合性能报告
攀西APP:
人车距离导航:只需要在手机app上就可以查看您与车辆之间的距离;
异地远程操控:支持手机远程一键设置时刻了解车子情况,支持多项功能设置;
实时定位查询:随时掌握爱车违章、方向、速度、与车之间的距离。
对车管理系统:一个账号下可查看多辆安装定位器的车辆,方便车辆统一管理和调度。
本汽车定位追踪系统是通过汽车的实时定位来实现对汽车的实时监控以及对被盗车辆提供追踪路线。本系统采用JAVA语言在Android Studio开发环境中基于百度地图的SDK,通过百度地图的API接口来实现汽车定位追踪功能。
我做的贡献

2、系统设计

2.1 系统的总体设计

汽车定位追踪系统是用来用户实时监测自己的汽车的位置信息、记录汽车的行驶路线以及对于失窃车辆提供路线追踪方案。定位追踪模块的设计是基于百度地图SDK来完成的,系统分为百度地图的显示、百度地图显示模式的选择、汽车的定位显示、汽车行驶轨迹的显示、对汽车进行追踪导航规划等五大功能来设计。通过这五大功能的协调配合,实现对汽车的位置的实时监测。

2.2 系统的分功能设计

2.2.1百度地图的显示

百度地图的显示功能实现是靠调用百度地图SDK的地图接口,将百度地图SDK早已设计好的百度地图显示出来。它能使用户直观的在地图上查找到汽车的位置所在,并能观察到汽车的周边环境。
首先,在Android Studio软件中建立好工程,从百度地图开发者平台上获取新建工程的密钥,并在百度地图开发者平台上下载开发功能所涉及到的百度地图SDK,将密钥和百度地图SDK导入新建工程,并在AndroidManifest.xml文件中完成密钥和百度地图SDK的配置。
然后就开始代码的编写。如下表所示,通过调用SDKInitializer的initialize()函数来对上下文进行初始化,通过findViewById()函数通过id的方式将地图视图控件与MapView对象联系起来,在通过调用MapView对象的getmap()将地图获取到交给BaiduMap对象。创建了百度地图,还需要对百度地图的生命周期进行管控,可以通过下表的函数实现。

2.2.2百度地图显示模式的选择

百度地图显示模式的选择利用设定地图模式的函数中不同的参数来实现对不同百度地图模式的显示。百度地图显示模式的选择功能可以让用户通过多角度的观察汽车的位置,有助于用户更快速的获取到汽车的位置所在地。
通过利用Button控件事件处理函数来实现对不同的地图模式参数的设定,如图所示,设定的参数有MAP_TYPE_NORMAL(普通地图(3D地图))、MAP_TYPE_NONE(空白地图)、MAP_TYPE_SATELLITE(卫星地图)等等。

2.2.3汽车的定位显示

汽车定位显示是将汽车的位置通过标记物显示在百度地图上。汽车的位置信息是后台通过GPS模块采集后传送给平台的,通过后台传来的汽车的定位信息存在着一定的误差,如何解决这个问题至关重要。
影响GPS精度的原因有定位器自身因素、安装方式和环境。对于前面两种属于硬件需求,这里不做讨论。而对于环境因素(天气因素、无线电、强磁场、周围有遮蔽物等)对GPS精度均会产生不同程度干扰。其中遮蔽物对实际应用中GPS的精度影响不可忽略。当汽车行驶在隧道、高楼、或是树木较多的地方,停在地下停车室时,GPS信号就会较弱,甚至是被完全屏蔽,设备完全无法接受到信号,这时就会出现定位不准的现象。
在上述影响GPS精度的环境里,如果再通过用GPS模块采集定位信息,就无法准确的在地图上显示出来了。所以这时候就不能再采用GPS模块采集的定位信息了。应当采用基站定位方法,通过查询后台发送信息的基站位置信息作为汽车的定位位置所在。基站的分布呈蜂窝式,通常城市中的两个基站的距离是大约几百米。所以采用了基站定位方法,定位出来的位置会出现较大的偏差,但是相对于GPS来说,这种偏差是可以接受的。

2.2.4汽车的行驶轨迹显示

汽车的行驶轨迹显示是通过动态的定位信息在地图上通过不断采用线来实现。汽车的行驶轨迹显示功能有助于用户对汽车的行驶路线进行监测,使用户更好掌握汽车的行驶路线。
通过后台传送的信息不断获取到汽车的位置的经纬度信息,在地图上将根据传来的位置经纬度确定的点用折线连接起来,利用setTimeout()函数不间断的画折线,再根据点信息实时更新地图显示范围,让轨迹完整显示。

2.2.5汽车追踪导航规划

汽车追踪导航规划是使通过后台传送的汽位置信息和获取的用户手机位置信息通过百度地图SDK中的导航规划来实现的。汽车追踪导航规划功能能够通过为用户提供路线追踪汽车,给追踪汽车提供了便利。

2.2.5.1 自身位置获取

用户位置的获取是通过手机定位实现的,通过调用百度地图SDK的LocationClient监听用户手机的定位信息。用户的手机定位有GPS定位,网络定位这两种定位方式。在户外的情况下,一般采用GPS定位方法,而在室内,GPS信号信号会被建筑物干扰,无法使用,一般而言采用的是网络定位。网络定位有两种方式,一种是室内定位技术,它是利用事先在商场中架设好的位置已知的路由器,然后根据指纹算法来定位。指纹算法就是事先测得在商场的每一个位置各个路由器的信号强度,存储于数据库中,到时候用户需要定位时将测得的各路由器信号强度报给服务器,服务器从数据库中查找得知对应的位置,报告给用户。这种定位方式的精度比较高。网络定位的另一种方式是基站定位,这种定位可靠,但误差大,原因是这种定位方式依赖于基站分布密度。发达地区的城区定位精度会比较高,目前最高可达几十米到百米以内。但边远地区基站分布间距比较大的时候,误差会很大,有时甚至可达数公里以上。
通过这两种定位方式就能将用户的手机定位信息给采集到,但是要将其显示到百度地图上,不能直接应用GPS定位出来的定位坐标,不然会造成坐标偏移。原因在于国家处于国家安全考虑,规定中国大陆的所有公开地理数据都需要至少用GCJ-02进行加密(加密后的坐标被称为GCJ02国测局坐标,又被称为火星坐标系)。也就是说在中国大陆GPS设备获取的角度坐标(WGS84坐标)在中国地图产品上禁止使用。在百度地图上采用的经纬度坐标是经过二次加密的BD0911坐标。所以要想将GPS坐标显示在百度地图上,要先进行坐标的转换。在百度地图SDK上通过setCoorType(“bd0911”)函数,可以直接获取到百度地图可以采用的百度坐标(BD0911)。

2.2.5.2导航规划

百度地图SDK的包里有关于路径规划功能的类,通过调用这些类以及获取到的人的位置和汽车的位置就能实现对追踪汽车的路线规划的功能。百度地图中采用的路径规划算法是A*算法,

在MainAcitity.java文件中,调用百度地图SDK中的类 LocationClient,用来创建监听用户手机的定位信息的客户端,通过LocationClientOption来设置GPS定位的参数,可以设置返回纬度坐标类型、定位模式、发起定位请求的间隔、是否需要过滤GPS仿真结果、是否收集Crash信息、是否使用GPS、是否在stop的时候杀死这个进程、是否显示地理信息等。
用registerLocationListener(BDAbstractLocationListener listener)来注册 BDAbstractLocationListener 定位监听函数,通过监听函数获取当前用户手机的位置信息。但是通过百度地图库调用的监听函数获取的当前用户手机的位置信息在百度地图上显示时会出显一定的偏差,这就需要自定义一个位置信息参数修正函数,通过这个函数修订的位置信息再作为用户的手机的位置信息,利用修正后获取到的用户手机的位置信息和后台传送的汽车位置信息通过调用百度地图中的导航类就能实现导航路线的规划,最后通过onDestroy()、onResume()、onPause()这三个函数对百度地图的生命周期进行管控。这样就能实现了对于失窃汽车提供路线追踪方案的功能。
应用
本系统可以广泛地应用到各种汽车防盗定位追踪装置、车载GPS定位追踪器。它能使通过汽车防盗定位追踪装置实现汽车与人的交互,使汽车防盗定位追踪装置变得更加智能化。

结束语

汽车定位追踪系统对后台传送的汽车定位信息进行数据处理分析,再将分析的数据可视化直观的通过手机APP展现给车主实现车与人的交互。汽车定位追踪系统在实际应用中对于社会上频繁的盗车案件会有一定的帮助,因为它能够合理有效的将汽车的追踪路线展现给用户,使用户能够快速追踪到自己丢失的汽车。市场上存在着许多类似的汽车定位追踪软件,它们的定位追踪功能主要应用在公司对车辆位置的监测,本设计主要是给用户用来对自己汽车的监控,侧重点不同。当然,本汽车定位追踪系统也存在着一定的问题,现在的汽车都装有车载GPS定位追踪器,但是这些车载GPS定位追踪器没有通信模块无法直接与汽车定位追踪系统通信。相信随着市场的发展,车载GPS定位追踪器一定会内置一块通信模块,这样就避免了外加装置的困难,极大的增加了汽车定位追踪系统市场应用的范围。

猜你喜欢

转载自blog.csdn.net/qq_46763930/article/details/108553685