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