基于Android与百度地图的智能报警系统
2015-07-01丁一金华李允俊
丁一,金华,李允俊
(延边大学 工学院,延吉 133002)
基于Android与百度地图的智能报警系统
丁一,金华,李允俊
(延边大学 工学院,延吉 133002)
本文针对打电话报警的局限性,设计了一种基于Android的智能报警系统。该系统结合Android SDK和百度地图API,运用定位技术和GPRS技术,实现了集定位、音视频录制、地图显示和摇一摇触发报警等功能为一体的智能报警系统。测试结果表明,该系统运行稳定、结果准确,具有一定的实用价值。
智能报警系统;Android;定位
引 言
报警是每个人生活中的基本生存技能之一,能够及时准确地报警,可以保障人身、财产安全,以及其他权利免受损失。目前报警方式以打电话为主,其局限性主要表现为3个方面:其一,突发事件地点随机,通常无法准确详细地描述事件发生位置;其二,遇到绑架、抢劫、暴力等威胁时,受害人无法通过打电话报警;其三,难以及时记录现场,无法提供现场证据。
图1 系统总体构架图
针对电话报警的局限性,本文设计了一种基于Android设备终端的报警系统。Android是一种基于Linux的开源操作系统,具有强大的应用层API和传感器控制功能[1]。选用Android终端进行开发,不仅使报警操作简便,而且还具有GPS定位、自动拨打报警电话和录制现场视频的功能,从而在一定程度上避免了目前打电话报警的弊端。接警中心监控屏幕上可以直观显示报警地点,方便警方出警。该系统也可以扩展到其他应用上,例如老人、小孩监护和智能医疗救护等,应用领域广泛。
1 系统整体设计
本系统包括报警客户端和接警服务器端两部分。当用户遇到危险时,报警客户端通过智能手机进行定位。定位到经纬度数据之后,以短信形式发送给接警中心,同时自动拨打报警电话。接警服务器端监听并接收报警信息,同时在地图上显示事故发生位置,规划出警路线,以便警务人员在第一时间做出反应,提高出警效率。报警结束后,将此条报警记录和电话录音保存在后台数据库服务器中。该智能报警系统的总体架构如图1所示。
2 系统硬件
报警客户端采用具有GPS定位、GPRS通信和网络连接功能的Android智能手机。接警服务器端的主控制台采用基于S3C6410X核心板的Android 3G开发平台。S3C6410X含有多个强大的硬件加速器,适合音视频、2D图形、显示运算等应用。通过对Android操作系统进行裁减和移植,对不同模块的驱动进行配置,该平台可以使用板载的DM9000A上网、扩展Wi-Fi模块和GSM/GPRS模块,以及使用VGA接口连接投影,为接警服务器端的开发提供了强大的硬件支持。
系统的扩展硬件资源主要有:SIM300 GPRS模块,通过RS-232接口与核心板连接,实现短信和通话的功能;TL-WN321G+Wi-Fi模块,通过USB接口与核心板连接,为开发板提供网络支持。系统硬件结构图如图2所示。
图2 硬件结构图
接警服务器端的GPRS通信模块采用的是SIM300,具有GSM/GPRS双频模块,内嵌TCP/IP协议栈,能够实现语音、短信、数据和传真信息的高速传输[2]。SIM300提供了标准的RS-232串行接口,可以与Android 3G开发平台连接。Android 3G开发平台使用16C550芯片扩展串口来控制GPRS功能单元电路。使用GPRS通信模块之前,需要在内核中添加16C550设备驱动支持,这样Android 3G开发平台就可以通过串行口使用AT命令对SIM300进行电话操作。本系统中用到的AT命令集如表1所列。
表1 AT命令集
Wi-Fi作为无线网络的技术之一,其主要特性表现为传输速度快、可靠性高、组网方便。本设计使用TL-WN321G+作为拓展的Wi-Fi无线网卡模块,对Linux系统上USB无线网卡的驱动进行分析和移植,使接警终端具备加载无线网络连接的功能。
3 软件设计
3.1 报警客户端设计
紧急情况随时都可能发生,这就要求应用软件必须兼顾稳定性和实时性。客户端报警程序的设计分为普通报警和紧急报警两种。在普通报警情形下,用户主动触发该应用程序,选择适合的报警类型(例如火警、医疗救护等)进行报警,也可以选择是否进行视频录制;在紧急报警(如绑架、抢劫等)的情形下,用户来不及操作手机,这时用户可以剧烈摇晃手机,程序监测手机重力感应器,当重力加速度达到所设置的阈值后,自动向110报警中心报警,并进行视频录制。手机报警端软件总体工作流程如图3所示。
图3 手机报警端软件总体工作流程
3.2 接警服务器端设计
接警服务器端的工作主要包括监听报警、接电话并录音、读取短信并解析经纬度,以及在地图上显示报警地点等。后台服务器一直在运行,始终监听报警信息。当接到报警时,首先接警终端发出报警提示音,接听报警电话后,监听通话内容并录音,然后读取报警短信,解析出短信中的经纬度信息,最后将经纬度信息写入百度地图中,在地图上显示出报警的具体位置。接警终端软件总体工作流程如图4所示。
图4 接警终端软件总体工作流程
4 关键技术分析
4.1 定位技术在Android终端的实现
本报警系统采用百度地图API进行GPS定位操作和地图操作。百度地图API官网提供了已经封装好的SDK,其中包括定位和地图相关的接口,利用设备当前的GPS信息(GPS定位)、基站信息(基站定位)和Wi-Fi信息(Wi-Fi定位)共同完成定位。GPS定位精度最高,平均精度在10 m左右,但定位时间较长,且受环境影响较大,例如有建筑物遮挡时终端就会由于搜索不到卫星而定位失败。
基站定位是利用基站对手机距离的测算来确定手机位置的,其定位精度很大程度上依赖于基站的密度[4],平均精度为200 m,利用地面移动基站对卫星信号进行辅助,在某些卫星信号较差的情况下,也能实现卫星信号的快速捕获和用户的快速定位[5]。Wi-Fi定位是根据设备获取的Wi-Fi信息进行定位,平均精度为20 m。百度地图SDK将这3种定位方法结合起来,使用户无论在室内还是室外都可以成功定位。使用百度地图API,可以在报警端结合以上3种定位方式进行定位,也可以实现接警端的地图显示功能,符合智能报警系统的需要。
使用地图API之前首先要申请密钥,进行官方授权确认。官方确认需要联网才能进行,当检测到当前终端未联网时会给出相应提示,然后设置客户端定位选项,例如是否打开GPS、设置坐标类型等,最后开始注册监听定位,利用百度地图API中相应方法,可以获取纬度、经度、当前城市、当前县区和地址等信息。
接警服务器端不需要定位操作,只需在读取到报警人的经纬度后,将坐标在地图上标记出来。这要用到百度地图的控件MapView,并对地图进行实时更新。经纬度在地图上显示的实现方法如下:
MapController.animateTo(new GeoPoint(纬度, 经度,...));
4.2 GPRS通信模块的实现
Android SDK已经对GPRS通信操作进行了封装,包括发送短信、打电话、发送Email等。短信功能和通话功能需要在AndroidManifest文件里添加相应权限后,调用封装好的相关函数。打电话功能采用了Android系统自带的打电话Intent,通过Intent对象使用Intent.ACTION_CALL,直接从当前活动跳转到系统通话界面,并用Uri.parse()方法将报警电话号码带入。
为了提高报警的准确性,方便接警端对短信数据进行解析,本系统对短信的格式定义如下:
开头分隔符数据1分隔符数据2分隔符数据3分隔符结尾
短信格式的开头设计为字符“Alarm”,接警终端只接收以字符“Alarm”作为开头的短信,并对该类短信进行解析,其他短信全部过滤掉,一定程度上可以解决短信误报的问题。数据1代表报警类型:“1”代表110报警中心,“2”代表120医疗救护中心,“3”代表119火警中心,“4”代表122交通事故中心。数据2代表定位后得到的纬度,数据3代表经度。由于市场上有些手机发送短信会在结尾处加上一些默认字符,为了防止这样字符造成干扰,短信以字符“tail”作为结尾,接警服务器端只解析tail之前的字符,从而避免这一问题。不同的数据之间采用“!”作为分隔符,将不同类型的数据分隔开,接警服务器端可以通过split()函数把不同数据解析出来,方便处理。
4.3 通话录音和视频录制
接警服务器端需要对报警电话内容进行录制,存入后台数据库以备使用。通话录音程序在后台对电话进行监听,它需要TelephonyManager获取手机状态,然后在不同的手机状态下用MediaRecorder做录音处理。在监听手机状态之前,先通过File类创建录音保存路径和保存文件夹。电话打进来时,等待录音状态;电话接听后,创建新的MediaRecorder,同时创建保存录音信息的音频文件;获取MIC后,调用底层录音设备,开始录音;当电话挂断时,停止并保存录音,清除缓存。
报警客户端要进行现场视频的录制。由于目前我国网络传输速率依然较慢,在短信和电话报警的同时将视频数据传输到接警端是不现实的,因此将录制的视频保存在本地。首先在本地建立文件夹,然后设置视频摄像头和麦克风资源,通过start()方法开始视频录制。对视频录制模块设置单独的线程,使报警和视频录制并行实现。视频录制需要在AndroidManifest文件中声明使用权限,并对额外使用的硬件属性进行声明,例如:
4.4 系统实时性问题
报警系统对实时性和准确性要求很高,因此本设计采用多线程机制保证各子模块及时并行完成任务。报警客户端包括GPS定位线程、GPRS通信线程及视频录制线程。定位时间会受到网络环境和信号强度的影响,例如在网络连接不畅和手机信号较弱的情况下,定位时间较长。为了防止定位还未成功就发送报警信息,需要对GPRS通信线程进行延时操作。在获得定位数据之前,GPRS线程处于阻塞状态,继续等待定位数据,此时GPS线程和视频录制线程交替呈现就绪和运行状态;获取到定位数据后,GPS线程变为阻塞状态,此时GPRS通信线程和视频录制线程交替呈现就绪和运行状态。报警端线程状态如图5所示。接警端与报警端类似,这里不再赘述。
图5 报警端线程状态
图6 报警手机客户端
5 测试与结果
笔者在Android智能手机和Android 3G开发平台上进行报警、接警测试,测试结果如图6和图7所示。测试结果表明,在GPRS和3G网络连接通畅的情况下,户外报警平均精度达到10 m,室内报警平均精度达到80 m,在有Wi-Fi连接的情况下,定位精度会进一步提高。接警服务器端可以处理多个报警信息,地图显示准确,路径规划显示正常,通话录音正常。
图7 接警服务器端
结 语
本文设计并实现了基于Android终端的智能报警系统,将百度地图API巧妙运用到报警系统中,实现了定位和地图的显示;运用Android SDK实现音视频的录制和存储;运用GPRS通信和网络通信等手段,将报警端、接警端、PC后台服务器三者相互联系,实时通信。
[1] 耿东久,索岳,陈渝,等.基于Android手机的远程访问和控制系统[J].计算机应用,2011,31(2):559-561.
[2] 陈滟涛,杨俊起,康润生,等.基于SIM300的短信传输系统的设计与实现[J].计算机工程与科学,2008,30(3):156-158.
[3] 郝真鸣,赵男,梁铁,等.基于Wi-Fi的智能楼宇监控系统[J].测控技术,2013,32(10):87-89,92.
[4] 王胜波,张兵,孙亮,等.手机报警定位技术在警务中的应用[J].警察技术,2012(3):46-49.
[5] 刘成.LBS定位技术研究与发展现状[J].导航定位学报,2013(1):78-83.
丁一(硕士研究生)、金华(副教授)、李允俊(教授),主要研究方向为嵌入式系统。
Intelligent Alarm System Based on Android and Baidu Map
Ding Yi,Jin Hua,Li Yunjun
(Institute of Technology,YanBian University,Yanji 133002,China)
Aiming at the limitations of the existing telephone alarm system,the article designs an intelligent alarm system based on Android.Combining the Android SDK and Baidu Maps API,the new intelligent alarm system achieves a set of functions such as positioning,audio and video recording,map display,shaking to trigger alarms through using positioning and GPRS technology.The test results show that the system is stable,accurate and has practical value.
intelligent alarm system;Android;position
TP319
A
�士然
2014-09-19)