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

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

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

圖3 系統(tǒng)總體架構

圖4

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

圖6 Android端流程圖
(4)服務器端實現(xiàn)
使用Java和MySQL實現(xiàn)一個無界面的服務器,該服務器為客戶端訪問數(shù)據(jù)庫提供接口,轉發(fā)被監(jiān)控方的推送請求到推送平臺,當數(shù)據(jù)庫圍欄信息更新時通過推送及時通知被更新對象。
本系統(tǒng)結合Android手機特色的定位功能,以及實時推送技術,已基本完成室外定位推送功能。綁定雙方均可通過UI界面做流程控制,進行圍欄設置與位置信息查詢,并且在處于后臺情況下通過聲音和振動提高推送的辨識度。能在越界發(fā)生時及時反饋到監(jiān)控方,具有不錯的實用性。
[1]劉美生.全球定位系統(tǒng)及其應用綜述(一)——導航定位技術發(fā)展的沿革[J].中國測試技術,2006.
[2]鄒偉平.基于GPS/GPRS/Web的無線定位監(jiān)護系統(tǒng)的研究.科技廣場,2012.
[3]王視換.蜂窩網(wǎng)與GPS相結合的手機混合定位技術——gpsOne[J].信息與電子工程,2004.
Design and Implementation of Electric Fence System Based on Android
FENG Man-man,LI Jun,F(xiàn)ANG 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開發(fā)
李俊(1978-),男,湖北黃石人,副教授,研究方向為網(wǎng)絡管理,智能移動開發(fā),651351642@qq.com,15697181978
方國康(1994-),男,湖北恩施人,在讀本科,研究方向為Android開發(fā)
汪浩(1995-),男,湖北黃岡人,在讀本科,研究方向為算法設計
2016-08-16
2016-10-17