張曉艷 孫天宇 孫遜
摘 要:經濟的發展使得車輛保有量不斷增加,汽車已經成為當今社會極為普遍的出行工具。國內車輛多、行人多,道路交通狀況復雜,因此,提高行車安全是交通出行的首要原則。文章設計和實現了一個基于Android的行車助手APP,該APP除了常規行車過程視頻錄制和分享功能外,還實現了高架出入口、洗手間和加油站提示等常用地址導航等功能。
關鍵詞:Android;行車助手;行車記錄;導航
經濟水平的提高和信息技術的發展使得國內交通運輸業取得了快速發展[1],汽車已經逐漸成為人們主要的出行工具。但由于國內道路狀況復雜,機非混行、人車混行現象極為常見,而伴隨著汽車數量的不斷增加,交通事故發生率也在大幅攀升。在事故發生后,保存交通事故現場圖片和視頻等多媒體資料對事后分析、責任認定具有重要意義。
目前,硬件行車記錄儀市場繁榮,品牌豐富,但許多記錄儀存在功能單一、布線繁瑣和價格昂貴等缺點。現在應用市場中也有較多基于Android操作系統的行車輔助類APP,功能各有側重,如劉寬等[2]開發的行車記錄儀具有行車視頻錄制、音樂播放的功能,段永成等[3]在行車記錄儀視頻處理中實現了去霧算法,岳曉慶[4]開發的行車服務助手具有撥打電話、定位等功能。
Android于2007年11月由Google公司推出,是一個基于Linux系統的開源移動操作系統。Android操作系統最大的優勢在于平臺的開放性,開源的代碼也使其擁有更多的開發者,使其成為目前受歡迎的手機操作系統[5]。許多行車輔助APP選擇基于Android開發,是因為其易與多數手機匹配,平臺開放性高。
本文針對現有常見硬件行車記錄儀和行車輔助類APP存在的問題,設計和實現了一套基于Android系統的行車助手APP。該APP除了硬件行車記錄儀視頻錄制等功能外,還實現了視頻分享、常用地址一鍵導航等功能。用戶可在閑置的Android手機中部署行車助手APP,可以提高閑置資源的再利用率,也節約了用戶資金。
1 系統設計
1.1 模塊設計
系統模塊設計之初,分別從駕駛員角度、交通管理部門角度考慮用戶需求,并結合交通法規、道路分類、常見交通場景、事故種類及發生原因等因素,調研了大量不同駕齡的駕駛員,充分研究了《中華人民共和國道路交通安全法》的各項條例,從交通管理部門查閱了多項事故案例、處理過程和處理結果。在收集了足夠數量的數據后,以符合國內交通現狀、依法依規行駛、尊重駕駛習慣為前提,基于人、車、管理等角度進行分析,得出系統整體模塊結構。
該行車助手APP分成行車記錄、行車記錄分享、行車導航和系統設置4個一級模塊,一級模塊下共設有9個二級模塊。
(1)行車記錄模塊:該模塊包含的二級模塊為行車圖片拍攝、行車視頻循環錄制、突發情況視頻存儲。
行車記錄主要的功能是記錄汽車前方實時影像,可實現行車視頻的循環錄制。為控制視頻文件大小,同時又保證視頻的清晰度,在該模塊中設定分辨率為1 024×1 024,調用手機內置攝像頭,并指定手機內部存儲路徑,循環錄制時間默認為10 s允許用戶自行在指定范圍內設置。行車過程中大部分時間為非事故狀態,因此無需長久保存,以設定的時間間隔循環錄制。
但在行車遇到異常情況時,有永久保留視頻的需要,因此設有異常情況視頻存儲二級模塊。通過對傳感器狀態的偵測,通常當汽車遭遇事故,會發生與普通行車狀態相異的振動,手機置于車內,會同步異常振動。設置加速傳感器檢測的振動閾值,當偵測的手機傳感器振動值大于等于閾值時,則進入該模塊,將該部分視頻進行永久存儲,保留異常現場情況。
(2)行車記錄分享模塊:該模塊包含的二級模塊為行車視頻瀏覽、行車視頻評論。
行車記錄分享模塊的設計意圖是增加APP的社交功能,也是增加用戶使用樂趣的一個模塊。通過分享平臺,用戶可將本人手機中存儲的視頻,分類分享行車過程的趣事、交通事故教訓等,其他注冊用戶可瀏覽分享平臺中的行車視頻,同時也可對行車視頻進行點贊、評論,討論行車方法,增強自身行車安全意識。
(3)行車導航模塊:該模塊包含的二級模塊為高架助手、加油站導航、洗手間導航。
該模塊包含高架助手、加油站導航和洗手間導航3大功能。考慮到許多司機不熟悉外地路況,在該APP專門設置高架助手功能,對城市中高架道路的出入口進行詳細全面的標注,用戶通過該功能可以在行車前查看高架出入口信息,解決司機用戶對高架出入口不熟悉的問題。另外,行車途中需要加油或休息,加油站導航功能和洗手間功能列出了當前行車點附近的加油站和洗手間信息,用戶可以一鍵導航,無需另外啟動百度、高德地圖中再完成輸入、查詢和導航,提高用戶使用系統的便捷性。
(4)系統設置模塊:該模塊包含的二級模塊為錄制模式設置、導航設置。
該模塊針將錄制模式、默認導航等多個參數設置成動態可變,提高系統的靈活性,滿足不同類型用戶的需求,提高用戶的使用體驗度。
1.2 客戶端界面設計
行車助手APP客戶端的界面設計設有啟動歡迎頁面,經5 s等待時間,自動進入顯示有4個按鈕的主界面,通過按鈕分別進入主頁、分享、導航和設置4個一級模塊界面,每一級使用Intent方式跳轉至二級模塊界面。在每個界面中均添加“視頻錄制”懸浮按鈕,實現視頻錄制的一鍵啟用。
2 系統實現
2.1 行車視頻錄制
行車視頻錄制采用MediaRecorder和Camera組件實現,MediaRecorder是基于底層OpenCore(Packet Video)庫而實現。循環錄制視頻采用可自定義錄制時間以及文件大小的方式。針對手機拍攝視角窄的問題,通過給手加裝魚眼鏡頭,提高拍攝角度寬度,加裝廣角鏡頭的手機或平板拍攝角度最大可擴展120°左右,相對行車記錄儀普通的鏡頭,能夠捕捉到更多的細節。
2.2 行車記錄分享
行車記錄分享采用OkHttp開發庫實現,OkHttp庫是由Square公司提供的基于HTTP協議的開發庫[6],用于實現APP對網絡的訪問。APP采用兩種視頻上傳模式,一種由用戶自主選擇上傳,一種是緊急備份上傳,在行車錄制發生緊急碰撞時,系統會將緊急視頻上傳至服務器,避免手機內存卡的損壞導致視頻的丟失,判斷是否為緊急碰撞同樣通過對手機的傳感器振動值變化的監測實現。
2.3 行車導航
行車導航功能基于百度地圖SDK,接入百度地圖的開放接口。APP首先在地圖數據庫中將高架入口、行車點附近的加油站和洗手間等功能點標注出來。
而后通過GPS定位讀取的手機當前位置信息,如果判斷用戶的當前位置信息顯示低于位置閾值,附近的加油站和洗手間等信息將顯示在APP界面上,獲取定點坐標主要代碼如下。
//獲取查詢到的POI詳情的poi坐標
LatLng poiDetailResultLocation =poiDetailResult.getLocation();
poiDetailLat=poiDetailResultLocation.latitude;
poiDetailLong=poiDetailResultLocation.longitude;
//獲取查詢到的POI詳情的poi地址
String poiDetailAddress =poiDetailResult.getAddress();
//計算距離
distance=DistanceUtil.getDistance(myPosition,poiDetailResultLocation);
3 結語
移動互聯的各項技術為駕駛員便捷行車提供了新的實現途徑,該APP基于應用數量占市場主導的Android技術設計與實現了行車助手APP。APP主要實現了行車視頻錄制、視頻分享社交功能和標注點導航功能,其中行車視頻錄制功能和導航功能是該APP的核心功能。
[參考文獻]
[1]趙娜,袁家斌,徐晗.智能交通系統綜述[J].計算機科學,2014(11):7-11,45.
[2]劉寬,譚大禹.基于Android的智能行車記錄儀的設計與實現[J].電腦知識與技術,2017(3):211-214.
[3]段永成,趙曙光,王建強,等.基于安卓手機的行車記錄儀設計[J].信息通信,2018(9):73-74.
[4]岳曉慶.基于Android的行車服務助手的設計與實現[D].北京:首都經濟貿易大學,2017.
[5]黃婧,張林,季刊,等.基于Android平臺的GPRS流量統計系統[J].計算機系統應用,2011(12):141-143.
[6]李群.基于OkHttp的文件傳輸設計與實現[J].電子技術與軟件工程,2018(13):180-181.