文/趙亞棟 魏琦
隨著汽車電子、網絡、信息技術的快速發展,科技、智能、人性化已經成為汽車人機交互的發展大勢。目前卡車車載導航普遍存在功能單一、地圖數據陳舊且更新不及時、路線規劃不合理無法滿足卡車實際需求等弊端,使得越來越多的卡車司機放棄使用車載導航。綜合上述問題,本文通過不斷實踐嘗試,使用離線數據與在線數據相結合的方式,在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:系統主要功能界面