馮滿滿,李 俊,方國康,汪 浩
(武漢科技大學計算機科學與技術學院,武漢 430065)
基于Android的電子圍欄系統設計與實現
馮滿滿,李 俊,方國康,汪 浩
(武漢科技大學計算機科學與技術學院,武漢 430065)
為了借助Android手機提供有效的室外實時位置監測服務,對Android平臺的定位技術以及推送技術進行研究。該系統采用基于監控客戶端、被監控客戶端以及Web服務端的三方數據交互模型,實現監控客戶端對被監控客戶端的室外實時位置監測和越界自動推送功能。該系統僅依靠軟件支持,節省開發專用硬件的成本。
電子圍欄;推送;室外位置監測
武漢科技大學大學生科技創新(No.15ZRC106)
近期,高校女大學生遇害事件頻發,關于如何保護自身安全的話題一下被推上了風口浪尖。我們認為,除了提高自我防范意識外,來自第三方的保護也至關重要。
目前可穿戴設備與手機的結合品灸手可熱。這些設備多用于母嬰之間、老人和子女之間以及貴重的財務上,在保護小孩,老人和財務方面的作用日益明顯。但是,這些設備的造價高昂,使用人群單一,擴展性不高。
而從大環境下看,移動終端設備在最近幾年迅猛發展。基于位置的服務在移動終端設備的應用越來越成熟。現在學校里學生的手機移動終端非常普及,以及校園無線網絡的全面覆蓋,讓我們能夠找到一種借助手機移動終端來實時監測用戶位置的方法。
相對市場上現有產品,本系統不必制作專用的定位穿戴設備,完全借由軟件實現,使得本系統具有很好的擴展性,很容易針對不同的使用群體制作不同的功能,如圈畫電子圍欄,設定綁定雙方距離,歷史軌跡回放等。
1.1 定位技術
(1)衛星定位——GPS(Global Positioning System,全球定位系統)
從現狀來看,GPS定位是目前最為精確,應用最為廣泛的室外定位導航技術,已經成為每一個移動設備的標配之一。并且GPS定位使用GPS天線和接收機通過衛星通道傳輸信息,是不需要使用網絡的定位技術。系統定義的主要工作區域在室外,并且需要輪詢獲取設備位置用以對比計算,從這兩方面考慮,選擇了GPS定位技術作為主要定位手段。
(2)Android網絡定位——包括基站定位和Wi-Fi定位
基站定位利用附近基站測算并加以嚴格的數學計算來確定手機位置,誤差一般在幾十米到幾百米之內。Wi-Fi定位根據Wi-Fi接入點的唯一MAC地址,訪問網絡上的定位Web服務,由Web服務檢索并返回該Wi-Fi接入點的位置作為手機的位置。為了防止GPS室內定位誤差過大導致系統誤推送的情況出現,可手動切換系統定位方式為網絡定位,以提高定位精確度。
1.2 推送技術
(1)推送實現
Android通過WifiManager獲取網卡MAC地址在通訊兩端建立TCP或UDP連接進行網絡通訊。這種連接叫做multiple connections,每次請求都會打開一個新的連接,為了避免這種情況出現了長連接persistent connection。借助長連接不斷開的特性進行設計。首先客戶端發送異步長連接請求,等待服務器響應。服務器非阻塞地保持該長連接。當服務器數據更新后,由服務器通過長連接把消息推送給客戶端。這樣相當于實現了客戶端“監控”服務器。
(2)推送使用
系統中兩處使用了推送技術。第一,當越界發生時,被監控方發起推送請求。第二,被監控方為節省流量開銷會緩存自己在數據庫中的圍欄信息用于和GPS定位信息進行對比計算。為保證數據的有效性,當監控方重新設置圍欄信息時,服務器發起推送請求告知被監控方更新緩存。
2.1 基本設計思路
本系統客戶端為了更好的對用戶進行權限管理,增加了角色和功能的概念,由角色執行一組功能,再由用戶去扮演角色間接獲得功能。當前系統有兩種角色,分別為監控角色和被監控角色。用戶以用戶ID和密碼登錄系統,當開啟定位推送時扮演被監控角色并獲取對比計算等功能;當用戶對應的綁定方用戶扮演被監控角色后,該用戶即扮演監控角色。當用戶登錄時,將設備網卡MAC地址上傳到數據庫,完成用戶與設備之間的映射,為推送提供數據基礎。監控角色通過設置圍欄信息更新被監控角色在數據庫的圍欄信息,至此,被監控角色可以輪詢對比計算設備定位信息和用戶在數據庫中的圍欄信息來判斷越界是否發生。若越界發生則向服務器發起推送請求,服務器根據用戶-設備映射表轉發推送請求。
2.2 系統結構
基于Android的電子圍欄系統由客戶端,服務端,MySQL數據庫以及推送平臺組成。其中系統的絕大部分計算需求被設計在客戶端,客戶端不僅作為流程控制的接口,還充當了整個系統的控制中心。而服務端有兩項功能,其一,和MySQL數據庫進行數據交互,其二,轉發推送請求。推送平臺收到推送請求后負責真正發送推送。下圖(圖1)說明了本系統的基本結構。

