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