馮滿滿,李 俊,方國康,汪 浩
(武漢科技大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,武漢 430065)
基于Android的電子圍欄系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
馮滿滿,李 俊,方國康,汪 浩
(武漢科技大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,武漢 430065)
為了借助Android手機(jī)提供有效的室外實(shí)時(shí)位置監(jiān)測(cè)服務(wù),對(duì)Android平臺(tái)的定位技術(shù)以及推送技術(shù)進(jìn)行研究。該系統(tǒng)采用基于監(jiān)控客戶端、被監(jiān)控客戶端以及Web服務(wù)端的三方數(shù)據(jù)交互模型,實(shí)現(xiàn)監(jiān)控客戶端對(duì)被監(jiān)控客戶端的室外實(shí)時(shí)位置監(jiān)測(cè)和越界自動(dòng)推送功能。該系統(tǒng)僅依靠軟件支持,節(jié)省開發(fā)專用硬件的成本。
電子圍欄;推送;室外位置監(jiān)測(cè)
武漢科技大學(xué)大學(xué)生科技創(chuàng)新(No.15ZRC106)
近期,高校女大學(xué)生遇害事件頻發(fā),關(guān)于如何保護(hù)自身安全的話題一下被推上了風(fēng)口浪尖。我們認(rèn)為,除了提高自我防范意識(shí)外,來自第三方的保護(hù)也至關(guān)重要。
目前可穿戴設(shè)備與手機(jī)的結(jié)合品灸手可熱。這些設(shè)備多用于母嬰之間、老人和子女之間以及貴重的財(cái)務(wù)上,在保護(hù)小孩,老人和財(cái)務(wù)方面的作用日益明顯。但是,這些設(shè)備的造價(jià)高昂,使用人群單一,擴(kuò)展性不高。
而從大環(huán)境下看,移動(dòng)終端設(shè)備在最近幾年迅猛發(fā)展。基于位置的服務(wù)在移動(dòng)終端設(shè)備的應(yīng)用越來越成熟?,F(xiàn)在學(xué)校里學(xué)生的手機(jī)移動(dòng)終端非常普及,以及校園無線網(wǎng)絡(luò)的全面覆蓋,讓我們能夠找到一種借助手機(jī)移動(dòng)終端來實(shí)時(shí)監(jiān)測(cè)用戶位置的方法。
相對(duì)市場上現(xiàn)有產(chǎn)品,本系統(tǒng)不必制作專用的定位穿戴設(shè)備,完全借由軟件實(shí)現(xiàn),使得本系統(tǒng)具有很好的擴(kuò)展性,很容易針對(duì)不同的使用群體制作不同的功能,如圈畫電子圍欄,設(shè)定綁定雙方距離,歷史軌跡回放等。
1.1 定位技術(shù)
(1)衛(wèi)星定位——GPS(Global Positioning System,全球定位系統(tǒng))
從現(xiàn)狀來看,GPS定位是目前最為精確,應(yīng)用最為廣泛的室外定位導(dǎo)航技術(shù),已經(jīng)成為每一個(gè)移動(dòng)設(shè)備的標(biāo)配之一。并且GPS定位使用GPS天線和接收機(jī)通過衛(wèi)星通道傳輸信息,是不需要使用網(wǎng)絡(luò)的定位技術(shù)。系統(tǒng)定義的主要工作區(qū)域在室外,并且需要輪詢獲取設(shè)備位置用以對(duì)比計(jì)算,從這兩方面考慮,選擇了GPS定位技術(shù)作為主要定位手段。
(2)Android網(wǎng)絡(luò)定位——包括基站定位和Wi-Fi定位
基站定位利用附近基站測(cè)算并加以嚴(yán)格的數(shù)學(xué)計(jì)算來確定手機(jī)位置,誤差一般在幾十米到幾百米之內(nèi)。Wi-Fi定位根據(jù)Wi-Fi接入點(diǎn)的唯一MAC地址,訪問網(wǎng)絡(luò)上的定位Web服務(wù),由Web服務(wù)檢索并返回該Wi-Fi接入點(diǎn)的位置作為手機(jī)的位置。為了防止GPS室內(nèi)定位誤差過大導(dǎo)致系統(tǒng)誤推送的情況出現(xiàn),可手動(dòng)切換系統(tǒng)定位方式為網(wǎng)絡(luò)定位,以提高定位精確度。
1.2 推送技術(shù)
(1)推送實(shí)現(xiàn)
Android通過WifiManager獲取網(wǎng)卡MAC地址在通訊兩端建立TCP或UDP連接進(jìn)行網(wǎng)絡(luò)通訊。這種連接叫做multiple connections,每次請(qǐng)求都會(huì)打開一個(gè)新的連接,為了避免這種情況出現(xiàn)了長連接persistent connection。借助長連接不斷開的特性進(jìn)行設(shè)計(jì)。首先客戶端發(fā)送異步長連接請(qǐng)求,等待服務(wù)器響應(yīng)。服務(wù)器非阻塞地保持該長連接。當(dāng)服務(wù)器數(shù)據(jù)更新后,由服務(wù)器通過長連接把消息推送給客戶端。這樣相當(dāng)于實(shí)現(xiàn)了客戶端“監(jiān)控”服務(wù)器。
(2)推送使用
系統(tǒng)中兩處使用了推送技術(shù)。第一,當(dāng)越界發(fā)生時(shí),被監(jiān)控方發(fā)起推送請(qǐng)求。第二,被監(jiān)控方為節(jié)省流量開銷會(huì)緩存自己在數(shù)據(jù)庫中的圍欄信息用于和GPS定位信息進(jìn)行對(duì)比計(jì)算。為保證數(shù)據(jù)的有效性,當(dāng)監(jiān)控方重新設(shè)置圍欄信息時(shí),服務(wù)器發(fā)起推送請(qǐng)求告知被監(jiān)控方更新緩存。
2.1 基本設(shè)計(jì)思路
本系統(tǒng)客戶端為了更好的對(duì)用戶進(jìn)行權(quán)限管理,增加了角色和功能的概念,由角色執(zhí)行一組功能,再由用戶去扮演角色間接獲得功能。當(dāng)前系統(tǒng)有兩種角色,分別為監(jiān)控角色和被監(jiān)控角色。用戶以用戶ID和密碼登錄系統(tǒng),當(dāng)開啟定位推送時(shí)扮演被監(jiān)控角色并獲取對(duì)比計(jì)算等功能;當(dāng)用戶對(duì)應(yīng)的綁定方用戶扮演被監(jiān)控角色后,該用戶即扮演監(jiān)控角色。當(dāng)用戶登錄時(shí),將設(shè)備網(wǎng)卡MAC地址上傳到數(shù)據(jù)庫,完成用戶與設(shè)備之間的映射,為推送提供數(shù)據(jù)基礎(chǔ)。監(jiān)控角色通過設(shè)置圍欄信息更新被監(jiān)控角色在數(shù)據(jù)庫的圍欄信息,至此,被監(jiān)控角色可以輪詢對(duì)比計(jì)算設(shè)備定位信息和用戶在數(shù)據(jù)庫中的圍欄信息來判斷越界是否發(fā)生。若越界發(fā)生則向服務(wù)器發(fā)起推送請(qǐng)求,服務(wù)器根據(jù)用戶-設(shè)備映射表轉(zhuǎn)發(fā)推送請(qǐng)求。
2.2 系統(tǒng)結(jié)構(gòu)
基于Android的電子圍欄系統(tǒng)由客戶端,服務(wù)端,MySQL數(shù)據(jù)庫以及推送平臺(tái)組成。其中系統(tǒng)的絕大部分計(jì)算需求被設(shè)計(jì)在客戶端,客戶端不僅作為流程控制的接口,還充當(dāng)了整個(gè)系統(tǒng)的控制中心。而服務(wù)端有兩項(xiàng)功能,其一,和MySQL數(shù)據(jù)庫進(jìn)行數(shù)據(jù)交互,其二,轉(zhuǎn)發(fā)推送請(qǐng)求。推送平臺(tái)收到推送請(qǐng)求后負(fù)責(zé)真正發(fā)送推送。下圖(圖1)說明了本系統(tǒng)的基本結(jié)構(gòu)。
圖1 系統(tǒng)結(jié)構(gòu)圖
2.3 數(shù)據(jù)庫設(shè)計(jì)
系統(tǒng)使用MySQL關(guān)系型數(shù)據(jù)庫,結(jié)合功能需求,可以抽取出相關(guān)實(shí)體,包含用戶信息表,設(shè)備表,用戶-設(shè)備映射表,用戶綁定表以及圍欄設(shè)置表等數(shù)據(jù)表。借助數(shù)據(jù)庫ER圖進(jìn)行簡單表示(如圖2),可以明確用戶、設(shè)備、圍欄這三者的關(guān)系。用戶與用戶之間存在綁定,用戶與設(shè)備之間一對(duì)一關(guān)聯(lián),圍欄被某一用戶獨(dú)占。在實(shí)際使用中,我們將用戶ID作為起點(diǎn),以用戶綁定表,用戶-設(shè)備映射表,圍欄設(shè)置表為線索來獲取全部可用信息。
基于Android的電子圍欄系統(tǒng)主要包括4大功能模塊:注冊(cè)登錄模塊、用戶綁定模塊、圍欄設(shè)置模塊、定位推送模塊。其中定位推送模塊完成本系統(tǒng)核心功能,該模塊實(shí)現(xiàn)依賴于其他三個(gè)模塊的功能。
注冊(cè)登錄模塊負(fù)責(zé)新用戶身份錄入,其中關(guān)鍵的是用戶登錄。用戶登錄除負(fù)責(zé)用戶身份驗(yàn)證外,還需要更新用戶-設(shè)備映射表,保證用戶-設(shè)備映射關(guān)系的有效性,確保推送能夠正確送達(dá)。
圖2 數(shù)據(jù)庫ER圖
綁定模塊負(fù)責(zé)查詢顯示當(dāng)前系統(tǒng)中用戶的綁定情況,并指導(dǎo)用戶完成綁定。當(dāng)前系統(tǒng)只支持一對(duì)一綁定,綁定過程由一方發(fā)起,需對(duì)方同意才能建立綁定關(guān)系;也可以自主解除綁定,解除綁定由一方發(fā)起,無需對(duì)方同意即可解除綁定關(guān)系。
圍欄設(shè)置模塊提供監(jiān)控角色給被監(jiān)控角色添加圍欄信息的功能。在該設(shè)置模塊中,系統(tǒng)選擇百度地圖API來顯示地圖。此外,系統(tǒng)添加了地理位置查詢,展示設(shè)備當(dāng)前位置,對(duì)方當(dāng)前位置等功能。借助這些功能,我們可以自由設(shè)定圍欄的各項(xiàng)信息,最后經(jīng)由該模塊提交給服務(wù)器,由服務(wù)器將圍欄信息寫入被監(jiān)控角色在數(shù)據(jù)庫中的圍欄信息,并向被監(jiān)控角色發(fā)起推送,通知其更新緩存。
定位推送模塊實(shí)現(xiàn)系統(tǒng)核心功能。其定位功能分兩步進(jìn)行:第一為數(shù)據(jù)收集,緩存圍欄信息并獲取設(shè)備當(dāng)前位置。第二為對(duì)比計(jì)算,對(duì)比緩存的圍欄數(shù)據(jù)以及定位數(shù)據(jù),加以球面上兩點(diǎn)間距離公式輔佐計(jì)算得出設(shè)備與圍欄中心的相對(duì)距離,再用其與圍欄范圍進(jìn)行比較得出是否越界。若越界,則發(fā)起推送。
3.1 定位推送模塊詳解
該模塊功能屬于被監(jiān)控角色,設(shè)計(jì)的主要原則是盡量節(jié)省流量開銷,盡量提高監(jiān)測(cè)精確度。主要分為四個(gè)功能:分別是緩存功能、定位功能、對(duì)比計(jì)算和推送功能。
(1)緩存功能,登錄后對(duì)用戶自身圍欄信息進(jìn)行首次緩存,之后在收到服務(wù)器端數(shù)據(jù)更新推送后通過網(wǎng)絡(luò)更新緩存。
(2)定位功能,定位采用輪詢方式進(jìn)行定位。若輪詢間隔過大,則違背了系統(tǒng)的實(shí)時(shí)位置監(jiān)測(cè)的本意。另外,盡管GPS定位不依賴網(wǎng)絡(luò),但卻非常耗電。故輪詢間隔過小也不行。綜合兩點(diǎn)約束,通過反復(fù)試驗(yàn),系統(tǒng)最后選定90s為輪詢間隔。
(3)對(duì)比計(jì)算,對(duì)比計(jì)算屬于定位推送功能模塊中的第二步,其計(jì)算數(shù)據(jù)來源如下:
①從服務(wù)器數(shù)據(jù)庫中緩存的用戶自身被設(shè)置的圍欄信息
②實(shí)時(shí)定位產(chǎn)生的定位結(jié)果數(shù)據(jù)
借助這兩個(gè)實(shí)時(shí)數(shù)據(jù)加以嚴(yán)格的數(shù)學(xué)公式,對(duì)比計(jì)算結(jié)果能很大程度上反映被監(jiān)控方和其圍欄的位置關(guān)系。
(4)推送功能,該功能根據(jù)對(duì)比計(jì)算結(jié)果選擇是否進(jìn)行推送。當(dāng)需要進(jìn)行推送時(shí),由被監(jiān)控角色向服務(wù)器發(fā)起獲取監(jiān)控角色設(shè)備網(wǎng)卡MAC地址的請(qǐng)求,之后借由該地址向服務(wù)器發(fā)起推送請(qǐng)求,服務(wù)器送到推送請(qǐng)求后轉(zhuǎn)發(fā)給推送平臺(tái),推送平臺(tái)根據(jù)設(shè)備網(wǎng)卡MAC地址進(jìn)行推送。
3.2 系統(tǒng)總體設(shè)計(jì)
本系統(tǒng)以Web服務(wù)器作為數(shù)據(jù)中轉(zhuǎn)站和推送中轉(zhuǎn)站,實(shí)現(xiàn)用戶設(shè)備映射,用戶綁定,圍欄設(shè)置以及定位推送等功能。其中用戶可以扮演兩種角色,分別是監(jiān)控角色和被監(jiān)控角色。不同角色所處地位不同,可使用功能不同,用戶可以同時(shí)擔(dān)任著兩種角色。監(jiān)控角色設(shè)置圍欄,接收推送;被監(jiān)控角色對(duì)比計(jì)算,發(fā)起推送。其總體系統(tǒng)架構(gòu)如圖3所示。
(1)客戶端UI實(shí)現(xiàn)
客戶端包括4個(gè)UI界面,分別是位置信息顯示頁,用戶綁定頁,圍欄設(shè)置頁和推送消息處理頁。其中位置信息顯示頁用于顯示綁定雙方的圍欄信息以及當(dāng)前位置信息等,并且所有頁面都以ListView為基礎(chǔ)實(shí)現(xiàn)的上下滑動(dòng)。在圍欄設(shè)置頁使用Touch事件響應(yīng)地圖手勢(shì)操作。位置信息顯示頁和推送消息處理也如圖4,5所示。
圖3 系統(tǒng)總體架構(gòu)
圖4
圖5
(2)客戶端監(jiān)控方功能實(shí)現(xiàn)
監(jiān)控方功能包含查詢位置信息,設(shè)置圍欄信息,接收處理推送消息等,當(dāng)用戶登錄軟件后,會(huì)自動(dòng)更新用戶-設(shè)備映射表,具體做法是將當(dāng)前用戶ID和設(shè)備MAC地址更新到服務(wù)器的數(shù)據(jù)庫用戶-設(shè)備映射表中。若用戶未綁定,則通過綁定模塊引導(dǎo)用戶完成綁定。綁定完成后,用戶可以借助圍欄設(shè)置功能對(duì)被監(jiān)控方進(jìn)行圍欄信息的設(shè)置,這里的圍欄信息主要包括中心點(diǎn),范圍。如果用戶進(jìn)行了圍欄設(shè)置,則有可能會(huì)收到來自被監(jiān)控方的推送消息,此時(shí)監(jiān)控方可以Notification來接收并處理這些推送消息。
(3)Android被監(jiān)控方功能實(shí)現(xiàn)
被監(jiān)控方需要主動(dòng)打開定位推送功能,才能進(jìn)行定位結(jié)果上傳,對(duì)比計(jì)算等一系列操作。
當(dāng)被監(jiān)控方開啟定位推送后,該模塊開啟一個(gè)服務(wù)線程用于輪詢獲取圍欄信息和上傳定位結(jié)果并且完成對(duì)比計(jì)算的操作,每一次輪詢按順序完成一輪上述操作。當(dāng)發(fā)現(xiàn)越界時(shí),請(qǐng)求監(jiān)控方MAC地址,發(fā)送推送請(qǐng)求。
圖6 Android端流程圖
(4)服務(wù)器端實(shí)現(xiàn)
使用Java和MySQL實(shí)現(xiàn)一個(gè)無界面的服務(wù)器,該服務(wù)器為客戶端訪問數(shù)據(jù)庫提供接口,轉(zhuǎn)發(fā)被監(jiān)控方的推送請(qǐng)求到推送平臺(tái),當(dāng)數(shù)據(jù)庫圍欄信息更新時(shí)通過推送及時(shí)通知被更新對(duì)象。
本系統(tǒng)結(jié)合Android手機(jī)特色的定位功能,以及實(shí)時(shí)推送技術(shù),已基本完成室外定位推送功能。綁定雙方均可通過UI界面做流程控制,進(jìn)行圍欄設(shè)置與位置信息查詢,并且在處于后臺(tái)情況下通過聲音和振動(dòng)提高推送的辨識(shí)度。能在越界發(fā)生時(shí)及時(shí)反饋到監(jiān)控方,具有不錯(cuò)的實(shí)用性。
[1]劉美生.全球定位系統(tǒng)及其應(yīng)用綜述(一)——導(dǎo)航定位技術(shù)發(fā)展的沿革[J].中國測(cè)試技術(shù),2006.
[2]鄒偉平.基于GPS/GPRS/Web的無線定位監(jiān)護(hù)系統(tǒng)的研究.科技廣場,2012.
[3]王視換.蜂窩網(wǎng)與GPS相結(jié)合的手機(jī)混合定位技術(shù)——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-),男,湖北襄陽人,在讀本科,研究方向?yàn)锳ndroid開發(fā)
李?。?978-),男,湖北黃石人,副教授,研究方向?yàn)榫W(wǎng)絡(luò)管理,智能移動(dòng)開發(fā),651351642@qq.com,15697181978
方國康(1994-),男,湖北恩施人,在讀本科,研究方向?yàn)锳ndroid開發(fā)
汪浩(1995-),男,湖北黃岡人,在讀本科,研究方向?yàn)樗惴ㄔO(shè)計(jì)
2016-08-16
2016-10-17