李剛 姬同凱 楊建光 曾國玉 梁通
摘 要: 位置指紋采集工作是實(shí)施Wi-Fi定位系統(tǒng)的重要環(huán)節(jié)。為了減少無效作業(yè)、保障數(shù)據(jù)可用性、提高團(tuán)隊協(xié)作能力,設(shè)計并實(shí)現(xiàn)了一種基于Android平臺的位置指紋數(shù)據(jù)采集系統(tǒng)。該系統(tǒng)具備采集規(guī)則自定義、地圖及采集點(diǎn)展示、無線信號采集和結(jié)果實(shí)時上傳等功能,具有交互體驗(yàn)順暢簡便、施工過程可視化等優(yōu)點(diǎn)。測試效果表明:系統(tǒng)運(yùn)行良好,功能穩(wěn)定可靠,滿足實(shí)際應(yīng)用需要。
關(guān)鍵詞: Android; 位置指紋; 無線信號采集; Wi-Fi定位系統(tǒng)實(shí)施
中圖分類號:TP311 文獻(xiàn)標(biāo)志碼:A 文章編號:1006-8228(2017)09-09-04
Abstract: The location fingerprint acquisition is the important basic part of Wi-Fi positioning system. In order to reduce the fruitless work, guarantee the data availability and improve the teamwork cooperation, an Android-based location fingerprint acquisition system is designed. The system has the functions of defining acquisition rule, displaying map and acquisition points, acquiring the wireless signal data and uploading the results in real time, and has the advantages of smooth and simple of interactive experience and visualization of construction progress. The test results show that the system runs well and the function is stable and reliable, which meets the needs of practical application.
Key words: Android; location fingerprint; wireless signal acquisition; Wi-Fi positioning system implementation
0 引言
隨著移動互聯(lián)網(wǎng)技術(shù)發(fā)展,LBS(Location Based Service)發(fā)揮著越來越重要的作用[1-2]。Wi-Fi(Wireless Fidelity)定位技術(shù)是在室內(nèi)環(huán)境實(shí)現(xiàn)LBS的重要手段之一[3-4]。得益于支持Wi-Fi技術(shù)智能移動終端的普及,Wi-Fi定位技術(shù)已在商場、校園、圖書館、博物館、旅游景區(qū)、醫(yī)院、礦井等多個場景得到應(yīng)用,并取得了不錯效果。
基于Wi-Fi的位置指紋定位是以定位環(huán)境中各個無線AP(Access Point)接入點(diǎn)的RSSI(Received Signal Strength Indicator)匯集形成的位置指紋庫為基礎(chǔ)的無線定位解決方案,具有定位成本低、擴(kuò)展性強(qiáng)和定位精度比較高的優(yōu)勢,成為當(dāng)前較廣泛使用的熱點(diǎn)技術(shù)[5]。其中,位置指紋數(shù)據(jù)采集工作相當(dāng)關(guān)鍵。
根據(jù)移動、持續(xù)作業(yè)等特點(diǎn),使用智能移動設(shè)備采集無線信號數(shù)據(jù)是較理想的選擇。目前,Android和iOS設(shè)備具有較高的市場占有率。相較于iOS平臺,Android平臺開放了掃描Wi-Fi相關(guān)信息的API(Application Programming Interface),具有豐富的開源資源[6-7]。故選用Android平臺,實(shí)現(xiàn)位置指紋數(shù)據(jù)采集系統(tǒng)。
1 系統(tǒng)設(shè)計
1.1 系統(tǒng)總體設(shè)計
系統(tǒng)采用C(客戶端)/S(服務(wù)器)架構(gòu),分為客戶層、業(yè)務(wù)處理層和數(shù)據(jù)服務(wù)層,如圖1所示。其中業(yè)務(wù)處理層和數(shù)據(jù)服務(wù)層運(yùn)行在服務(wù)器端。各層功能描述如下。
⑴ 數(shù)據(jù)服務(wù)層。提供系統(tǒng)運(yùn)行所需的數(shù)據(jù)支撐,包括數(shù)據(jù)采集所需的地圖文件、采集點(diǎn)位置文件、采集數(shù)據(jù)結(jié)果以及通過采集數(shù)據(jù)生成的位置指紋數(shù)據(jù)等,數(shù)據(jù)的具體形式包括數(shù)據(jù)庫和SVG(Scalable Vector Graphics)文件。
⑵ 業(yè)務(wù)處理層。是系統(tǒng)業(yè)務(wù)實(shí)現(xiàn)的核心部分,為客戶層提供相關(guān)業(yè)務(wù)的處理。包括地圖及采集點(diǎn)位置文件下載、指紋數(shù)據(jù)制作、數(shù)據(jù)服務(wù)層相關(guān)數(shù)據(jù)資源獲取、采集結(jié)果上傳存儲等相關(guān)服務(wù)。
⑶ 客戶層。主要通過基于Android平臺的智能終端設(shè)備進(jìn)行位置指紋采集的相關(guān)工作。
1.2 客戶端設(shè)計
系統(tǒng)客戶端的功能結(jié)構(gòu)如圖2所示,主要包括基礎(chǔ)功能、地圖及采集點(diǎn)展示和操作、Wi-Fi信號掃描及采集、采集數(shù)據(jù)上傳4大功能模塊。
⑴ 基礎(chǔ)功能模塊。用戶登錄后設(shè)置采集規(guī)則。采集規(guī)則分為無線設(shè)備AP過濾規(guī)則、采集操作規(guī)則和采集結(jié)果要求。其中,無線設(shè)備AP(Access Point)過濾規(guī)則有兩種,匹配Mac地址前三段和匹配SSID前綴;采集操作規(guī)則包括采集的次數(shù)、設(shè)備所處方向和每次采集的時間;采集結(jié)果要求包括掃描到的AP數(shù)量和相應(yīng)采集的數(shù)據(jù)量。
⑵ 地圖及采集點(diǎn)展示和操作模塊。智能終端從服務(wù)器端下載地圖和采集點(diǎn)位置文件,在地圖上顯示各個采集點(diǎn)的具體位置及采集狀態(tài)。采集狀態(tài)包括未采集、已采集未上傳、已上傳和已上傳有更新四種,分別用紅色、黃色、藍(lán)色和綠色表示。
⑶ Wi-Fi信號掃描及采集模塊。根據(jù)采集操作規(guī)則,智能終端在采集點(diǎn)相應(yīng)位置掃描Wi-Fi信號,將滿足要求的采集結(jié)果存儲到本地數(shù)據(jù)庫。采集結(jié)果包括采集點(diǎn)ID、AP Mac、RSSI值和采集時間。endprint
⑷ 采集數(shù)據(jù)上傳模塊。在采集點(diǎn)的信號采集工作完成后,同步結(jié)果至服務(wù)器端。
1.3 服務(wù)端設(shè)計
系統(tǒng)服務(wù)器端主要實(shí)現(xiàn)基礎(chǔ)資源管理、指紋數(shù)據(jù)制作和基于RESTful風(fēng)格的HTTP服務(wù)發(fā)布[8]。系統(tǒng)服務(wù)器端架構(gòu)如圖3所示。
⑴ 基礎(chǔ)資源采集。系統(tǒng)所需的基礎(chǔ)資源數(shù)據(jù)包括地圖數(shù)據(jù)和規(guī)劃的采集點(diǎn)位置數(shù)據(jù)。把采集后的相關(guān)數(shù)據(jù)以符合SVG標(biāo)準(zhǔn)的文件形式組織,通過FTP技術(shù)上傳至服務(wù)器。
⑵ 指紋數(shù)據(jù)制作。針對某一采集點(diǎn),當(dāng)其采集結(jié)果上傳完成后,以AP為單元,對采樣RSSI值進(jìn)行處理。處理方法是采用σ高斯濾波模型,選取高概率發(fā)生區(qū)的RSSI值[9],取其中位數(shù)作為最終值,存入指紋數(shù)據(jù)庫中。
⑶ HTTP服務(wù)?;赟SH框架[10],使用JAVA語言進(jìn)行開發(fā),提供RESTful風(fēng)格的HTTP服務(wù),通過Tomcat服務(wù)器部署發(fā)布。
2 系統(tǒng)實(shí)現(xiàn)
系統(tǒng)實(shí)現(xiàn)的關(guān)鍵點(diǎn)包括地圖及采集點(diǎn)的顯示和操作、Wi-Fi信號掃描及采集、信號采集結(jié)果上傳。
2.1 地圖及采集點(diǎn)的顯示和操作
本系統(tǒng)使用EepSvgMapLib和EepPhotoViewL-ib兩個自定義封裝Library庫實(shí)現(xiàn)地圖及采集點(diǎn)的顯示和操作。其中EepSvgMapLib庫主要實(shí)現(xiàn)地圖和采集點(diǎn)位置文件的下載、更新、文件解析、渲染和顯示功能;EepPhotoViewLib庫主要實(shí)現(xiàn)地圖的手勢操作,包括縮放、平移、旋轉(zhuǎn)等操作。以下是各個Library庫中用到的核心類。
⑴ SVG類。將SVG文件類型的地圖和采集點(diǎn)位置文件最終解析成的對象類型,該類中包含了S-VG文件中所有類型的節(jié)點(diǎn)和屬性值,通過調(diào)用re-nderToPicture方法將解析的SVG對象轉(zhuǎn)換為Ima-geView控件能夠直接顯示的Drawable對象。
⑵ SVGParser類。SVG文件解析的工具類,將地圖和采集點(diǎn)位置文件解析成SVG類對象,使用Parse(InputStream is)函數(shù)解析SVG文件流,將地圖文件和采集點(diǎn)文件分別解析成兩個SVG對象,然后將兩個SVG對象在合并為一個SVG對象進(jìn)行渲染,達(dá)成在地圖上顯示采集點(diǎn)位置的效果。
⑶ MapView類。地圖顯示的封裝類,內(nèi)部封裝了顯示地圖的ImageView控件、顯示地圖方向的指北針控件、顯示地圖覆蓋物的容器控件、地圖縮放控件和地圖標(biāo)尺控件。
⑷ EepMap類。MapView的操作類,主要負(fù)責(zé)對MapView上的元素進(jìn)行操作,如文字、POI元素、Marker、InputWindow、Polyline、Cicle等元素的添加、刪除和自適應(yīng)顯示等。另一個重要作用是負(fù)責(zé)地圖及采集點(diǎn)文件的下載和更新,顯示地圖前,在另起的獨(dú)立子線程中,判斷當(dāng)前地圖和采集點(diǎn)文件的狀態(tài),具體操作參見圖4。
⑸ PhotoAttacher類。地圖的手勢操作工具類,包括平移、縮放、旋轉(zhuǎn)操作,提供地圖Matrix變更及地圖操作的回調(diào)監(jiān)聽,方便對地圖在手勢操作過程中進(jìn)行各類調(diào)整。
2.2 Wi-Fi信號掃描及采集
使用Android系統(tǒng)提供的WifiManager服務(wù),在采集點(diǎn)位置上根據(jù)設(shè)定的采集操作規(guī)則,以1秒鐘間隔持續(xù)掃描Wi-Fi信號,掃描結(jié)果通過Broadcast方式廣播,在自定義WifiScanRecevier類中對掃描結(jié)果作接收處理。處理時,先根據(jù)設(shè)定的AP過濾規(guī)則對采集到的所有信號數(shù)據(jù)進(jìn)行過濾,篩選出符合條件的數(shù)據(jù)結(jié)果。然后根據(jù)采集結(jié)果要求對數(shù)據(jù)結(jié)果進(jìn)行檢查:對不符合要求的結(jié)果提示重新采集;對符合要求的采集結(jié)果,拼接成JSON字符串,存儲到本地SQLlite數(shù)據(jù)庫中,等待上傳至服務(wù)器端。在采集操作完成后,更新SQLite中相應(yīng)的采集點(diǎn)狀態(tài),并更新地圖上采集點(diǎn)的顏色,以免重復(fù)采集。用到的核心類包括:
⑴ WifiSearcher類。獲取WifiManager服務(wù)并開啟Wi-Fi掃描,將掃描結(jié)果通過Broadcast的方式廣播出去;內(nèi)部自定義WifiScanRecevier類接收掃描結(jié)果,并通過SearchWifiListener監(jiān)聽回調(diào)將掃描數(shù)據(jù)交由其他類處理。
⑵ ApCollectionFragment類。實(shí)現(xiàn)SearchWif-
iListener監(jiān)聽器的方法,對掃描到的信號數(shù)據(jù)進(jìn)行過濾、校驗(yàn)和存儲。
2.3 采集結(jié)果上傳
本系統(tǒng)支持多人同時進(jìn)行數(shù)據(jù)采集,所以在進(jìn)入數(shù)據(jù)上傳頁面時,需保證數(shù)據(jù)同步:智能終端從服務(wù)器端獲取所有采集點(diǎn)的采集狀態(tài),更新相應(yīng)本地維護(hù)的狀態(tài),并以列表形式展示所有采集點(diǎn)的狀態(tài),然后選擇未同步的數(shù)據(jù)進(jìn)行上傳。
采集結(jié)果以采集點(diǎn)為單元,通過HTTP請求方式依次上傳到服務(wù)器。數(shù)據(jù)上傳成功后,更新本地存儲的采集點(diǎn)狀態(tài)、更新地圖上的采集點(diǎn)狀態(tài)、刪除本地存儲的采集數(shù)據(jù)。
3 系統(tǒng)測試
在某實(shí)驗(yàn)中心(長30米、寬22米)規(guī)劃80個采樣點(diǎn),選用8個型號為Huawei AP6010DN的無線AP設(shè)備進(jìn)行無線覆蓋,選用魅族MX5手機(jī)(Android5.0系統(tǒng))作為采集設(shè)備。對每個采集點(diǎn)分0?、120?和240?三個方向進(jìn)行數(shù)據(jù)采集,每次采集時間為30s,系統(tǒng)運(yùn)行效果如圖5所示。根據(jù)服務(wù)器數(shù)據(jù)統(tǒng)計結(jié)果顯示,未出現(xiàn)數(shù)據(jù)缺失現(xiàn)象。
4 結(jié)束語
該系統(tǒng)基于Android平臺實(shí)現(xiàn),可根據(jù)位置指紋數(shù)據(jù)采集工作的實(shí)際需求動態(tài)地調(diào)整相關(guān)采集參數(shù),參照地圖找尋待采集點(diǎn);在采集過程中加入了計時器提醒、方向傳感器引導(dǎo)、RSSI波動曲線等輔助手段;采集完成后可實(shí)時反饋結(jié)果,有助于提高團(tuán)隊協(xié)作效率和工作質(zhì)量。今后系統(tǒng)將進(jìn)一步增強(qiáng)多并發(fā)大數(shù)據(jù)量環(huán)境下的數(shù)據(jù)同步能力,以便更好滿足大型項目的實(shí)施要求。
參考文獻(xiàn)(References):
[1] 羅軍舟,吳文甲,楊明.移動互聯(lián)網(wǎng):終端、網(wǎng)絡(luò)與服務(wù)[J].計算
機(jī)學(xué)報,2011.34(11):2029-2051
[2] 陳龍彪,李石堅,潘綱.智能手機(jī):普適感知與應(yīng)用[J].計算機(jī)學(xué)
報,2015.38(2):423-438
[3] Jinlong E,Jie Ma. A Research on Seamless Indoor and
Outdoor Positioning[J]. Journal of Computers,2013.8(12):3047-3057
[4] 章嫚娜,王玉槐,曹世華,張慧熙,謝曉婷.GPS+WIFI室內(nèi)外混
合定位服務(wù)系統(tǒng)研究[J].計算機(jī)時代,2016.3:12-14
[5] 陳斌濤,劉任任,陳益強(qiáng),劉軍發(fā),蔣鑫龍,劉定俊.動態(tài)環(huán)境中的
WiFi指紋自適應(yīng)室內(nèi)定位方法[J].傳感技術(shù)學(xué)報,2015.28(5):729-738
[6] 曹文靜.基于iOS的室內(nèi)定位系統(tǒng)的研究與實(shí)現(xiàn)[D].四川師
范大學(xué),2015.
[7] 楊凱,郭英,畢京學(xué).基于安卓平臺的室內(nèi)實(shí)時定位[J].測繪科
學(xué),2015.40(6):125-128,155
[8] 王鵬飛.移動瘦客戶端架構(gòu)在企業(yè)中的應(yīng)用研究[J].計算機(jī)
時代,2016.3:27-30
[9] 陳麗,王學(xué)東,孫晶晶,李明.基于改進(jìn)高斯濾波的室內(nèi)無線定
位算法[J].電氣自動化,2014.36(3):31-33,53
[10] 薛桂香,任女爾,閆世峰,林濤.基于簡單工廠模式的SSH+
ExtJs架構(gòu)泛型化研究[J].河北工業(yè)大學(xué)學(xué)報,2015.44(3):65-69endprint