基于Android的智能行车记录仪的设计与实现

2017-03-27 14:21刘宽谭大禹
电脑知识与技术 2017年3期
关键词:移动互联网

刘宽++谭大禹

摘要:移动互联网的出现,极大的方便了人们的衣食住行,同时人们当下对行车安全非常看重,因此设计一款智能行车记录仪APP便可以解决行车安全中的一些需求,如有效地解决了事故发生时的证据资料不足问题。该应用系统集用户登录、路径规划、文件管理、音乐播放等功能于一体,充分满足了行车过程中的对事故资料、路线导航和娱乐的需要。

关键词:移动互联网;行车记录;APP;路径导航;文件管理

中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2017)03-0211-04

Design and Implementation of Intelligent Traffic Recorder Based on Android

LIU Kuan,TAN Da-yu

(Anhui University Of Science And Technology, College of computer science and Engineering, Huainan 232001, China)

Abstract: The emergence of the mobile Internet, a great convenience to people's basic necessities of life, while the people present on the traffic safety is very important, so the design of an intelligent recorder APP can solve some traffic safety needs, such as to effectively solve the problem of insufficient evidence of information at the time of the accident. The application system integrates user login, path planning, file management, music playback and other functions in one, fully meet the needs of traffic accident data, route navigation and entertainment.

Key words: Mobile Internet; traffic record; APP; route guidance; file management

1 背景

隨着我国社会经济的不断发展,交通运输业得到了快速发展[1],机动车数量急剧增加,其中私家车队伍也在不断壮大,交通管理的规模和等级逐步扩大,由此带来的问题也不断增多。为此,实施智能交通管理,提高驾驶安全性能,改善交通乱象,越来越为行业所关注[2]。作为保障汽车行驶安全的智能汽车行驶记录仪APP应运而生,因为在行车过程中,可能会遇到很多突发事件,保留合适的现场资料成为应对突发事件不可缺少的环节,对其的研究、开发和应用也吸引了部分IT从业者。

本论文的研究基于Android平台,在该平台下,进行智能行车记录仪APP的设计与实现[3],即不单独设计硬件,借用安卓手机实现智能行车记录功能。当前,手机的更新换代速度越来越快,很多人有两个及两个以上的手机,二手手机买卖的价格较低,回收处理较复杂,而且目前国内手机回收处理产业不发达,所以可以利用淘汰的旧手机作为智能行车记录仪APP的硬件平台,节省硬件成本。目前,人们对手机的操作比较熟练,开发智能行车记录仪APP某种程度上也方便了人们的使用。

基于以上结论,本文设计一种基于Android平台的智能行车记录仪APP,下面进行详细阐述。

2 系统功能设计

Android系统底层是基于Linux 2.6版本的内核[4],如进程管理、文件系统等,内核是上层软件与底层硬件通信的桥梁。Android系统框架大致可分为四个部分:应用程序层、应用框架层、库和Android运行时、Linux内核[5]。

本系统是在Android应用程序层开发,根据需求,该手机应用主要有以下几种功能,一是根据出行方式的不同给出路线规划,二是根据起点和终点给出实时导航,三是根据手机的方向传感器给出方向和经纬度,四是拍照和录像功能,五是活动的展示,六是音乐播放界面和功能的实现,七是新闻和周边页面的查看,八是文件管理功能,包括图片和视频的缩略图、列表展示功能,图片的查看和视频的播放功能,图片和视频文件的一键清理和分享功能,再者是连接到电脑,使用电脑管理手机文件。

3 系统功能实现

该系统客户端使用Activity、Service两大组件,充分利用Intent通信机制,并辅以SharedPreferences存储数据,HTTP协议和服务器通信[6],同时使用Mob移动开发者服务平台和百度地图开发平台提供的服务,成功构建了一款功能丰富的智能行车记录仪APP。

该系统服务端使用Servlet接收客户端发送的请求,由于只需要返回给客户端数据,而不需要通过浏览器展示图形界面,所以不需要编写jsp。该系统采用MySQL数据库,在服务器和数据库之前使用jdbc桥连接。

3.1 导航

3.1.1 百度地图SDK

百度地图 Android SDK是一套基于Android 2.1及以上版本设备的应用程序接口[7],通过调用SDK接口,可以访问百度地图的服务和数据,其提供的所有服务都是免费的,接口使用可以无次数限制。使用时,必须先申请密匙(key),并在Mainfest.xml中设置Accesskey,在application标签中加入,并声明相应权限,同时要导入相应的资源Jar包,.so动态库。百度地图提供普通的2D、3D地图、卫星图,同时支持POI检索,地理编码与反编码,线路规划,地图覆盖物,位置定位等特色服务。下面简单介绍本系统使用到的技术。

