余基映 向真彪
摘要:為了提高當(dāng)今城市公交系統(tǒng)的智能化服務(wù)水平,方便移動(dòng)終端用戶獲取實(shí)時(shí)的公交路線信息,設(shè)計(jì)基于Android平臺(tái)的公交路線查詢系統(tǒng)。利用聚合數(shù)據(jù)平臺(tái)提供的數(shù)據(jù)接口,獲取到本系統(tǒng)需要的公交信息,運(yùn)用百度地圖開(kāi)放平臺(tái)提供的接口進(jìn)行精準(zhǔn)定位及周邊公交站點(diǎn)顯示,應(yīng)用廣度優(yōu)先算法、最短路徑算法等對(duì)公交信息進(jìn)行篩選排序,通過(guò)Android應(yīng)用程序接口、數(shù)據(jù)解析及一些開(kāi)源項(xiàng)目完成軟件設(shè)計(jì)及編碼。本系統(tǒng)為居民出行提供了極大的便利。
關(guān)鍵詞:Android平臺(tái);公交路線查詢;聚合數(shù)據(jù);百度地圖開(kāi)發(fā)
中圖分類號(hào):TP311 文獻(xiàn)標(biāo)志碼:A 文章編號(hào):1009-3044(2018)16-0086-03
1 引言
城市交通壓力不斷加重,公交線路也越來(lái)越多,許多公交線路及車輛信息也不時(shí)在發(fā)生調(diào)整,因而居民難以掌握公交路線的實(shí)時(shí)信息。為了改善城市公共交通系統(tǒng)的服務(wù)能力,便于廣大居民出行,獲取實(shí)時(shí)公交路線信息,從而設(shè)計(jì)基于Android平臺(tái)的公交路線查詢系統(tǒng)。本系統(tǒng)為用戶提供實(shí)時(shí)公交信息,提高出行效率,提升居民的幸福指數(shù),從而提升城市公交的服務(wù)水平[1-2]。
2 系統(tǒng)設(shè)計(jì)
2.1 功能需求設(shè)計(jì)
公交查詢系統(tǒng)包含如下四個(gè)模塊:搜索,乘車,附近,個(gè)人。其對(duì)應(yīng)的功能需求圖如圖1所示。
2.2 流程圖設(shè)計(jì)
公交查詢系統(tǒng)有兩個(gè)核心模塊:“搜索”模塊和“乘車”模塊。
“搜索”模塊,系統(tǒng)自動(dòng)為用戶當(dāng)前位置定位,用戶可以選擇城市,輸入公交線路或者站點(diǎn),點(diǎn)擊搜索按鈕,請(qǐng)求網(wǎng)絡(luò)服務(wù)或者加載本地?cái)?shù)據(jù)庫(kù)公交信息進(jìn)行顯示,“搜索”流程圖如圖2。
“乘車”模塊,起點(diǎn)為用戶的當(dāng)前位置,考慮到擴(kuò)展性,可手動(dòng)輸入起點(diǎn),然后輸入終點(diǎn),還可以交換按鈕交換起點(diǎn)終點(diǎn),點(diǎn)擊搜索按鈕,請(qǐng)求網(wǎng)絡(luò)數(shù)據(jù)或者加載本地?cái)?shù)據(jù)庫(kù)數(shù)據(jù),顯示“乘車”搜索的結(jié)果集,用戶可根據(jù)需求進(jìn)行篩選結(jié)果集,得到想要的出行路徑。“乘車”流程圖如圖3。
2.2 數(shù)據(jù)庫(kù)設(shè)計(jì)
系統(tǒng)使用SQLite數(shù)據(jù)庫(kù)[3]。SQLite是一款輕型的嵌入式數(shù)據(jù)庫(kù),它占用資源非常的低。它提供了是一些函數(shù)接口,可以用這些函數(shù)操作數(shù)據(jù)庫(kù)[4]。數(shù)據(jù)庫(kù)名稱為“gjt”,其中包含幾個(gè)表:BusLineResult,BusLineStationDes,PassBusResult,TransferBusLineResult,usualResult,TransferBusLineSegmentList。
3 系統(tǒng)開(kāi)發(fā)環(huán)境
系統(tǒng)使用的操作系統(tǒng)為Android 4.0,開(kāi)發(fā)工具為ADT,Android手機(jī),數(shù)據(jù)庫(kù)為SQLite Expert Professional 3,開(kāi)發(fā)語(yǔ)言為Java。
3.1系統(tǒng)的開(kāi)發(fā)環(huán)境搭建
Google公司官方提供了集成式開(kāi)發(fā)工具IDE ADT-Bundle for Windows[5]。包含了編譯運(yùn)行工具Eclipse,并且包含了各種方便實(shí)用的開(kāi)源插件,有利于Android開(kāi)發(fā)人員通過(guò)Eclipse來(lái)配置Android開(kāi)發(fā)環(huán)境,環(huán)境搭建步驟如下:
1)安裝Java開(kāi)發(fā)語(yǔ)言開(kāi)發(fā)包jdk。
2)下載開(kāi)發(fā)工具ADT-Bundle for Windows。根據(jù)自己的要求安裝ADT-Bundle。
3)安裝Android SDK,打開(kāi)安裝的開(kāi)發(fā)工具Eclipse里面的SDK Manager.exe,選擇自己需要的模擬器等。
3.2 百度地圖開(kāi)發(fā)的引入
系統(tǒng)開(kāi)發(fā)之前,需要在百度地圖開(kāi)發(fā)頁(yè)面注冊(cè)申請(qǐng)密鑰。百度地圖申請(qǐng)Key成功之后,輸入系統(tǒng)的應(yīng)用名稱,選擇需要的服務(wù)內(nèi)容,其中的包名為該系統(tǒng)“公交查詢系統(tǒng)”的包名,SHA1為開(kāi)發(fā)工具Eclipse中自帶的值。將百度地圖開(kāi)發(fā)所需的Jar包和相應(yīng)So文件加入“公交通”工程的目錄下,再將其添加在“公交通”應(yīng)用的AndroidManifest.xml中,配置申請(qǐng)的key。
3.3聚合數(shù)據(jù)接口
聚合數(shù)據(jù)是提供原始數(shù)據(jù)API服務(wù)的綜合性云數(shù)據(jù)平臺(tái)?!叭珖?guó)公交及路徑規(guī)劃查詢”是聚合數(shù)據(jù)平臺(tái)中由天翼電信提供的數(shù)據(jù)獲取途徑,用戶在聚合數(shù)據(jù)注冊(cè)認(rèn)證,申請(qǐng)數(shù)據(jù)成功之后,就可以查詢到申請(qǐng)的AppKey [6]。按照其指定的數(shù)據(jù)獲取方式,就能得到公交路線相關(guān)數(shù)據(jù)。
4 系統(tǒng)實(shí)現(xiàn)
4.1搜索模塊的實(shí)現(xiàn)
輸入公交線路可以完成查詢(如:211),公交信息結(jié)果如圖4。“搜索”頁(yè)面也可以輸入公交站點(diǎn)(如“五和路口”公交站點(diǎn)),搜索顯示結(jié)果如圖5。
4.2 乘車模塊的實(shí)現(xiàn)
用戶輸入起點(diǎn)公交站臺(tái)、終點(diǎn)站臺(tái)后,系統(tǒng)則以列表的形式顯示乘車信息。比如起點(diǎn)為“湖北民院”,終點(diǎn)為“火車站”,搜索結(jié)果如圖6。本系統(tǒng)提供了“最快捷”“少換乘”“少步行”“不乘地鐵”幾種方式。
聚合數(shù)據(jù)提供的接口根據(jù)給定地點(diǎn)的經(jīng)緯度進(jìn)行查詢,字符串拼接得到URL,利用xUtils下HttpUtils的對(duì)象以Get方式請(qǐng)求服務(wù)器端獲得Json數(shù)據(jù),請(qǐng)求成功時(shí)onSuccess會(huì)自動(dòng)被調(diào)用,失敗時(shí)onFailure方法會(huì)被調(diào)用,onSuccess中數(shù)據(jù)返回時(shí)利用Google提供的Gson進(jìn)行解析數(shù)據(jù),數(shù)據(jù)被解析并暫存在實(shí)體對(duì)象中,同時(shí)存儲(chǔ)在數(shù)據(jù)庫(kù)中便于沒(méi)有網(wǎng)絡(luò)的情況下查詢。
5 結(jié)束語(yǔ)
基于Android平臺(tái)的公交查詢系統(tǒng),通過(guò)聚合數(shù)據(jù)平臺(tái)提供的數(shù)據(jù)接口,運(yùn)用百度地圖開(kāi)放平臺(tái)提供的接口為居民提供便捷的公交查詢服務(wù)。系統(tǒng)還有一些功能沒(méi)有完善,比如搜索頁(yè)面城市的檢索,乘車頁(yè)面的算法改進(jìn)實(shí)現(xiàn)等,同時(shí)還有實(shí)時(shí)數(shù)據(jù)獲取、存儲(chǔ)方面還有待改善,今后在此基礎(chǔ)上不斷改善,力求提高用戶使用滿意度。
參考文獻(xiàn):
[1] 王海峰.基于Android平臺(tái)的城市公交查詢系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)時(shí)代,2013(4):26-28.
[2] 孫金華,孟昭睿,李曉偉.基于Android系統(tǒng)的廈門公交查詢系統(tǒng)設(shè)計(jì)[J].重慶科技學(xué)院學(xué)報(bào):自然科學(xué)版,2014,16(6):115-118.
[3] 唐敏, 宋杰.嵌入式數(shù)據(jù)庫(kù)SQLite的原理與應(yīng)用[J].電腦知識(shí)與技術(shù), 2008,1(4):600-602.
[4] 尹京花, 王華軍.基于Android開(kāi)發(fā)的數(shù)據(jù)存儲(chǔ)[J].數(shù)字通信, 2012, 39(6):79-81.
[5] Nicholson T A J. Finding the shortest route between two points in a network[J]. Computer Journal,2006,9(3):275-280.
[6] 聚合數(shù)據(jù)[EB/OL].https://www.juhe.cn/.