摘 要:為了提高城市公交的智能化服務(wù)水平,方便智能手機用戶查詢實時公交信息,依托西安市公交智能調(diào)度系統(tǒng)數(shù)據(jù)庫,運用移動互聯(lián)網(wǎng)技術(shù),設(shè)計了基于Android手機平臺的實時公交查詢系統(tǒng)手機客戶端,并利用Java、SQLite、Json等技術(shù)完成了系統(tǒng)設(shè)計,市民通過手機客戶端即可隨時隨地查詢所等待公交線路的公交車輛實時位置信息,從而可以更合理地安排公交出行時間,提高出行效率。
關(guān)鍵詞:Android;Json;實時公交查詢;手機客戶端
中圖分類號:TP311 文獻標識碼:A 文章編號:2095-1302(2015)11-00-02
0 引 言
城市公共交通是與人民群眾生產(chǎn)、生活息息相關(guān)的重要基礎(chǔ)設(shè)施,是關(guān)系國計民生的社會公益事業(yè)[1]。它的發(fā)展狀況和服務(wù)水平往往會成為人們衡量城市經(jīng)濟發(fā)展水平和綜合素質(zhì)的標準,對城市的形象起著舉足輕重的作用[2]。公交車是市民出行首選的交通工具。目前,西安市正在推廣建設(shè)公交智能調(diào)度系統(tǒng),并已在部分城市主干道公交車站設(shè)置了公交電子站牌,方便了市民出行。但是,由于電子站牌安裝的數(shù)量還較少,很多情況下乘客不知道自己乘坐的公交車何時能到站,無法合理安排乘車時間,所以等待公交車還是眾多市民的煩惱。
基于以上原因,為方便市民公交出行,本文依托西安市公交智能調(diào)度系統(tǒng)數(shù)據(jù)庫,運用移動互聯(lián)網(wǎng)技術(shù),設(shè)計了一款基于Android手機平臺的實時公交查詢系統(tǒng)手機客戶端,市民通過手機客戶端可隨時隨地查詢待乘公交線路的公交車輛實時位置信息,便于合理安排乘車時間,提高了出行效率,彌補了公交電子站牌少的不足。
1 移動互聯(lián)網(wǎng)及Android系統(tǒng)介紹
近年來,移動互聯(lián)網(wǎng)技術(shù)的快速發(fā)展和智能手機的大量普及,為市民通過智能手機終端隨時隨地查詢實時公交信息提供了可能。移動互聯(lián)網(wǎng)是互聯(lián)網(wǎng)與移動通信各自獨立發(fā)展后互相融合的新興市場,從終端的定義來說,就是用戶使用手機、上網(wǎng)本、筆記本電腦、平板電腦、智能本等移動終端,通過移動網(wǎng)絡(luò)獲取移動通信網(wǎng)絡(luò)服務(wù)和互聯(lián)網(wǎng)服務(wù)[3]。移動終端操作系統(tǒng)是管理移動終端硬件與軟件資源的程序,主要有Android、iOS、BlackBerry OS、Firefox OS等。根據(jù)工業(yè)和信息化部發(fā)布的《2015年7月份通信業(yè)經(jīng)濟運行情況》報告,我國移動互聯(lián)網(wǎng)用戶總數(shù)規(guī)模達到9.37億戶,截止2015年7月底,使用手機上網(wǎng)的用戶總數(shù)達到8.9億戶。
Android一詞的本義指“機器人”,同時也是Google于2007年11月5日宣布的基于Linux平臺的開源手機操作系統(tǒng)的名稱,該平臺由操作系統(tǒng)、中間件、用戶界面和應(yīng)用軟件組成[4]。2015年3月,Google發(fā)布了Android 5.1版本,新系統(tǒng)更加穩(wěn)定,同時可支持多張SIM卡,并加強了對設(shè)備保護機制。由于Android系統(tǒng)是免費、開放的平臺,所以其受到了三星、華為、中興等諸多手機廠商的支持。根據(jù)凱度移動通信消費者指數(shù)(Kantar Worldpanel Com Tech)2015年6月公布的智能手機操作系統(tǒng)市場份額數(shù)據(jù),Android系統(tǒng)在中國市場的占有率達79%,是中國智能手機市場占有率最大的操作系統(tǒng)。
2 系統(tǒng)核心功能
本系統(tǒng)需要實現(xiàn)的核心功能是:用戶在系統(tǒng)查詢界面輸入要乘坐的公交線路,能查詢到該線路上、下行兩條線所有公交車輛的實時位置信息,從而可確定最近的一班公交車離乘車站點還有幾站距離。
3 系統(tǒng)架構(gòu)設(shè)計
本系統(tǒng)采用客戶端/服務(wù)器(Client/Server)模式,客戶端用Java語言開發(fā),在Android平臺上運行。服務(wù)器端操作系統(tǒng)是Windows Server 2008,公交智能調(diào)度系統(tǒng)數(shù)據(jù)庫采用Oracle 11g,公交車位置信息來源于公交車的車載GPS數(shù)據(jù),實時公交查詢接口程序采用jsp語言編寫,服務(wù)器采用Tomcat6.0。客服端通過3G、4G或者WiFi網(wǎng)絡(luò)訪問服務(wù)器端公交查詢接口,服務(wù)器端將查詢到的實時公交數(shù)據(jù)以Json格式返回給客戶端,系統(tǒng)的架構(gòu)如圖1所示。
4 系統(tǒng)主要功能設(shè)計與實現(xiàn)
4.1 線路查詢界面功能
用戶在系統(tǒng)查詢界面輸入公交線路,即可查詢該線路實時運行信息。查詢界面在設(shè)計時體現(xiàn)了簡潔大方的風格,以方便用戶操作。使用XML布局文件控制UI界面,并利用Java語言進行程序開發(fā)。為方便查詢,用戶在查詢界面線路輸入文本框輸入公交線路名稱時,系統(tǒng)會訪問遠程服務(wù)器匹配用戶輸入的內(nèi)容,自動彈出一個相關(guān)線路下拉列表框方便用戶選擇,當用戶點擊下列表框中的公交線路選項時,即可查詢到該線路的實時信息,該功能使用Android的AutoCompleteTextView控件實現(xiàn),公交線路下拉列表框功能效果如圖2所示。
圖1 系統(tǒng)架構(gòu)圖
另外,本系統(tǒng)還可以對用戶公交線路查詢記錄進行自動收藏,并使用SQLite數(shù)據(jù)庫存儲用戶線路查詢記錄,查詢記錄表中包括編號、線路名稱、起點站、終點站、上下行等字段,查詢記錄以列表的形式在查詢界面下方顯示,用戶下次直接點擊某一記錄就可以查詢,無需再次輸入線路名稱,另外,用戶根據(jù)需要還可以對某一查詢記錄進行刪除,公交線路查詢記錄收藏功能效果如圖3所示。
圖2 下拉列表框功能效果 圖3 查詢記錄收藏功能效果
4.2 獲取服務(wù)器端實時公交信息
用戶在客戶端查詢界面線路下拉列表框中選擇要查詢的公交線路,客戶端程序向服務(wù)器端應(yīng)用程序訪問接口API傳遞公交線路查詢參數(shù)(如線路名字),服務(wù)器端應(yīng)用程序根據(jù)查詢參數(shù)在公交智能調(diào)度系統(tǒng)數(shù)據(jù)庫中調(diào)取該線路實時公交信息,并將線路信息以Json格式返回到客戶端。
服務(wù)器端公交線路的實時信息查詢接口API的示例為:http://www.xxx.com/chaxun/shishibusinfo.jsp? routeName=46,參數(shù)routeName代表要查詢線路的名稱。在程序設(shè)計中把接口API地址作為參數(shù)創(chuàng)建Java的URL類的對象url,用HttpURLConnection類創(chuàng)建對象conn,通過URL對象的openConnection()方法打開對服務(wù)器的連接,將線路查詢參數(shù)傳遞給服務(wù)器,通過HttpURLConnection對象的getInputStream()方法獲得服務(wù)器返回的數(shù)據(jù)流[5]。關(guān)鍵代碼如下:
URL url = new URL("http://www.xxx.com/chaxun/shishibusinfo.jsp? routeName ="+ routeName);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
BufferedReader busbr = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String inputline = null;//存儲讀取出的一行數(shù)據(jù)
StringBuffer bussb = new StringBuffer();
while ((inputline = busbr.readLine()) != null) { //用循環(huán)來讀取獲得的數(shù)據(jù)
bussb.append(inputline);
}
4.3 返回數(shù)據(jù)的解析與顯示
服務(wù)器端返回到客戶端的Json格式公交實時運行數(shù)據(jù)內(nèi)容包括:上下行線路所有的站點名稱、上下行線路所有正在運行的公交車所在位置及公交車車牌號等信息。系統(tǒng)需要對數(shù)據(jù)進行解析后才能顯示給用戶,本系統(tǒng)使用Android自帶的org.json包中的JSONObject類進行數(shù)據(jù)解析,并使用自定義控件HorizontalListView實現(xiàn)實時公交信息橫向顯示,用戶可以左右滑動查看,實時公交信息顯示效果如圖4所示。
圖4 實時公交信息顯示效果
5 系統(tǒng)應(yīng)用
本系統(tǒng)開發(fā)完成后作為“西安運政”手機App的一個功能模塊,用戶登錄“西安運政網(wǎng)”(http://www.xianyz.com),用手機掃描“西安運政”手機App二維碼即可安裝使用。該系統(tǒng)功能堪比市民隨身攜帶的小型實時公交電子站牌,市民可在任何地方、任何時間通過手機查詢到公交車輛的實時位置信息,便于規(guī)劃出行計劃和選擇出行線路,解決了人們在公交站點苦苦等待的煎熬。本系統(tǒng)上線運行開通后,受到了廣大市民的一致好評,取得了良好的社會效益。
6 結(jié) 語
本文基于Android手機平臺,依托西安市公交智能調(diào)度系統(tǒng)數(shù)據(jù)庫,設(shè)計了實時公交查詢系統(tǒng)手機客戶端。實踐表明,該系統(tǒng)運行穩(wěn)定,操作簡便,市民通過該系統(tǒng)可以隨時隨地查看所等待公交線路的公交車輛實時位置信息,便于市民合理安排乘車時間,提高出行效率。該系統(tǒng)的上線運行彌補了西安公交電子站牌少的不足,避免了盲目候車等問題,具有重要的實用價值。今后,還將對該系統(tǒng)的功能進行擴展,如增加公交車到站時間、車內(nèi)乘客擁擠情況等功能,以便更好的為市民服務(wù)。
參考文獻
[1] 西安市優(yōu)先發(fā)展城市公共交通實施意見[EB/OL].http://www.xa.gov.cn/websac/cat/1209336.html.
[2] 馬世哲,劉海恒.讓城市公交回歸公益[EB/OL].http://www.lcrb.cn/focus/20141205/21265.html.
[3] 移動互聯(lián)[EB/OL].http://baike.baidu.com/view/48474.htm.
[4] Android是什么?什么是Android手機?[EB/OL].http://digi.tech.qq.com/a/20091213/000180.htm.
[5] 郭宏昌.基于Android的營運車輛查詢系統(tǒng)在運政稽查中的應(yīng)用[J].物聯(lián)網(wǎng)技術(shù),2015,5(8):44-45.