百度地图Android定位SDK是为Android移动端应用提供的一套简单易用的LBS(Location Based Service,基于位置的服务)定位服务接口[8],可以提供GPS、基站、WiFi等定位方式。使用需先在xml文件中添加MapView,然后开启定位图层。定位初始化过程中,首先实例化LocationClient,然后注册定位监听,最后设置定位参数,如坐标系的选择,定位时间间隔的控制等。定位监听函数会返回位置信息,通过对位置信息的设置,即可显示在界面上。在退出定位界面时应关闭定位图层,销毁LocationClient,防止内存泄露[4]。百度地图Android 导航SDK与之原理类似,不再赘述。

3.1.2 功能实现

首先,人们使用导航功能时,更多的是需要找到从当前位置到某一地点的路线,所以,本系统首先使用百度地图定位SDK获取到当前位置[9],并在页面上绘制出来街道、热点等标志,给用户提供导航依据,如图2所示。然后,在页面上起点和终点输入框可以输入地点,在输入时会触发联想词功能(SuggestionSearch),智能提示用户相应地点。

3.2 文件管理

本系统需要管理的文件为视频和图片文件,视频文件为调用系统摄像机录像生成的,图片文件为调用系统照相机拍摄生成的,生成的文件都存储在自定义的文件下,这是为了把行车记录仪文件和手机中的其他文件区分开来,便于管理。如图3所示,为了提高用户体验,在文件管理界面,提供列表和缩略图展示功能,点击列表中的文件和缩略图都可以进行播放,同时常按缩略图会跳出自定义对话框,自定义对话框功能为分享、删除文件等。

3.2.1 缩略圖实现

无论图片还是视频缩略图均使用GridView布局,为GridView添加Adapter便可根据文件的个数动态添加缩略图个数。此处为采用回调的方式自定义Adapter继承BaseAdapter,要实现的有四个方法,其中最重要的有两个,getCount()和getView(),getCount()返回缩略图的个数,getView()返回缩略图,在返回缩略图的过程中需要创建一个ImageView对象,而利用ViewHolder和convertView结合便可以不重复创建ImageView对象,convertView.setTag()便是把创建的ImageView对象保存在convertView中,以待复用,convertView.getTag()便是把保存在convertView中的ImageView取出,进行复用。

以上是把生成的缩略图显示在界面上,而生成图片的缩略图文件则用到了位图工厂BitmapFactory,通过BitmapFactory可以生成一个原图片的拷贝,同时其格式为bitmap,便可以修改大小了,这样最终得到的图片便是需要的缩略图文件。而生成视频的缩略图文件则先通过ThumbnailUtils来创建一个视频的缩略图,然后再利用ThumbnailUtils来生成指定大小的缩略图。

生成缩略图是一个耗时操作,这时可以利用异步加载,在子线程中处理生成缩略图的部分,而主线程负责显示在界面上。本系统利用自定义异步类继承AsyncTask,重写doInBackground和onPostExecute两个方法,便可以实现想要的功能。

3.2.2 查看图片功能

为了能够全屏显示,首先通过DisplayMetrics获得屏幕分辨率,然后把获得到的图片经过BitmapFactory生成全屏的图片。

3.2.3 视频播放功能

首先播放时通过WindowManager把状态栏隐藏,而播放视频,首先需要解码,原生的Android视频播放框架支持的格式很小,这时可以利用一些开源的框架,如百度的Android播放器SDK或者vitamio这种全能多媒体开发框架,支持硬件解码与GPU渲染。

本系统采用的是百度的Android播放器SDK,通过BVideoView为媒体播放显示提供支持,BMediaController为媒体播放控制提供支持,在使用这些时,需导入Jar包、.so动态库和相应的资源文件。

3.3 音乐播放器

