基于Android手机的实时公交查询系统设计与实现
作者:***
来源:《物联网技术》2015年第11期
        摘 要:为了提高城市公交的智能化服务水平,方便智能手机用户查询实时公交信息,依托西安市公交智能调度系统数据库,运用移动互联网技术,设计了基于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 系统架构设计
android软件
        本系统采用客户端/服务器(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:///chaxun/shishibusinfo.jsp? routeName=46,参数routeName代表要查询线路的名称。在程序设计中把接口API地址作为参数创建Java的URL类的对象url,用HttpURLConnection类创建对象conn,通过URL对象的openConnection()方法打开对服务器的连接,将线路查询参数传递给服务器,通过HttpURLConnection对象的getInputStream()方法获得服务器返回的数据流[5]。关键代码如下:
        URL url = new URL("http:///chaxun/shishibusinfo.jsp? routeName ="+ routeName);
        HttpURLConnection conn = (HttpURLConnection) url.openConnection();
        BufferedReader busbr = new BufferedReader(new InputStreamReader(InputStream()));
        String inputline = null;//存储读取出的一行数据
        StringBuffer bussb = new StringBuffer();
        while ((inputline = adLine()) != null) { //用循环来读取获得的数据
        bussb.append(inputline);
        }
        4.3 返回数据的解析与显示
        服务器端返回到客户端的Json格式公交实时运行数据内容包括:上下行线路所有的站点名称、上下行线路所有正在运行的公交车所在位置及公交车车牌号等信息。系统需要对数据进行解析后才能显示给用户,本系统使用Android自带的org.json包中的JSONObject类进行数据解析,并使用自定义控件HorizontalListView实现实时公交信息横向显示,用户可以左右滑动查看,实时公交信息显示效果如图4所示。
        图4 实时公交信息显示效果
        5 系统应用
        本系统开发完成后作为“西安运政”手机App的一个功能模块,用户登录“西安运政网”(http://www.xianyz),用手机扫描“西安运政”手机App二维码即可安装使用。该系统功能堪比市民随身携带的小型实时公交电子站牌,市民可在任何地方、任何时间通过手机查询到公交车辆的实时位置信息,便于规划出行计划和选择出行线路,解决了人们在公交站点苦苦等待的煎熬。本系统上线运行开通后,受到了广大市民的一致好评,取得了良好的社会效益。
        6 结 语

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。