基于车辆位置服务的安卓APP开发

2019-08-07 标签:安卓APP开发 浏览数:131

摘要: 利用移动互联网技术为汽车用户提供基于位置的服务是智能汽车的一个重要内容。当前汽车服务领域,提供的服务只是定位导航等基本服务,针对汽车用户提供更为个性化服务的系统几乎没有。为了方便汽车用户确定车辆位置,实时了解车辆内的信息状况,在深入分析基于车载端移动应用现状的基础上,提出并实现了一套基于Android的车辆服务系统的设计方案。

资讯主图

1 引 言

随着移动通信技术的迅猛发展和智能移动终端的广泛普及,车联网得到了蓬勃发展,车联网下的汽车移动互联平台也得到了广泛的应用,车联网成为移动互联新的业务增长点。在车联网和智能移动终端两种技术交织过程中,一种新型的网络服务——基于位置的服务(location based services,LBS)应运而生。LBS,指的是采用定位技术、移动通讯技术、地理信息系统技术和互联网技术等相关技术交叉融合的一种基于控件位置的移动信息服务。

在汽车移动互联平台下,基于车载端的位置定位数据为驾车者提供相关服务这一功能尤其值得关注。当前我国车辆拥有量居世界前列,找路难、停车难成为驾车者的普遍问题,如何利用和开发现有的道路资源和停车资源成为城市改善交通的主要课题。开发基于LBS的服务互联的安卓平台是低投入、高效、可行的便捷之路,智能交通已经成为城市发展的标志。由于我国道路交通路线状况复杂且道路建设速度非常快,在通常情况下,驾车者进入一个陌生的环境往往在选择路线时会出现偏差,不能准确找到正确的行车路线,经常出现停车难的问题,并且在需要加油时,很难清楚的知道行车路线附近加油站的分布情况,需要花费大量的时间去找到正确的行车路线和附近的停车场,这不仅让驾驶者浪费了大量的时间,无谓的消耗了很多能源而且不利于保障行车安全,给驾驶者带来了相当大的困扰。因此,在车载移动平台中的移动终端进行基于LBS的服务互联安卓平台开发,对接收的车辆定位数据进行分析处理,提取准确的位置信息,在移动终端提供地图定位、车辆导航、推送目的地停车场状况等服务的重要性日益凸显。

综上所述,实现基于位置服务的多样性,对提高出行效率和出行安全以及满足驾驶者更加丰富的个性化需求具有重要的意义。本课题就是通过开发基于LBS的服务互联安卓平台,提供地图定位、车辆导航、推送目的地附近停车场、加油站等服务,方便用户选择出行线路,能够缓解道路拥挤,提高出行效率。


2 APP开发系统总体设计

2.1 汽车移动互联平台总体设计

在当前汽车服务领域,基于移动终端的服务往往只是通用的定位导航等基本功能,能为汽车用户提供个性化服务的系统还没有得到广泛应用[5]。为了能为汽车用户提供更为个性化的,让用户时刻了解车辆的信息状况,本实验室与通用汽车公司进行了汽车移动互联平台的研发合作。

汽车移动互联平台系统整体架构是从OBD接口利用GPS和传感器进行数据采集,而后将采集的数据进行处理,并使用相关安全算法对数据进行加密,使用通信模块与服务器实现高速安全地通信。之后,服务器与移动端进行双向身份认证,认证成功后采用公钥加密通信,最终实现移动端APP上车辆信息显示。汽车移动互联平台整体系统架构如图1所示。

图1 汽车移动互联平台整体系统架构

2.2 车辆服务系统总体设计

车辆服务系统是汽车移动互联平台的移动终端部分,车辆服务系统主要包括两个模块,第一部分是在Android操作系统中应用百度地图API接口的地图模块,其中车辆位置定位功能是根据从服务器接收到的车辆位置信息来进行定位,导航功能和搜索附近服务功能是以用户当前位置来提供服务;第二部分为与服务器结合的汽车信息管理模块,用来显示汽车内的甲醛浓度、PM2.5浓度、PM10浓度及温湿度。本系统主要功能框图如图2所示。

图2 车辆服务系统功能框图

车辆服务系统软件利用Java语言在Eclipse上进行开发编程。用户在使用时根据自己的需要可以选择主界面上的相应功能。整体流程如图3所示。

图3 车辆服务软件流程