圖1 系統結構圖
2.3 數據庫設計
系統使用MySQL關系型數據庫,結合功能需求,可以抽取出相關實體,包含用戶信息表,設備表,用戶-設備映射表,用戶綁定表以及圍欄設置表等數據表。借助數據庫ER圖進行簡單表示(如圖2),可以明確用戶、設備、圍欄這三者的關系。用戶與用戶之間存在綁定,用戶與設備之間一對一關聯,圍欄被某一用戶獨占。在實際使用中,我們將用戶ID作為起點,以用戶綁定表,用戶-設備映射表,圍欄設置表為線索來獲取全部可用信息。
基于Android的電子圍欄系統主要包括4大功能模塊:注冊登錄模塊、用戶綁定模塊、圍欄設置模塊、定位推送模塊。其中定位推送模塊完成本系統核心功能,該模塊實現依賴于其他三個模塊的功能。
注冊登錄模塊負責新用戶身份錄入,其中關鍵的是用戶登錄。用戶登錄除負責用戶身份驗證外,還需要更新用戶-設備映射表,保證用戶-設備映射關系的有效性,確保推送能夠正確送達。

圖2 數據庫ER圖
綁定模塊負責查詢顯示當前系統中用戶的綁定情況,并指導用戶完成綁定。當前系統只支持一對一綁定,綁定過程由一方發起,需對方同意才能建立綁定關系;也可以自主解除綁定,解除綁定由一方發起,無需對方同意即可解除綁定關系。
圍欄設置模塊提供監控角色給被監控角色添加圍欄信息的功能。在該設置模塊中,系統選擇百度地圖API來顯示地圖。此外,系統添加了地理位置查詢,展示設備當前位置,對方當前位置等功能。借助這些功能,我們可以自由設定圍欄的各項信息,最后經由該模塊提交給服務器,由服務器將圍欄信息寫入被監控角色在數據庫中的圍欄信息,并向被監控角色發起推送,通知其更新緩存。
定位推送模塊實現系統核心功能。其定位功能分兩步進行:第一為數據收集,緩存圍欄信息并獲取設備當前位置。第二為對比計算,對比緩存的圍欄數據以及定位數據,加以球面上兩點間距離公式輔佐計算得出設備與圍欄中心的相對距離,再用其與圍欄范圍進行比較得出是否越界。若越界,則發起推送。
3.1 定位推送模塊詳解
該模塊功能屬于被監控角色,設計的主要原則是盡量節省流量開銷,盡量提高監測精確度。主要分為四個功能:分別是緩存功能、定位功能、對比計算和推送功能。
(1)緩存功能,登錄后對用戶自身圍欄信息進行首次緩存,之后在收到服務器端數據更新推送后通過網絡更新緩存。
(2)定位功能,定位采用輪詢方式進行定位。若輪詢間隔過大,則違背了系統的實時位置監測的本意。另外,盡管GPS定位不依賴網絡,但卻非常耗電。故輪詢間隔過小也不行。綜合兩點約束,通過反復試驗,系統最后選定90s為輪詢間隔。
(3)對比計算,對比計算屬于定位推送功能模塊中的第二步,其計算數據來源如下:
①從服務器數據庫中緩存的用戶自身被設置的圍欄信息
②實時定位產生的定位結果數據
借助這兩個實時數據加以嚴格的數學公式,對比計算結果能很大程度上反映被監控方和其圍欄的位置關系。
(4)推送功能,該功能根據對比計算結果選擇是否進行推送。當需要進行推送時,由被監控角色向服務器發起獲取監控角色設備網卡MAC地址的請求,之后借由該地址向服務器發起推送請求,服務器送到推送請求后轉發給推送平臺,推送平臺根據設備網卡MAC地址進行推送。
3.2 系統總體設計
本系統以Web服務器作為數據中轉站和推送中轉站,實現用戶設備映射,用戶綁定,圍欄設置以及定位推送等功能。其中用戶可以扮演兩種角色,分別是監控角色和被監控角色。不同角色所處地位不同,可使用功能不同,用戶可以同時擔任著兩種角色。監控角色設置圍欄,接收推送;被監控角色對比計算,發起推送。其總體系統架構如圖3所示。
(1)客戶端UI實現
客戶端包括4個UI界面,分別是位置信息顯示頁,用戶綁定頁,圍欄設置頁和推送消息處理頁。其中位置信息顯示頁用于顯示綁定雙方的圍欄信息以及當前位置信息等,并且所有頁面都以ListView為基礎實現的上下滑動。在圍欄設置頁使用Touch事件響應地圖手勢操作。位置信息顯示頁和推送消息處理也如圖4,5所示。

