APP下载

智能交通系统中安卓APP的设计

2018-07-11林志谋

常州信息职业技术学院学报 2018年3期
关键词:图表客户端联网

林志谋

(厦门海洋职业技术学院 福建厦门 361012)

0 引言

智能交通系统是指通过对交通基础设施和交通工具的全面信息化、网络化和智能化来提高交通系统的性能,如提高交通安全性、减少交通时间、降低燃油耗费等[1]。物联网是通过射频识别(RFID)、红外感应器、全球定位系统、激光扫描器等信息传感设备,按约定的协议,把任何物品与互联网连接起来,进行信息交换和通讯,以实现智能化识别、定位、跟踪、监控和管理的一种网络[2]。我国非常重视物联网技术在智能交通系统中的应用,2012年工信部发布的《物联网“十二五”发展规划》中,要求在十个重点领域完成一批应用示范工程,其中智能交通位于十大领域的前列。

在动态感知、主动管理、人车路协同的发展理论指导下,将物联网技术应用于智能交通系统,实现智能交通与物联网技术的融合,构建基于物联网的智能交通系统体系架构[3],如图1所示。

感知层:主要功能是信息的感知与采集,通过RFID标签读写器、二维码识别器、传感器、视频摄像头等设备,完成应用数据的采集,通过各种短距离传输技术、自组织网络等技术完成信息的传输和处理。

网络层:主要通过有线网络、无线网络或互联网等网络技术完成信息的传输,是感知层和应用层的连接纽带。

应用层:通过对网络层传送到服务支撑平台的数据,为用户提供丰富的特定服务,可分为实时信息动态感知、智能监控、智能调度、智能管理、智能决策等几个方面,如实时获取城市环境信息、公交站点查询和公交卡账户充值、ETC管理、红绿灯管理、车位管理和使用、车速监控等。

图1 基于物联网的智能交通系统体系架构图

1 智能交通系统中安卓APP客户端的设计

1.1 总体设计

基于物联网的智能交通系统的应用层服务支撑平台有多种实现形式,本系统按照C/S(客户端和服务器)架构模式搭建,利用Tomcat部署Web服务器,MySQL用于存储基于物联网的智能交通系统的各种数据,组织和管理庞大的信息和基于Web的查询请求等。安卓手机客户端APP采用Http通信与Web服务器端进行数据交互,用轻量级的Json数据交换格式对数据进行封装。系统架构如图2所示:

图2 系统架构图

Android平台开发环境采用的是Android Studio IDE,它基于Intellij IDEA开发环境,旨在取代Eclipse和ADT,为开发者提供更好的开发工具,同时还需要下载和配置Java SDK[4]。

1.2 智能交通系统中安卓APP客户端主要功能

该客户端基于安卓平台,可以随时利用网络,实现用户登录,提供查询ETC信息、查询停车场信息、查询公交站台信息、对环境信息进行监控、红绿灯控制、路灯控制等功能。客户端数据流图如图3所示。

图3 客户端数据流图

1)用户注册登录。用户在安装好本系统APP后,新用户需要注册登录;已有账户的用户可以直接输入账户和密码登录。

2)ETC信息查询。可以查询ETC费率和小车的消费的历史记录,并且生成相应的图表供用户查询及统计。

3)环境监控。可以查询各个地区的温度、湿度和PM2.5等信息,并且生成相应的图表,比如折线图、饼状图,供用户直观查询。

4)停车场查询。可以查询停车场的空闲车位、各个停车场的费率、小车的消费历史记录,并且生成相应的图表。

5)公交站点查询。可以查询公交站台上行和下行路线图、现在的行驶位置、到达时间等信息。

6)红绿灯控制。可以设置各个路口的红绿灯状态和时间,实现自动控制和高峰区间的手动控制。

7)路灯控制。可以设置各个路灯的开或关,并且实现自动控制和手动控制。

8)其他功能。如交通信息采集与发布、紧急救援信息发布、公交卡的充值功能、记录的保存或者备份等。

2 系统实现及其关键技术

整个系统的流程图4所示:

由于安卓APP客户端的主要功能中会使用到大量相同技术,为了避免重复,这里主要介绍实现各个功能模块用到的关键技术,而不是单独介绍各个功能模块的具体实现路径。

图4 系统流程图

2.1 用Volley通信框架与服务器通信

