宋紅凱 杜洪波 程宇航


摘 ?要: 校內循環車的在校園應用越來越廣泛,但校內循環車存在同學搶座、無座、等待時間太長等現象。為解決這些弊端,本文設計了基于百度地圖的掌上校車APP。利用百度地圖開放平臺地圖、定位、鷹眼SDK等服務接口,實現界面地圖的顯示、實時精確定位、運動軌跡顯示等,并合理運用到掌上校車APP上。該APP設計了三種不同的乘車模式,針對不同乘車環境,在校園循環車上的應用得到了較好效果。
關鍵詞: 掌上校車;百度地圖;位置共享;百度鷹眼;移動應用
中圖分類號: TP31 ? ?文獻標識碼: A ? ?DOI:10.3969/j.issn.1003-6970.2019.05.004
本文著錄格式:宋紅凱,杜洪波,程宇航,等. 基于“百度地圖”的掌上校車APP設計[J]. 軟件,2019,40(5):2125
【Abstract】: The applying of campus cycle car is becoming more extensive, but campus car born some phenomena that students take a seat in disorder ,no seat and waiting too long,etc. In order to solve these problems, this paper developed this APP called “Palm School Bus” based on Baidu map. Adopting the map, location, eagle-eye SDK and other service interfaces provided by Baidu map open platform, we can realize the display of map at interface and motion trajectory, real-time locating accurately, and apply them to "Palm School Bus" APP reasonably. The APP has designed three different modes of riding. The application of the APP in the campus cycle car has achieved good results for different riding environments.
【Key words】: Palm School Bus; Baidu Map; Location sharing; Baidu eagle-eye; Mobile application
0 ?引言
隨著高校建設發展,適應大學生校園內出行的校內循環車遍及校園。但有些想坐車的同學無法判斷車在哪、有沒有座,而放棄坐車,導致校內循環車的利用率不高,以及上下課高峰時期出現同學搶座而造成沖突。為解決這些弊端,這款基于百度地圖的掌上校車APP便應運而生。此APP的管理員模式為校內循環車的司機登錄,通過司機的手機定位[1],將其經緯度發送到數據庫中,同學手機中的APP再從數據庫中提取經緯度而獲取司機的位置,結合同學自身的位置預定校車座位,極大地減少了同學們的等待時間,讓時間更加的高效充分利用。在互聯網時代飛速發展、國家大力支持科創的時代背景下,“掌上校車”又把校園智能化推上了新的臺階。
1 ?作品實現技術
1.1 ?地圖與定位
依托百度位置大數據和高精尖定位技術的百度地圖開放平臺,百度地圖Android SDK[2]提供了地圖、定位等服務接口,通過調用該SDK服務接口訪問百度地圖服務和數據,實現界面顯示地圖和快速、精準地獲取司機位置信息,從而讓師生知道此時此刻校園車的精確位置。
同時使用了連續定位。在實際定位場景中,可能會存在很多的位置抖動,連續定位展示了一種對定位結果進行的平滑優化處理實際測試,該平滑策略在市區步行場景下,有明顯平滑效果,有效減少了部分抖動。
1.2 ?用戶模式下顯示校車位置
不像常見的客戶-服務器范例,SQLite引擎不是個程序與之通信的獨立進程,而是連接到程序中成為它的一個主要部分。主要的通信協議是在編程語言內的直接API[3]調用。這在消耗總量、延遲時間和整體簡單性上有積極的作用。整個數據庫(定義、表、索引和數據本身)都存儲在宿主主機上的一個單一的文件中。它的簡單的設計是通過在開始一個事務的時候鎖定整個數據文件而完成的。
Android操作系統中集成了SQLite數據庫[4]。因此,軟件開發登錄的時候,通過從SQLite數據庫中查詢數據實現判斷用戶名密碼是否正確,并調出數據庫中該賬號對應的個人信息,如班級、姓名、學號等,并保存至個人中心界面。另外,利用Sharepre?ferences可以對輕量級數據[5]進行存儲的特點,將本次輸入的用戶名密碼存入手機File,實現記住用戶名密碼的功能。圖1為SQLite數據庫的實現流程。
SQLite數據庫中寫入了兩種用戶名,一種是供正常使用該APP的師生登錄,另一種是管理員賬號,僅供校車司機使用。
管理員模式下登錄后進入的是簡易界面,司機發車后,在該界面下點擊相應按鈕,將實時定位后獲取的經緯度上傳至云服務器[6]。
用戶模式下,則實時從云服務器中獲取司機也就是校園車的經緯度,再用自定義Maker,將校車位置顯示在用戶端的地圖界面中。本系統直接使用司機的智能手機作為校車的位置采集終端[7],從而省卻了購買專門的獲取校車位置數據的智能硬件設備的費用。
1.3 ?乘車模式的巧妙化
該界面的特點是按鈕多。本次開發,巧妙利用
Boolean類型變量,對每個按鈕的點擊事件添加if語句,實現按鈕點擊事件順序解鎖,每一個按鈕的點擊,又會對相應的按鈕進行鎖定,避免出現多次選擇起點終點的BUG,每人只能預定一次座位。圖2為乘坐校車的流程。
1.4 ?軌跡的實現——百度鷹眼
百度鷹眼SDK是一套軌跡管理服務[8],基于百度地圖開放平臺提供的百度鷹眼接口和云端服務,百度鷹眼經過如圖所示的流程,對軌跡進行處理后,將用戶的乘車軌跡保存到“個人中心”界面的乘坐歷史下,供用戶翻看。圖3為百度鷹眼的實現流程。
1.5 ?下車的提醒——地理圍欄[9]
地理圍欄是LBS中的一個概念,指的是一個虛擬的圍欄空間,通過對位置網格的虛擬化,模擬一個圍欄空間[10]。本系統下的管理員模式,可以在用戶的下車點設置地理圍欄警報。規定一個圓心和半徑,一旦校車進入這個圍欄內,即乘客接近其預設下車點,觸發地理圍欄警報,可以達到智能提醒司機到站停車的目的。
2 ?APP總體設計
2.1 ?乘車中心
本模塊包含百度地圖和乘車模式。百度地圖上實時顯示校內循環車與個人的位置,同學可以直觀的獲取校內循環車的位置信息,以便能根據自身的位置判斷是否預定校車,預定哪輛校車。
乘車模式包括3種:正常模式,觀光模式,行李模式。
正常模式:即一般模式,可以直接預定座位,設置上車地點與下車地點,預定成功后便能在指定位置上車。
觀光模式:用于空閑時觀光校園。選擇此模式后,需要先選擇乘坐的圈數和下車點,最后只需坐在校內循環車上,便可盡情感受校園的美景。
行李模式:主要的服務人群是返校或者離校的同學。相比于正常模式,行李模式可以預定兩個位置,一個位置用于自己乘坐,另一位置可用于放置行李或大型快遞。
2.2 ?資訊中心
作為輔助和美化界面,資訊中心主要發送校內資訊,其中包括美圖欣賞、每日一讀與推薦比賽活動三項服務。
美圖欣賞中會放送一些校園美圖,也會盡力去引用比賽獲獎的校園照片,用心發現身邊的美麗,增加同學們對校園的熱愛以及美好向往。
每日一讀欄目,會每天發布一些包含人生哲理的文章,用于乘車期間身心的愉悅,讓同學們養成一種熱愛閱讀的好習慣,鼓勵同學們在學習方面追求上進。
推薦比賽活動為一些近期將要舉行的校賽、省賽以及國賽,比如說數學建模、大創,以及挑戰杯等等。推薦活動旨在讓同學們實時了解近期賽事,鼓勵同學積極參加各類活動,豐富大學生活。
2.3 ?個人中心
個人中心頁面是具有個性化的一個頁面,除了單獨的個人信息顯示,還包括預約信息、乘坐歷史、信用記錄、校園公告、聯系客服等五項服務內容。
預約信息欄包含了此次乘車的乘車模式、起點、終點及圈數;主要是乘坐的時候觀看,非乘坐期間將顯示為空;乘坐以后的記錄將以軌跡的形式呈現在乘坐歷史當中。
乘坐歷史欄為以往乘車的記錄,目前僅支持搜索起止時間來查詢乘車記錄。此項功能放便同學們查看以前的記錄。
信用記錄欄則是在同學預定校內循環車成功后,若不按規定上車或不去乘車,則留下不良記錄,不良記錄多次累計后,一段時間內該賬號將無法預約校內循環車。
校園公告欄顧名思義就是要發布一些校園臨時公告,主要為學校宣傳做輔助,發送一些教務處、后勤處等公告通知。
聯系客服欄旨在實時接收同學對此款APP的評價與改進建議,解決APP使用中的用戶體驗問題,使該APP更加完善,以便于更好的為同學們服務。
3 ?UI設計
基于百度地圖的掌上校車APP設計出了便于操控、結構清晰、用戶體驗完美的界面,下面就部分界面進行介紹:
主頁面:通過 TextView和 ImageView控件將內容顯示出來,通過百度地圖為開發者提供的二次開發API,利用百度地圖SDK,設計主頁面的地圖,見圖4。
校園資訊:用繼承于ImageLoader使用圖片輪播控件進行圖片輪播,增加美感;基于大眾普遍愛看圖不愛看字,此頁面加入了較多圖片元素來進行相應的服務,見圖5。
個人中心:用ListView控件顯示個人可操作的列表功能,每一項均可以點擊查看。個人中心首頁作為用戶信息的匯總,集結了所有與個人信息相關的管理模塊。在此頁面上,可以清楚知曉登錄用戶的所有信息概況,并能夠進行相關管理與操作,見圖6。
4 ?總結
本文通過分析APP各類功能的實現,實現了互聯網+校車,使乘車信息化。通過百度地圖開放平臺提供的服務接口和云服務器,來實時顯示校車位置。通過按鈕點擊事件的順序解鎖,來實現三種乘車模式的預定。在APP上,百度地圖顯示了校內循環車的位置,實現了校內循環車的座位預定,從而達到了校內循環車的預定智能化,讓更多工大學子的乘車得到了便利,為實現“家文化”有邁向了更重要的一步。
參考文獻
[1] 王萬麗. 基于Android平臺和百度地圖API的定位系統[J]. 電腦編程技巧與維護, 2017(18): 47-48.
[2] 杜傳明. 百度地圖API在小型地理信息系統中的應用[J]. 測繪與空間地理信息, 2011, 34(02): 152-153+156.
[3] 黃偉敏. Android平臺的即時通信系統客戶端設計方案[J]. 現代電子技術, 2011, 34(16): 140-142.
[4] 馬獲蕾, 湯海鳳. Android系統中SQLite數據庫的研究[J]. 電腦知識與技術, 2013, 9(28): 6243-6245+6256.
[5] 吳珊. Android的系統及應用的架構[J]. 電子技術與軟件工程, 2019(03): 148.
[6] 林子雨, 賴永炫, 林琛, 謝怡, 鄒權. 云數據庫研究[J]. 軟件學報, 2012, 23(05): 1148-1166.
[7] 楊博雄, 黃靜, 陳希同, 周佳鑫. 基于智能手機的校園巴士運行位置實時共享系統[J]. 計算機系統應用, 2018, 27(03): 71-76.
[8] 朱孔強, 丁林花, 朱立順, 聶國豪, 席永科. 基于百度鷹眼的校園巴士APP[J]. 數字技術與應用, 2018, 36(04): 42-43+45.
[9] 向華. 一種實時地理位置數據分析技術的探索與實現[J]. 城市勘測, 2016(02): 11-14.
[10] Dean J, Ghemawat S. MapReuce: Simplified data Processing on large cluster [J]. Communication of the ACM, 2008. 51(1): 107-113.