本系统包含3层:地图显示层、地图覆盖层、业务处理层,系统架构如图4所示。

图4 车辆服务系统软件架构框


3 地图模块整体设计

当前的一些地图服务的应用,都只是为用户提供简单的定位导航等服务,没有考虑用户忘记车辆停放位置的情况,为了能够为用户提供查询汽车位置的服务,设计了汽车位置定位模块。

3.1 汽车位置定位模块整体设计

汽车位置定位模块包括地图显示功能和汽车位置定位功能。用户使用时,点击地图服务按钮中的定位按钮进入汽车位置定位模块,首先显示地图界面,再点击定位按钮,向服务器发送定位请求,得到服务器响应后即可实现汽车位置的定位[7]。定位模块功能的流程如图5所示。

制定各个年段的研究目标切入后,笔者针对具体研究内容,开展了扎实有效的研究活动,初步形成并完善了两个基本课型范式。

图5 定位模块流程图

3.2 导航模块整体设计

汽车用户在行车时,通常会出现不清楚如何到达目的地的情况,需要使用地图导航来对其进行行车过程中的路线提醒,因此本文设计了导航模块来满足用户这方面的需求。

导行模块包含地图显示功能、定位到当前位置功能和导航功能。用户在使用时,点击导航按钮进入导行模块,模块自动定位到当前位置,通过搜索框搜索目的地,再长按选择要到达的目的地,点击“去这里”进入路径规划和导航界面(若未开启GPS则会弹出提示窗口),定位用户当前的位置作为起点规划出行车路线并在地图中绘制出来。完成路径规划后,用户即可进行导航,底部会显示里程数及预计到达时间,点击底部的按钮可以选择查看全程,并且用户可以点击地图上的右下角的菜单按钮选择在导航过程中是否开启语音播报模式、实时路况显示、导航路径分段浏览等功能。导行模块功能的流程如图6所示。

图6 导行模块流程

3.3 附近服务搜索模块整体设计

汽车驾驶者行车时,会出现汽车油量不足的情况,此时就需要寻找附近加油站进行加油,在抵达目的地的时候,尤其是到达一个陌生的地方时,往往有找不到停车场的困扰,因此本文为汽车服务系统设计了附近服务搜索模块。

附近服务搜索模块包括地图显示功能、定位到当前位置功能和显示附近服务地点功能。用户使用时,点击地图服务按钮进入地图模块,再点击导航按钮进入搜索附近停车场或加油站模块,即可直接看到当前位置附近的服务地点的位置,双击气泡覆盖物即可查看详细信息。附近服务搜索模块功能的流程如图7所示。

图7 附近服务搜索模块流程


4 地图模块功能实现

4.1 汽车位置定位模块功能实现

当前在移动终端提供地图服务的应用都是直接使用移动终端自带的GPS进行定位,而本文的系统是根据从服务器接收到的汽车的经纬度来进行车辆位置定位,由于网络传输可能发生数据的错误,还会对接收到的数据进行正确性验证。汽车位置定位功能由地理位置信息接收、地理位置信息解析和位置定位功能3部分组成。定位功能流程如图8所示。

图8 定位功能流程

4.1.1 地理位置信息接收

针对汽车移动互联平台数据传输量大、可移动性高、网络环境复杂等特点,需要为汽车移动互联网信息实时交互提供数据传输高效、可靠、安全性保障。而Android平台有3种网络接口可以使用[12],分别是java.net.*(标准Java接口)、Org.apache接口和Android.net.*(Android网络接口)。其中标准Java接口具有数据传输高效、可靠、安全性保障的特点,因此我们选择将其作为网络接口。标准Java接口,java.net.*提供与联网有关的类,包括流、数据包套接字(socket)、Internet协议、常见Http处理等。

Http连接最显著的特点是客户端发送的每次请求都需要服务器回送响应,在请求结束后,会主动释放连接。从建立连接到关闭连接的过程称为“一次连接”。由于要实现在需要数据才向服务器发送请求,且每次请求都需要得到返回的地理位置信息,因此选择使用HttpClient进行与服务器的通信。位置信息接收流程如图9所示。

4.1.2 地理位置信息解析

从服务器端接收到的车辆地理位置信息并不是百度地图API能够直接定位的数据,需要进行解析和处理才能使用。

数据处理模块本身不太复杂,但是却是整个汽车位置定位模块的关键,本模块需要做以下几件事情。

