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