劉寬++譚大禹
摘要:移動互聯(lián)網(wǎng)的出現(xiàn),極大的方便了人們的衣食住行,同時人們當下對行車安全非??粗兀虼嗽O(shè)計一款智能行車記錄儀APP便可以解決行車安全中的一些需求,如有效地解決了事故發(fā)生時的證據(jù)資料不足問題。該應(yīng)用系統(tǒng)集用戶登錄、路徑規(guī)劃、文件管理、音樂播放等功能于一體,充分滿足了行車過程中的對事故資料、路線導航和娛樂的需要。
關(guān)鍵詞:移動互聯(lián)網(wǎng);行車記錄;APP;路徑導航;文件管理
中圖分類號:TP311 文獻標識碼:A 文章編號:1009-3044(2017)03-0211-04
Design and Implementation of Intelligent Traffic Recorder Based on Android
LIU Kuan,TAN Da-yu
(Anhui University Of Science And Technology, College of computer science and Engineering, Huainan 232001, China)
Abstract: The emergence of the mobile Internet, a great convenience to people's basic necessities of life, while the people present on the traffic safety is very important, so the design of an intelligent recorder APP can solve some traffic safety needs, such as to effectively solve the problem of insufficient evidence of information at the time of the accident. The application system integrates user login, path planning, file management, music playback and other functions in one, fully meet the needs of traffic accident data, route navigation and entertainment.
Key words: Mobile Internet; traffic record; APP; route guidance; file management
1 背景
隨著我國社會經(jīng)濟的不斷發(fā)展,交通運輸業(yè)得到了快速發(fā)展[1],機動車數(shù)量急劇增加,其中私家車隊伍也在不斷壯大,交通管理的規(guī)模和等級逐步擴大,由此帶來的問題也不斷增多。為此,實施智能交通管理,提高駕駛安全性能,改善交通亂象,越來越為行業(yè)所關(guān)注[2]。作為保障汽車行駛安全的智能汽車行駛記錄儀APP應(yīng)運而生,因為在行車過程中,可能會遇到很多突發(fā)事件,保留合適的現(xiàn)場資料成為應(yīng)對突發(fā)事件不可缺少的環(huán)節(jié),對其的研究、開發(fā)和應(yīng)用也吸引了部分IT從業(yè)者。
本論文的研究基于Android平臺,在該平臺下,進行智能行車記錄儀APP的設(shè)計與實現(xiàn)[3],即不單獨設(shè)計硬件,借用安卓手機實現(xiàn)智能行車記錄功能。當前,手機的更新?lián)Q代速度越來越快,很多人有兩個及兩個以上的手機,二手手機買賣的價格較低,回收處理較復雜,而且目前國內(nèi)手機回收處理產(chǎn)業(yè)不發(fā)達,所以可以利用淘汰的舊手機作為智能行車記錄儀APP的硬件平臺,節(jié)省硬件成本。目前,人們對手機的操作比較熟練,開發(fā)智能行車記錄儀APP某種程度上也方便了人們的使用。
基于以上結(jié)論,本文設(shè)計一種基于Android平臺的智能行車記錄儀APP,下面進行詳細闡述。
2 系統(tǒng)功能設(shè)計
Android系統(tǒng)底層是基于Linux 2.6版本的內(nèi)核[4],如進程管理、文件系統(tǒng)等,內(nèi)核是上層軟件與底層硬件通信的橋梁。Android系統(tǒng)框架大致可分為四個部分:應(yīng)用程序?qū)?、?yīng)用框架層、庫和Android運行時、Linux內(nèi)核[5]。
本系統(tǒng)是在Android應(yīng)用程序?qū)娱_發(fā),根據(jù)需求,該手機應(yīng)用主要有以下幾種功能,一是根據(jù)出行方式的不同給出路線規(guī)劃,二是根據(jù)起點和終點給出實時導航,三是根據(jù)手機的方向傳感器給出方向和經(jīng)緯度,四是拍照和錄像功能,五是活動的展示,六是音樂播放界面和功能的實現(xiàn),七是新聞和周邊頁面的查看,八是文件管理功能,包括圖片和視頻的縮略圖、列表展示功能,圖片的查看和視頻的播放功能,圖片和視頻文件的一鍵清理和分享功能,再者是連接到電腦,使用電腦管理手機文件。
3 系統(tǒng)功能實現(xiàn)
該系統(tǒng)客戶端使用Activity、Service兩大組件,充分利用Intent通信機制,并輔以SharedPreferences存儲數(shù)據(jù),HTTP協(xié)議和服務(wù)器通信[6],同時使用Mob移動開發(fā)者服務(wù)平臺和百度地圖開發(fā)平臺提供的服務(wù),成功構(gòu)建了一款功能豐富的智能行車記錄儀APP。
該系統(tǒng)服務(wù)端使用Servlet接收客戶端發(fā)送的請求,由于只需要返回給客戶端數(shù)據(jù),而不需要通過瀏覽器展示圖形界面,所以不需要編寫jsp。該系統(tǒng)采用MySQL數(shù)據(jù)庫,在服務(wù)器和數(shù)據(jù)庫之前使用jdbc橋連接。
3.1 導航
3.1.1 百度地圖SDK
百度地圖 Android SDK是一套基于Android 2.1及以上版本設(shè)備的應(yīng)用程序接口[7],通過調(diào)用SDK接口,可以訪問百度地圖的服務(wù)和數(shù)據(jù),其提供的所有服務(wù)都是免費的,接口使用可以無次數(shù)限制。使用時,必須先申請密匙(key),并在Mainfest.xml中設(shè)置Accesskey,在application標簽中加入
百度地圖Android定位SDK是為Android移動端應(yīng)用提供的一套簡單易用的LBS(Location Based Service,基于位置的服務(wù))定位服務(wù)接口[8],可以提供GPS、基站、WiFi等定位方式。使用需先在xml文件中添加MapView,然后開啟定位圖層。定位初始化過程中,首先實例化LocationClient,然后注冊定位監(jiān)聽,最后設(shè)置定位參數(shù),如坐標系的選擇,定位時間間隔的控制等。定位監(jiān)聽函數(shù)會返回位置信息,通過對位置信息的設(shè)置,即可顯示在界面上。在退出定位界面時應(yīng)關(guān)閉定位圖層,銷毀LocationClient,防止內(nèi)存泄露[4]。百度地圖Android 導航SDK與之原理類似,不再贅述。
3.1.2 功能實現(xiàn)
首先,人們使用導航功能時,更多的是需要找到從當前位置到某一地點的路線,所以,本系統(tǒng)首先使用百度地圖定位SDK獲取到當前位置[9],并在頁面上繪制出來街道、熱點等標志,給用戶提供導航依據(jù),如圖2所示。然后,在頁面上起點和終點輸入框可以輸入地點,在輸入時會觸發(fā)聯(lián)想詞功能(SuggestionSearch),智能提示用戶相應(yīng)地點。
3.2 文件管理
本系統(tǒng)需要管理的文件為視頻和圖片文件,視頻文件為調(diào)用系統(tǒng)攝像機錄像生成的,圖片文件為調(diào)用系統(tǒng)照相機拍攝生成的,生成的文件都存儲在自定義的文件下,這是為了把行車記錄儀文件和手機中的其他文件區(qū)分開來,便于管理。如圖3所示,為了提高用戶體驗,在文件管理界面,提供列表和縮略圖展示功能,點擊列表中的文件和縮略圖都可以進行播放,同時常按縮略圖會跳出自定義對話框,自定義對話框功能為分享、刪除文件等。
3.2.1 縮略圖實現(xiàn)
無論圖片還是視頻縮略圖均使用GridView布局,為GridView添加Adapter便可根據(jù)文件的個數(shù)動態(tài)添加縮略圖個數(shù)。此處為采用回調(diào)的方式自定義Adapter繼承BaseAdapter,要實現(xiàn)的有四個方法,其中最重要的有兩個,getCount()和getView(),getCount()返回縮略圖的個數(shù),getView()返回縮略圖,在返回縮略圖的過程中需要創(chuàng)建一個ImageView對象,而利用ViewHolder和convertView結(jié)合便可以不重復創(chuàng)建ImageView對象,convertView.setTag()便是把創(chuàng)建的ImageView對象保存在convertView中,以待復用,convertView.getTag()便是把保存在convertView中的ImageView取出,進行復用。
以上是把生成的縮略圖顯示在界面上,而生成圖片的縮略圖文件則用到了位圖工廠BitmapFactory,通過BitmapFactory可以生成一個原圖片的拷貝,同時其格式為bitmap,便可以修改大小了,這樣最終得到的圖片便是需要的縮略圖文件。而生成視頻的縮略圖文件則先通過ThumbnailUtils來創(chuàng)建一個視頻的縮略圖,然后再利用ThumbnailUtils來生成指定大小的縮略圖。
生成縮略圖是一個耗時操作,這時可以利用異步加載,在子線程中處理生成縮略圖的部分,而主線程負責顯示在界面上。本系統(tǒng)利用自定義異步類繼承AsyncTask,重寫doInBackground和onPostExecute兩個方法,便可以實現(xiàn)想要的功能。
3.2.2 查看圖片功能
為了能夠全屏顯示,首先通過DisplayMetrics獲得屏幕分辨率,然后把獲得到的圖片經(jīng)過BitmapFactory生成全屏的圖片。
3.2.3 視頻播放功能
首先播放時通過WindowManager把狀態(tài)欄隱藏,而播放視頻,首先需要解碼,原生的Android視頻播放框架支持的格式很小,這時可以利用一些開源的框架,如百度的Android播放器SDK或者vitamio這種全能多媒體開發(fā)框架,支持硬件解碼與GPU渲染。
本系統(tǒng)采用的是百度的Android播放器SDK,通過BVideoView為媒體播放顯示提供支持,BMediaController為媒體播放控制提供支持,在使用這些時,需導入Jar包、.so動態(tài)庫和相應(yīng)的資源文件。
3.3 音樂播放器
為了實現(xiàn)音樂播放功能,首先自定義服務(wù),通過繼承Android四大組件之一的Service來實現(xiàn)后臺音樂服務(wù),Service可以理解為沒有界面的Activity,但Service比Activity有更高的優(yōu)先級。如圖4所示,在定義服務(wù)中通過Handler機制實現(xiàn)刷新進度條、持續(xù)時間、當前音樂名稱等UI界面,同時提供了播放當前音樂,播放下一首,暫停播放等方法,實現(xiàn)這些方法需要調(diào)用Android的MediaPlayer類。而獲取音樂信息需要另一個組件ContentResolver,ContentProvider和ContentResolver是一對,ContentProvider用來提供內(nèi)容給其他應(yīng)用來操作,ContentResolver用來操作自己或其他應(yīng)用數(shù)據(jù)。通過ContentResolver查詢到Media信息,然后把這些信息封裝到一個Parcelable類中,提供給Service進行處理。音樂列表的展示則通過ListView來實現(xiàn)。
在Activity中調(diào)用Service服務(wù)時,首先通過ServiceConnection獲得自定義服務(wù)通過onBind返回的IBinder對象,通過IBinder對象可以調(diào)用Service中的所有public訪問權(quán)限的方法,還可以通過注冊BroadcastReceiver接收Service發(fā)送的廣播執(zhí)行相應(yīng)操作。Android的IPC通信采用了更適合自己的IBinder機制,而不是Linux 的信號量、共享內(nèi)存、消息隊列等通信方式。
圖4 音樂空間及主界面
3.4 天氣情況
對于天氣情況這種需要獲取實時數(shù)據(jù)的服務(wù)[10],需要找提供穩(wěn)定且準確數(shù)據(jù)的數(shù)據(jù)服務(wù)商,本系統(tǒng)選擇的是百度天氣API。首先通過百度地圖定位返回手機使用者所在的城市,然后創(chuàng)建一個子線程,使用Http協(xié)議獲取到天氣數(shù)據(jù),百度天氣返回的天氣數(shù)據(jù)為xml格式,通過解析xml即可獲得實時天氣數(shù)據(jù),然后利用Handler刷新主線程,把天氣情況顯示在主界面上。
3.5 個人中心
個人中心采用WebService和Android結(jié)合的C/S結(jié)構(gòu)方法設(shè)計,要實現(xiàn)個人中心頁面,必須要實現(xiàn)注冊、登陸功能,首先要搭建數(shù)據(jù)庫,存儲用戶名、密碼等信息,本系統(tǒng)采用MySQL數(shù)據(jù)庫[5],具體數(shù)據(jù)結(jié)構(gòu)如下表1所示。首先,在MyEclipse中新建一個Web Project,其中通過JDBC橋連接數(shù)據(jù)庫,JDBC橋是java提供的一套訪問數(shù)據(jù)庫的統(tǒng)一API。然后新建兩個Servlet,一個為客戶端登陸提供響應(yīng),一個為客戶端注冊提供響應(yīng),都是部署在Tomcat下,結(jié)構(gòu)如圖5所示??蛻舳税l(fā)送請求,服務(wù)器端完成注冊或登陸驗證的操作,這之間通過Request和Response來攜帶數(shù)據(jù),最終實現(xiàn)客戶端登陸、注冊功能。
表1 數(shù)據(jù)結(jié)構(gòu)
圖5 C/S結(jié)構(gòu)圖
3.6 其他功能
如圖6所示,其中活動中心頁面采用ListView布局,主要介紹一些熱門活動,周邊和新聞頁面則是跳轉(zhuǎn)相應(yīng)的網(wǎng)頁。對于違章查詢功能,因為要接入各個地區(qū)的交管系統(tǒng),這里也采用第三方服務(wù)頁面。
圖6 其他功能界面
3.7 測試
本系統(tǒng)經(jīng)測試各項功能可用,部分效果圖如上面的圖片展示,如天氣信息的展示、拍照、攝像、定位、導航等。
4 結(jié)束語
針對當前行車安全的現(xiàn)狀,設(shè)計并實現(xiàn)了基于Android的行車記錄儀APP,這種設(shè)計不但有助于改善交通亂象,同時節(jié)省了硬件成本。在功能設(shè)計上,該系統(tǒng)不僅可以對路徑進行定位和導航,可以拍照、攝像,并對圖片和視頻文件進行管理,同時提供音樂播放等功能,充分滿足用戶駕駛過程中的需要。隨著用戶空間的不斷完善,使用者會體驗到更滿意的服務(wù)。
參考文獻:
[1] 趙娜, 袁家斌, 徐晗. 智能交通系統(tǒng)綜述[J]. 計算機科學, 2014, 41(11).
[2] 東岳. 行車記錄儀漏秒的檢測[J]. 交通與運輸, 2014, 30(3).
[3] 梁景裕. 汽車電子高度集成化路暢暢安導航內(nèi)置行車記錄儀體驗評測[J]. 消費電子, 2014(17).
[4] 張華亮. 基于Linux自由及開放源代碼的Android操作系統(tǒng)[J]. 計算機與網(wǎng)絡(luò), 2016, 42(3).
[5] 王躍, 許志遠, 嚴玨瑋. 移動智能終端操作系統(tǒng)技術(shù)發(fā)展[J]. 中興通訊技術(shù), 2014, 20(2).
[6] 宋強, 齊貴寶, 宋占偉. 基于Android系統(tǒng)的H.264視頻監(jiān)控設(shè)計[J]. 吉林大學學報:信息科學版, 2012, 30(3).
[7] 顧聰, 陳益強, 劉軍發(fā), 等. 基于Android平臺的室內(nèi)LBS系統(tǒng)設(shè)計與實現(xiàn)[J]. 計算機工程與設(shè)計, 2012, 33(1).
[8] 張波. 基于Android平臺的百度地圖開發(fā)研究[J]. 軟件導刊, 2015, 14(7).
[9] 蔣建華. 行車記錄儀中GIS的設(shè)計研究[J]. 信息技術(shù)與信息化, 2016(4).
[10] 趙士達, 張楠, 楊爽. 基于云計算和Android的地震應(yīng)急信息獲取系統(tǒng)[J]. 計算機應(yīng)用, 2014(z1).