1)利用正则表达式对数据的正确性进行校验,由于接收到的数据有一定的概率会出现错误,所以这一步至关重要。接收的数据格式为311870978N1212308875E,所以正则表达式为错误!超链接引用无效。。

2)数据分割。将收到的字符串分割为纬度latitude,精度longitude。

3)数据转换。这一步有两个目的:(1)国际标准的GPS数据是以度分秒表示的,需要准换为小数表示的地图标准;(2)处于安全的考虑,国内的地图不能够使用国际的GPS数据标准,在实际测试中直接使用GPS硬件数据会出现一定的偏移,所以需要进行转换,转换为百度的数据标准(bd09ll)。

4.1.3 地理位置定位

车载端传输过来的数据,在通过数据解析得到百度地图API能够进行定位的位置信息后,开始调用基本地图功能进行定位。

基本地图功能通过MapView实现地图显示以及地图基本操作。用户查看车辆位置时,可以通过手势操作实现地图中心点的控制、缩放和旋转。

MapView是百度地图软件包中的一个地图控件,是地图的容器。同时提供了地图的初始化方法和地图的基本操作。MapView是所有地图服务的基础,所有地图服务都是通过MapView来与用户实现交互。使用时首先在布局文件中声明这个控件,然后在程序中调用控件。

4.2 导航功能实现

导行功能由定位功能、路线规划和实时导航功能3部分组成。用户在地图显示功能的界面中,通过搜索框搜索要到达的目的地,长按导航的目的地后进入导行功能。导行功能获取用户当前的位置作为路径规划的起点、目的地位置信息作为终点后进行路径规划,返回路径规划的结果,之后即进行实时导航。导行功能流程如图10所示。

图9 位置信息接收流程

4.2.1 定位功能

进行路径规划时首先要定位当前用户位置,用户也可以通过点击主菜单上的我的位置按钮进入定位功能。定位功能启用首次定位,用户点击按钮后自动进行定位,并将定位点显示在地图中心处。

定位功能的实现借助于百度地图API中的Android定位SDK,定位SDK采用GPS、基站、WiFi信号进行定位。当需要定位当前位置的时候,首先向定位SDK发起定位请求,定位SDK会根据应用的定位因素的实际情况(如是否开启GPS、是否连接网络、是否有信号等)来生成相应定位依据进行定位,并将结果返回到当前程序。在室外采用基站和GPS结合的定位方式,室内使用WiFi定位[14]。

4.2.2 路径规划功能

用户进入路径规划界面后,点击按钮后获取起点和终点的位置信息进行路径规划,路径规划完毕地图上绘制出所规划的路径。点击路径规划结果界面下部的两个按钮实现对路径节点的检索,显示节点的相应信息。

路径规划功能调用了百度地图API中Android地图SDK中的路线规划中的类与函数。路径规划功能流程如图11所示。

4.3 附近服务搜索功能实现

当用户在行车时需要搜索周围的服务时,即可进入搜索附近服务模块进行搜索,流程如图12所示。

附近服务搜索功能由3部分组成。上部为基本地图显示,中部为服务地点信息检索,下部为地图覆盖物的绘制。用户选择了“附近”后进入附近服务搜索地图显示界面,输入搜索地点即可对相应的服务地点进行查询,程序访问API云端数据表对输入的关键词进行检索,返回符合条件的地点的位置信息,在该位置新建地图标注并绘制在地图上[15]。

图10 导行功能流程

图11 路径规划功能流程

图12 地图显示功能流程


5 车辆信息管理模块设计

5.1 车辆信息管理模块整体设计

车辆信息管理模块主要包括数据接收功能和显示功能。用户在使用时,登录车辆服务系统成功后,默认直接进入信息管理模块,点击“数据刷新”按钮,向服务器发送数据请求,得到服务器的响应后进行数据的接收和显示车辆信息管理模块功能的流程如图13所示。

5.2 车辆信息接收和解析

另外还有EW向和近SN向断裂组:为区内早期断裂,规模小,数量少,个别地段密集出现,被后期断裂组所切穿。

要实现车辆信息的显示,必须首先要从服务器接收和解析车载端传输给服务器的车辆信息,下面具体阐述车辆信息接收和解析的具体实现方法。

5.2.1 信息接收