本系统数据通信主要是频繁的、数据量小的网络请求,比较适合用Volley通信框架。Volley是Google官方推出的一套小而巧的异步请求库,该框架封装的扩展性很强,支持HttpClient、HttpUrlConnection,它自动调度网络请求,可以有多个并发的网络连接,包含调试和追踪工具等,而且它的API支持对Json数据进行解析,方便与服务器进行数据交换。

使用Volley通信框架时,可以先使用Volley.newRequestQueue()方法创建一个RequestQueue对象,这个对象用来添加Json请求,然后创建一个JsonObjectRequest对象,创建这个对象需要传递5个参数,最后两个参数分别是请求成功和请求失败的处理事件,可以根据需求自己编写onResponse()和onErrorResponse(),比如可以在onResponse()中对返回的JsonObject数据进行解析。

2.2 用MPAndroidChart生成各种统计图表

在系统主要功能介绍当中,经常需要生成各种统计图表,以便友好而且直观地呈现给用户。常用到的图表有折线图、直方图、饼状图,比如在智能交通APP中生成气象信息、用户消费历史记录等,这里可以采用第三方库MPAndroidChart绘制图表。MPAndroidChart是一款基于Android的开源图表库,它不仅可以在Android设备上绘制各种统计图表,而且可以对图表进行拖动和缩放操作,应用起来非常灵活。MPAndroidChart更为轻巧和简单,拥有常用的图表类型:线型图、饼图、柱状图和散点图。

使用MPAndroidChart绘图时,第一个步骤是在project的build.gradle中添加依赖;第二个步骤是在布局文件中使用需要的图表,并在代码中获取实例;最后一个步骤是添加数据。添加数据时,首先将数据集合转换成MPAndroidChart需要的数据集合,然后创建DataSet,DataSet保存某个数据集(比如某条曲线),可以定制需要的样式,比如曲线颜色、图例等。最后添加数据集到LineData中,LineData存放所有的数据,也可以定制样式。

2.3 用Timer和TimerTask定时更新数据

本系统经常需要定时更新数据,比如实现温度、湿度、PM2.5等数据实时显示的功能,实时地显示公交所处位置功能等。Android平台中需要反复按周期执行的方法可以使用Java自带的TimerTask类,TimerTask相对于Thread来说资源消耗更低,除了使用Android自带的AlarmManager,使用Timer定时器是一种更好的解决方法。

Timer是JDK中提供的一个定时器工具,使用的时候会在主线程之外起一个单独的线程执行指定的计划任务,可以指定执行一次或者反复执行多次。TimerTask是一个实现了Runnable接口的抽象类,代表一个可以被Timer执行的任务,需要重载run()方法,在其中实现自己的功能。

2.4 UI的设计

考虑到系统的功能较多,这里采用Fragment进行应用UI的管理。通过组合多个功能Fragment放在一个单独的activity中来创建一个多界面区域的UI,并可以在多个activity里重用某一个Fragment。它可以使APP在现有基础上性能大幅度提高,并且占用内存降低。

在activity代码中添加Fragment就要用到Fragment Manager。Fragment Manager负责管理Fragment,并将其视图添加到activity的视图层级结构中,onAttach(),onCreate()以及onCreateView()等方法会被调用。

2.5 测试结果

本系统主要采用了黑盒测试方法[5],分别进行界面设计的测试和所有子功能的测试。在进行部分功能测试的时候,为了便于快速测试,在单机上利用MyEclipse和Tomcat配合,编写测试代码模拟服务器发送Json数据消息,然后才在真实环境中测试。根据设计的功能测试用例,逐项测试,检查系统各项功能是否达到实际的使用要求。经过全面测试,发现该系统符合设计要求。

3 结束语

智能交通是未来交通系统发展的核心需求,信息化、网络化和智能化是交通系统未来的发展方向,智能交通融合物联网技术是发展趋势。这里对一种基于物联网的智能交通系统的体系架构以及可以实现的功能进行了研究,重点阐述了应用层中智能交通系统中安卓APP的设计,以及实现的关键技术和方法。结果表明,该APP人机界面简单,友好易用,提高了智能交通系统使用的便捷性,方便用户完成各项操作。

猜你喜欢

图表客户端联网
“身联网”等五则
《物联网技术》简介
如何看待传统媒体新闻客户端的“断舍离”?
抢占物联网
县级台在突发事件报道中如何应用手机客户端
孵化垂直频道:新闻客户端新策略
大枢纽 云平台 客户端——中央人民广播电台的探索之路
双周图表
双周图表
双周图表