文/赵亚栋 魏琦
随着汽车电子、网络、信息技术的快速发展,科技、智能、人性化已经成为汽车人机交互的发展大势。目前卡车车载导航普遍存在功能单一、地图数据陈旧且更新不及时、路线规划不合理无法满足卡车实际需求等弊端,使得越来越多的卡车司机放弃使用车载导航。综合上述问题,本文通过不断实践尝试,使用离线数据与在线数据相结合的方式,在Android平台下实现了一个专为卡车打造的车载导航系统,不但解决了原有卡车导航存在的问题而且更好用、功能更丰富。
此系统包含12个大的功能模块分别为巡航、路径规划、导航、历史行程、目的地分类和搜索、拖动地图选目的地、离线地图下载、组队、用户反馈、用户手册、在线升级和加油提醒,如图1所示。
2.2.1 路径规划模块
用户可在设置中设置车辆信息(长宽高、车牌等),在路径规划页面选择路径规划策略(避免拥堵、避免限行等),在地图上显示规划出的路径,在路线上显示沿途城市天气也可对沿途加油站、卫生间等进行搜索并在路线上显示。在地图左侧显示每条路径的预估长度、红绿灯个数等信息。
2.2.2 导航模块
导航界面显示距下个路口的距离、路口转向图标、距离终点距离、预计到达时间以及重要路口的路口放大图等信息,能够查看路线全览,在车头向上和正北朝上间进行切换,打开和关闭实时路况。
2.2.3 我的行程模块
主界面包含累计总里程和历史行程列表。每一个记录显示导航开始时间、起点和终点名称、行驶里程、用时、超速次数和超速详情,在地图上显示行程路线并标记超速点。
2.2.4 目的地查找和搜索模块
拥有76种细分类目的地如维修服务点、加油站等并可按距离筛选,直接选择并点击即可前往目的地。也可拖动地图选择目的地或输入关键词搜索目的地并可将其设置为家或公司。
2.2.5 离线地图模块
各城市按省份将其分区显示,显示各城市离线地图的大小和下载状态,可查看正在下载和已下载城市,可删除。也可通过搜索关键字查询对应城市进行下载。
2.2.6 组队模块
用户可以创建队伍和输入口令加队伍,都需要登录后使用,未登录状态下会进入登录界面。创建队伍成功后界面底层为地图,地图中显示全队的位置。地图左侧悬浮框显示队伍名称,每个队员的头像,用户名及身份。队长在该界面中可设置队伍目的地、修改队伍名称、修改昵称、移除队员、解散队伍等。
2.2.7 加油提醒模块
在首页监控到油量不足后向用户提示:油量不足是否前往最近加油站,用户点击确定直接规划前往加油站的路径。在导航页面监控到油量不足后向用户提示:油量不足是否前往最近加油站,用户点击确认按钮即刻将相应加油站作为途经点并重新进行路径规划开始导航。
在Windows操作系统下,基于Android Studio平台,采用Java语言进行客户端开发,在PhpStorm平台下进行服务端开发,数据库采用PostgreSQL。
工程中将RxJava及其RxAndroid、Rxpermissions等配套类库引入工程,进行网络请求,动态权限申请,解决生命周期等问题。在消息传递方面使用广播和EventBus。数据方面采用服务端和客户端相结合的方式,用户通过网络请求与服务端交互获取数据。显示方面引入自适应框架 "me.jessyan:autosize:1.1.1",在 AndroidManifest 中填写全局设计图尺寸后,静态布局即可使用自适应框架进行自适应。原生界面布局文件采用Android基本布局的嵌套,并引入一些第三方控件实现一些复杂布局的显示。用户手册功能和各种协议的界面通过编写具有自适应功能的网页,再在客户端采用Webview进行加载。各模块基本功能通过引入高德地图sdk并编写逻辑代码实现。
图1:系统功能结构
3.3.1 路径规划模块
在路线规划前设置搜索参数, 分别为路线规划的起终点、计算路径的模式、途经点和货车信息。计算路径的模式根据不走高速与高速优先不能同时为true,高速优先与避免收费不能同时为true的规则,一共有九种模式。取数据库中用户设置的路线偏好作为算路模式,未设置时以“避免拥堵”作为默认算路模式。
3.3.2 导航模块
在导航相关的回调函数中获取导航实时信息并对数据进行处理在自定义布局上显示,如在onNaviInfoUpdate() 导航引导信息回调中获取距下个路口的距离,预计到达时间等信息进行处理后在左上角显示。在onServiceAreaUpdate()服务区信息回调中获取前方服务区和收费站的信息并在导航引导信息下方显示。通过设置AMapNaviViewOptions的属性设置自定义路线纹理和车标等,增加个性化。
3.3.3 目的地查找和搜索模块
通过编写配置文件PoiClassify.json将目的地按POI类别进行分类,通过读取配置文件进行布局的动态显示,每一小类打开后以当前位置为中心进行poi搜索,搜索结果按距离由进到远分页进行显示。
3.3.4 离线地图模块
通过下载管理器得到各个城市的下载状态以及下载百分比初始化页面显示,退出系统时将正在下载和已下载的城市信息存入本地数据库中。在离线地图初始化完成前进入离线地图模块则根据数据库中的正在下载和已下载信息初始化界面显示。
3.3.5 组队模块
在工程中引入高德地图猎鹰sdk。根据应用的key新建一个猎鹰轨迹服务得到service id,一个service对应一个轨迹管理系统,通过一个service可管理多个终端设备。当组建一个队伍后给该队伍分配一个唯一8位的队伍号,将队伍信息存入队伍信息表中,同时在service下创建该终端(使用AMapTrackClient.addTerminal添加终端到service下),并开启轨迹上报服务和定位采集。当有队员加入队伍时将对应终端加入service下并开启轨迹上报和定位采集,将队员信息存入该队伍对应的队员信息表中。
如图2所示。
本系统不仅解决了传统卡车导航存在的不足并且完全针对卡车,根据当前车辆的长宽高、载重等条件,进行定制化路径规划,避免车辆行驶到半途无法通过等情况。地图数据采用离线数据结合在线数据,针对地图数据更新困难问题,采用基础图层数据预装,有数据更新时使用在线增量更新,节约流量。结合实时路况进行路径规划,确保规划路线的可通过性。目前物流市场以物流公司为主,车辆组队功能满足了车队出行途中的统一调度需求,队长统一设置目的地,车队成员共享实时位置,为结队出行用户提供便利。
图2:系统主要功能界面