圖3 系統總體架構

圖4

圖5
(2)客戶端監控方功能實現
監控方功能包含查詢位置信息,設置圍欄信息,接收處理推送消息等,當用戶登錄軟件后,會自動更新用戶-設備映射表,具體做法是將當前用戶ID和設備MAC地址更新到服務器的數據庫用戶-設備映射表中。若用戶未綁定,則通過綁定模塊引導用戶完成綁定。綁定完成后,用戶可以借助圍欄設置功能對被監控方進行圍欄信息的設置,這里的圍欄信息主要包括中心點,范圍。如果用戶進行了圍欄設置,則有可能會收到來自被監控方的推送消息,此時監控方可以Notification來接收并處理這些推送消息。
(3)Android被監控方功能實現
被監控方需要主動打開定位推送功能,才能進行定位結果上傳,對比計算等一系列操作。
當被監控方開啟定位推送后,該模塊開啟一個服務線程用于輪詢獲取圍欄信息和上傳定位結果并且完成對比計算的操作,每一次輪詢按順序完成一輪上述操作。當發現越界時,請求監控方MAC地址,發送推送請求。

圖6 Android端流程圖
(4)服務器端實現
使用Java和MySQL實現一個無界面的服務器,該服務器為客戶端訪問數據庫提供接口,轉發被監控方的推送請求到推送平臺,當數據庫圍欄信息更新時通過推送及時通知被更新對象。
本系統結合Android手機特色的定位功能,以及實時推送技術,已基本完成室外定位推送功能。綁定雙方均可通過UI界面做流程控制,進行圍欄設置與位置信息查詢,并且在處于后臺情況下通過聲音和振動提高推送的辨識度。能在越界發生時及時反饋到監控方,具有不錯的實用性。
[1]劉美生.全球定位系統及其應用綜述(一)——導航定位技術發展的沿革[J].中國測試技術,2006.
[2]鄒偉平.基于GPS/GPRS/Web的無線定位監護系統的研究.科技廣場,2012.
[3]王視換.蜂窩網與GPS相結合的手機混合定位技術——gpsOne[J].信息與電子工程,2004.
Design and Implementation of Electric Fence System Based on Android
FENG Man-man,LI Jun,FANG Guo-kang,WANG Hao
(College of Computer Science and Technology,Wuhan University of Science and Technology,Wuhan 430065)
In order to provide the monitoring service of real-time location on the android mobile phone,studies the positioning technology and push technology of android platform.This system is based on data interaction model which is made up of three members,the monitoring client, the monitored client and the Web server.The monitoring client can monitor real-time location of the monitored client and receive feedback.This system just relies on software that can save development cost of dedicated hardware.
Electric Fence;Push Message;Network Localization
1007-1423(2016)30-0057-05
10.3969/j.issn.1007-1423.2016.30.015
馮滿滿(1995-),男,湖北襄陽人,在讀本科,研究方向為Android開發
李俊(1978-),男,湖北黃石人,副教授,研究方向為網絡管理,智能移動開發,651351642@qq.com,15697181978
方國康(1994-),男,湖北恩施人,在讀本科,研究方向為Android開發
汪浩(1995-),男,湖北黃岡人,在讀本科,研究方向為算法設計
2016-08-16
2016-10-17