丁一,金華,李允俊
(延邊大學 工學院,延吉 133002)
基于Android與百度地圖的智能報警系統
丁一,金華,李允俊
(延邊大學 工學院,延吉 133002)
本文針對打電話報警的局限性,設計了一種基于Android的智能報警系統。該系統結合Android SDK和百度地圖API,運用定位技術和GPRS技術,實現了集定位、音視頻錄制、地圖顯示和搖一搖觸發報警等功能為一體的智能報警系統。測試結果表明,該系統運行穩定、結果準確,具有一定的實用價值。
智能報警系統;Android;定位
報警是每個人生活中的基本生存技能之一,能夠及時準確地報警,可以保障人身、財產安全,以及其他權利免受損失。目前報警方式以打電話為主,其局限性主要表現為3個方面:其一,突發事件地點隨機,通常無法準確詳細地描述事件發生位置;其二,遇到綁架、搶劫、暴力等威脅時,受害人無法通過打電話報警;其三,難以及時記錄現場,無法提供現場證據。

圖1 系統總體構架圖
針對電話報警的局限性,本文設計了一種基于Android設備終端的報警系統。Android是一種基于Linux的開源操作系統,具有強大的應用層API和傳感器控制功能[1]。選用Android終端進行開發,不僅使報警操作簡便,而且還具有GPS定位、自動撥打報警電話和錄制現場視頻的功能,從而在一定程度上避免了目前打電話報警的弊端。接警中心監控屏幕上可以直觀顯示報警地點,方便警方出警。該系統也可以擴展到其他應用上,例如老人、小孩監護和智能醫療救護等,應用領域廣泛。
本系統包括報警客戶端和接警服務器端兩部分。當用戶遇到危險時,報警客戶端通過智能手機進行定位。定位到經緯度數據之后,以短信形式發送給接警中心,同時自動撥打報警電話。接警服務器端監聽并接收報警信息,同時在地圖上顯示事故發生位置,規劃出警路線,以便警務人員在第一時間做出反應,提高出警效率。報警結束后,將此條報警記錄和電話錄音保存在后臺數據庫服務器中。該智能報警系統的總體架構如圖1所示。
報警客戶端采用具有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.1 報警客戶端設計
緊急情況隨時都可能發生,這就要求應用軟件必須兼顧穩定性和實時性。客戶端報警程序的設計分為普通報警和緊急報警兩種。在普通報警情形下,用戶主動觸發該應用程序,選擇適合的報警類型(例如火警、醫療救護等)進行報警,也可以選擇是否進行視頻錄制;在緊急報警(如綁架、搶劫等)的情形下,用戶來不及操作手機,這時用戶可以劇烈搖晃手機,程序監測手機重力感應器,當重力加速度達到所設置的閾值后,自動向110報警中心報警,并進行視頻錄制。手機報警端軟件總體工作流程如圖3所示。

圖3 手機報警端軟件總體工作流程
3.2 接警服務器端設計
接警服務器端的工作主要包括監聽報警、接電話并錄音、讀取短信并解析經緯度,以及在地圖上顯示報警地點等。后臺服務器一直在運行,始終監聽報警信息。當接到報警時,首先接警終端發出報警提示音,接聽報警電話后,監聽通話內容并錄音,然后讀取報警短信,解析出短信中的經緯度信息,最后將經緯度信息寫入百度地圖中,在地圖上顯示出報警的具體位置。接警終端軟件總體工作流程如圖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 報警手機客戶端
筆者在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)