


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