为了实现音乐播放功能,首先自定义服务,通过继承Android四大组件之一的Service来实现后台音乐服务,Service可以理解为没有界面的Activity,但Service比Activity有更高的优先级。如图4所示,在定义服务中通过Handler机制实现刷新进度条、持续时间、当前音乐名称等UI界面,同时提供了播放当前音乐,播放下一首,暂停播放等方法,实现这些方法需要调用Android的MediaPlayer类。而获取音乐信息需要另一个组件ContentResolver,ContentProvider和ContentResolver是一对,ContentProvider用来提供内容给其他应用来操作,ContentResolver用来操作自己或其他应用数据。通过ContentResolver查询到Media信息,然后把这些信息封装到一个Parcelable类中,提供给Service进行处理。音乐列表的展示则通过ListView来实现。

在Activity中调用Service服务时,首先通过ServiceConnection获得自定义服务通过onBind返回的IBinder对象,通过IBinder对象可以调用Service中的所有public访问权限的方法,还可以通过注册BroadcastReceiver接收Service发送的广播执行相应操作。Android的IPC通信采用了更适合自己的IBinder机制,而不是Linux 的信号量、共享内存、消息队列等通信方式。

图4 音乐空间及主界面

3.4 天气情况

对于天气情况这种需要获取实时数据的服务[10],需要找提供稳定且准确数据的数据服务商,本系统选择的是百度天气API。首先通过百度地图定位返回手机使用者所在的城市,然后创建一个子线程,使用Http协议获取到天气数据,百度天气返回的天气数据为xml格式,通过解析xml即可获得实时天气数据,然后利用Handler刷新主线程,把天气情况显示在主界面上。

3.5 个人中心

个人中心采用WebService和Android结合的C/S结构方法设计,要实现个人中心页面,必须要实现注册、登陆功能,首先要搭建数据库,存储用户名、密码等信息,本系统采用MySQL数据库[5],具体数据结构如下表1所示。首先,在MyEclipse中新建一个Web Project,其中通过JDBC桥连接数据库,JDBC桥是java提供的一套访问数据库的统一API。然后新建两个Servlet,一个为客户端登陆提供响应,一个为客户端注册提供响应,都是部署在Tomcat下,结构如图5所示。客户端发送请求,服务器端完成注册或登陆验证的操作,这之间通过Request和Response来携带数据,最终实现客户端登陆、注册功能。

表1 数据结构

图5 C/S结构图

3.6 其他功能

如图6所示,其中活动中心页面采用ListView布局,主要介绍一些热门活动,周边和新闻页面则是跳转相应的网页。对于违章查询功能,因为要接入各个地区的交管系统,这里也采用第三方服务页面。

图6 其他功能界面

3.7 测试

本系统经测试各项功能可用,部分效果图如上面的图片展示,如天气信息的展示、拍照、摄像、定位、导航等。

4 结束语

针对当前行车安全的现状,设计并实现了基于Android的行车记录仪APP,这种设计不但有助于改善交通乱象,同时节省了硬件成本。在功能设计上,该系统不仅可以对路径进行定位和导航,可以拍照、摄像,并对图片和视频文件进行管理,同时提供音乐播放等功能,充分满足用户驾驶过程中的需要。随着用户空间的不断完善,使用者会体验到更满意的服务。

参考文献:

[1] 赵娜, 袁家斌, 徐晗. 智能交通系统综述[J]. 计算机科学, 2014, 41(11).

[2] 东岳. 行车记录仪漏秒的检测[J]. 交通與运输, 2014, 30(3).

[3] 梁景裕. 汽车电子高度集成化路畅畅安导航内置行车记录仪体验评测[J]. 消费电子, 2014(17).

[4] 张华亮. 基于Linux自由及开放源代码的Android操作系统[J]. 计算机与网络, 2016, 42(3).

[5] 王跃, 许志远, 严珏玮. 移动智能终端操作系统技术发展[J]. 中兴通讯技术, 2014, 20(2).

[6] 宋强, 齐贵宝, 宋占伟. 基于Android系统的H.264视频监控设计[J]. 吉林大学学报:信息科学版, 2012, 30(3).

[7] 顾聪, 陈益强, 刘军发, 等. 基于Android平台的室内LBS系统设计与实现[J]. 计算机工程与设计, 2012, 33(1).

[8] 张波. 基于Android平台的百度地图开发研究[J]. 软件导刊, 2015, 14(7).

[9] 蒋建华. 行车记录仪中GIS的设计研究[J]. 信息技术与信息化, 2016(4).

[10] 赵士达, 张楠, 杨爽. 基于云计算和Android的地震应急信息获取系统[J]. 计算机应用, 2014(z1).

猜你喜欢
移动互联网
微美学
大数据环境下基于移动客户端的传统媒体转型思路
基于移动互联网的心理健康教育初探