要接收信息,需要与服务器进行网络通信,相比于HttpURLConnection和HttpClient,由于OkHttp对于处理了很多网络问题有很大的优势:会从很多常用的连接问题中自动恢复。如果您的服务器配置了多个IP地址,当第一个IP连接失败的时候,OkHttp会自动尝试下一个IP。OkHttp还处理了代理服务器问题和SSL握手失败问题。而且使用OkHttp无需重写程序中的网络代码。OkHttp实现了几乎和Java.net.HttpURLConnection一样的API[4]。因此选择OkHttp作为与服务器的通信方式。

导航按钮使用OkHttp发送请求、接收响应步骤:

1)创建okHttpClient对象;

2)发送Post请求参数,创建HttpPost对象;

3)使用Post方式提交String postUrl="http://"+ip+data_url请求服务;

4)获得JSON响应。

5.2.2 信息解析

由于汽车服务系统数据传输量大、数据比较复杂,使用普通的JSON解析方法即JsonObject和JsonArray的配合使用,对于解析小数据的json数据还是比较实用,但是当解析JSON数据比较复杂的时候这种方法就显得比较困难而且比较麻烦。而Gson是一个在JSON和Java对象之间转换非常方便的API,如果使用Gson解析就比较简单,因此使用Gson来解析JSON响应。解析的步骤,首先是定义序列化的Bean,然后编写解析数据类,最后返回数据解析结。

5.2.3 信息显示

在成功解析出车辆位置信息时,只需要调用setText()函数从member类中调用解析得到的结果显示即可。

图13 车辆信息管理模块


6 系统调试

6.1 定位模块调试

在手机终端打开车辆服务系统与服务器建立连接,服务器随机传输30组车辆的经纬度数据到客户端,将定位得到的位置与实际位置进行对比,获得两者之间的误差。测试结果表明定位的平均误差小于10m,定位稳定,准确。定位误差测试结果如图14所示。

图14 定位误差测试结果

6.2 导航模块调试

以移动终端所在位置(宝山校区图书馆)为起点,南区宿舍为终点进行路径规划测试,系统能够成功规划出行驶路径。路径规划结果如图15所示。

图15 路径规划结果

沿规划出的路径行走,在实时导航时也能够得到实时的位置,并且能够得到正确的信息提示和语音播报提示。实时导航时测试结果如图16所示。

自动上料完成以后,进入自动盖章环节,机构完成前伸动作后触发盖章机动作执行盖章环节。自动盖章程序如图5。

6.3 附近服务搜索模块调试

LBS云测试是对移动终端对云端位置数据表的读取进行调试,进行调试时,发现位置数据表中位置数据很多,但是移动终端对检索结果的显示最多显示10个地点,搜索图书馆附近停车场时测试结果如图17所示。

图16 实时导航信息提示

图17 图书馆附近停车场

6.4 信息管理模块调试

信息管理模块测试分两部分:1)登录界面验证用户身份测试,2)对服务器端的车辆信息数据表中的信息数据发送请求,移动终端获取车辆信息。

登录时需要在登录界面填写移动终端与服务器所用公网的IP地址,在正确填写用户名和密码后点击登录,能够成功进入信息管理界面。

进入信息显示界面后,在没有点击刷新按钮时的效果如图18(a)所示,点击刷新按钮后的效果如图18(b)所示。

图18 (a)点击刷新按钮前;(b)点击刷新按钮后

在不同地点进行4组测试,每组50个数据,测试结果如表1,数据平均成功接收率为97.5%,接收数据的传输延时约为1s,测试结果表明系统具有良好的实时性和可靠性。

表1 数据接收测试结果

组号传输次数成功接收数成功率/%第1组50 50 100第2组50 48 96第3组50 48 96第4组50 49 98


7 结 论

米维信息认为本文针对目前国内基于车辆位置服务的现状,设计了一套基于Android系统的车辆服务系统,包括了汽车信息管理模块和地图模块两个部分。总的来说,该系统在实际运用中运行稳定,定位精度较高、路线规划准确,和传统的地图相比可实时刷新位置信息。与传统的移动端地图软件相比,其功能的设计更适用于汽车驾驶者,极大地方便了汽车驾驶者。


关键字: 衡阳APP开发,安卓APP开发

衡阳网站建设,APP开发活动入口
相关资讯
热门资讯
提供衡阳微信小程序开发,微信营销功能开发、公众号开发等开发服务