夏智偉
(山東交通職業(yè)學院,山東 濰坊261206)
智慧交通是在交通領域中充分運用物聯(lián)網(wǎng)、云計算、人工智能、自動控制、移動互聯(lián)網(wǎng)等現(xiàn)代電子信息技術面向交通運輸?shù)姆障到y(tǒng)。移動通信技術能使城市內(nèi)各類公共交通,如地鐵、城市軌道、公交等的相關數(shù)據(jù)進行實時獲取、整合、分析、發(fā)布[1]。通過對城市實時交通態(tài)勢的準確把握、短期需求的預測、實時交通信息的發(fā)布,實現(xiàn)城市交通精細化管理,提升交通運輸服務質(zhì)量,從而實現(xiàn)城市大交通與移動互聯(lián)網(wǎng)的深度融合[2]。
基于Android 的智慧交通系統(tǒng)的設計與研究通過對智慧交通領域比較典型的應用的研究,實現(xiàn)了智慧環(huán)境監(jiān)測、ETC不停車收費、智能停車場、公交報站系統(tǒng)等應用功能。
圖1
本項目通過智慧交通系統(tǒng)API 從服務器端獲取環(huán)境、車牌信息及余額、停車場停車情況、公交車路次、當前位置等信息并顯示在移動端的環(huán)境監(jiān)測、ETC 不停車收費、智能停車場和公交報站系統(tǒng)等界面上。
圖2
整體界面設計主要包含標題欄ActionBar、ViewPager、Fragment 和底部自定義View,智慧環(huán)境監(jiān)測以及環(huán)境監(jiān)測、ETC 不停車收費、智能停車場和公交報站系統(tǒng)等界面的搭建。
ActionBar 是一個非常重要的交互元素,針對于平板設備等相對較大的屏幕可以展示更多、更豐富的內(nèi)容。Android3.0以上版本的 Activity 中都默認包含 ActionBar,在AndroidMainfest.xml 中指定其theme 是Theme.Holo 或其子類。
使用ViewPager+Fragment 實現(xiàn)多頁面滑動切換、創(chuàng)建attr.xml 文檔自定義底部導航欄中按鈕和文字的相關屬性,包含圖標、顏色、文本、文本字體大小等,完成在組件中使用自定義屬性并為屬性賦值,在java 代碼中使用自定義屬性并獲取自定義屬性值進行操作[3]。
繪制底部icon 時,確定icon 的寬度和高度,使用onDraw方法繪制圖標和文本,使用drawBitmap 繪制原圖,創(chuàng)建寬度為getMeasuredWidth ()、高度為getMeasuredHeight (),自定義invalidateView 方法實現(xiàn)重繪。
智慧環(huán)境監(jiān)測界面使用列表布局、圖片按鈕及動畫完成頁面搭建,通過一般處理程序從智慧交通系統(tǒng)API 中實現(xiàn)移動端與服務器端的通信。
ListView 是比較常用的組件,其以列表的形式展示具體內(nèi)容,并且能夠根據(jù)數(shù)據(jù)的長度自適應顯示,完成主要傳感器數(shù)據(jù)的采集。將傳感器、繼電器、ZigBee 模塊等設備與服務器相連接,制定好通信協(xié)議后,進行數(shù)據(jù)的接收與設備的控制。報警燈、風扇、燈泡等設備控制都是通過控制繼電器控制設備開關,以風扇為例,當按下風扇按鈕時,通過線程向服務器發(fā)送指令[4]。
本頁面顯示卡號時用到了文本框和編輯框,用于實現(xiàn)文字的提示和數(shù)據(jù)的顯示,使用一般處理程序取服務器發(fā)送的JSON 數(shù)據(jù)完成解析,實現(xiàn)信息采集及信息的更新。JSON 是一種輕量級的數(shù)據(jù)交換格式,JSON 一共有兩種數(shù)據(jù)結構一種是JSON 對象(object),是由花括號包裹起來的若干個的鍵值對的集合;一種是JSON 數(shù)組,是由方括號包裹的若干個對象的集合,常用的兩類就是JSONObject 和JSONArray,分別代表了json 對象和json 數(shù)組,這兩類都實現(xiàn)了JSON 這個接口。
①JSONArray jArray = new JSONObject(json).getJSONArray("busStops");
②int count = jArray.length();
③for (int index = 0; index <count; index++) {
④String id = jArray.optJSONObject (index).getString("_id").toString();
⑤String stopName = jArray.optJSONObject(index).getString("stop").toString();)
使用new JSONObject(json).創(chuàng)建JSONObject 對象,然后調(diào)用getJSONArray 方法轉(zhuǎn)換為JSONArray,在循環(huán)中使用optJSONObject 方法獲取字段為_id、stop 的數(shù)據(jù)值,將獲取的數(shù)據(jù)以鍵值對的形式存入map,然后將map 存入List 列表類型變量stopsData 中去,創(chuàng)建SimpleAdapter 適配器,設置適配器到ListView 上。
圖3
本頁面設置背景圖片后添加ListView,用于顯示多路公交車及線路。搭建公交報站及動畫頁面,使用Tween Animation定義一個開始的位置和一個結束位置,定義移動時間,隨后就能自動產(chǎn)生移動動畫。在汽車報站系統(tǒng)中當隨意選擇一個站點時,跳轉(zhuǎn)到動畫公交報站頁面,通過動畫模擬公交經(jīng)過的站點,當?shù)竭_站點時,公交車停止,然后繼續(xù)前進。
①TranslateAnimation animation = new TranslateAnimation(0,900,0,0);
②animation.setDuration(2000);
③animation.setFillEnabled(true);
④animation.setFillAfter(true);
⑤iv_bus.setAnimation(animation);
⑥animation.startNow();
實例化TranslateAnimation 時確定初始值0,終止值900,確定前進的時間為2000,設置動畫填充效果不回到原地,設置動畫不回到起始位置,設置汽車圖片的動畫效果,啟動動畫,然后添加動畫的事件監(jiān)聽器,通過調(diào)用onAnimationEnd 方法完成在動畫結束后繼續(xù)觸發(fā)下一個動畫,通過獲取服務器端的數(shù)據(jù)完成站點位置及時間的更新。語音播報利用Android 系統(tǒng)中自帶的TextToSpeech 類就可以實現(xiàn)語音的自動播報。
本項目是基于Android的智慧交通系統(tǒng),使用Android 實現(xiàn)了在移動端上的頁面設計、智慧環(huán)境監(jiān)測等功能,是信息技術與交通的有機融合,以期給整個交通行業(yè)帶來了創(chuàng)新與變革。