郭倩 韓博 吳飛龍 朱曉芒
摘要:數(shù)字校園在快速發(fā)展的過程中,移動辦公成為一種趨勢。針對當前高校移動端業(yè)務與基于位置服務(LBS)相結(jié)合的需求,提出一套基于云計算的在Android平臺上利用百度定位API實現(xiàn)精準混合定位的校園定位技術(shù)方案。以校園即時消息通信Android客戶端為例展開實例驗證,結(jié)果表明該方案合理可行。研究成果為校內(nèi)移動應用與LBS服務的集成提供了技術(shù)支持,增強了校園移動應用的服務能力,可以為相關(guān)研究和實踐提供技術(shù)指導。
關(guān)鍵詞:LBS;Android;混合定位;百度定位API;云計算
中圖分類號:TP302.1;TP311.5 ? ?文獻標志碼:A ? ? ?文章編號:1673-8454(2020)06-0089-05
一、引言
近年來,智能移動終端逐漸在工作、生活和學習中普及,移動定位技術(shù)也得到了快速發(fā)展,基于位置的服務LBS(Location-based Service)帶來了更多的高效和便利[1]。LBS是利用各種定位技術(shù)獲得移動終端設(shè)備的當前的位置,再利用手機網(wǎng)絡或者Wi-Fi獲取服務。LBS在最初主要應用于實施救援,即緊急情況下迅速對求助者的位置予以定位,如歐洲的E112 系統(tǒng)、美國的E911 系統(tǒng)。目前,LBS在軍事、物流、交通、生活、醫(yī)療等領(lǐng)域都得到了廣泛的應用,例如,查找智能移動終端附近一定范圍內(nèi)的影院、商場、餐館、銀行、加油站等。
Android是基于Linux操作系統(tǒng)的自由及開源的移動終端操作系統(tǒng), 與具備強大數(shù)據(jù)處理能力的智能移動終端相結(jié)合,在工作、生產(chǎn)和生活中漸漸占據(jù)了廣闊的市場。2018年,Android OS高達85.9%的市場占有率就已經(jīng)遠遠超越iOS,成為最主流的移動端OS。
數(shù)字校園的快速發(fā)展引領(lǐng)著高校信息化建設(shè)日益壯大,越來越多的業(yè)務從線下遷移到線上,從PC端延伸到移動終端,如移動校園、移動迎新、教務考勤、校園訂餐等。眾多校園移動化應用亟需與LBS結(jié)合,從而為師生提供更加智能、安全和便捷的服務。雖然目前市場上針對Android移動終端開發(fā)的提供LBS服務的手機應用層出不窮,但是非定制化的廣譜性軟件無法按照高校的業(yè)務模式為師生提供定制化的服務。基于此,本文針對LBS技術(shù)展開研究,提出在Android平臺上利用百度定位API[1]實現(xiàn)校園定位功能這一技術(shù)方案,以校園移動即時通信系統(tǒng)Android客戶端為實例,驗證方案的可行性、合理性和高效性。
二、Android移動終端定位技術(shù)
GPS接收機、基站通信模塊、Wi-Fi模塊、慣性器件等是智能移動終端實現(xiàn)定位功能的硬件基礎(chǔ)[2],Android系統(tǒng)為訪問這些硬件提供了原生API,Google、百度、高德等廠商在推出地圖應用的同時,也開放了與其地圖應用相關(guān)的API,讓Android開發(fā)者可以更加輕松地獲取終端的位置信息。本節(jié)首先簡要介紹Android移動終端的定位技術(shù),隨后就如何選擇實現(xiàn)校園定位功能的API進行分析。
不同的定位技術(shù)有其最佳適應環(huán)境,帶來的精確度也各不相同,下面介紹幾種常用的Android移動終端定位技術(shù)。
1.GPS定位
全球定位系統(tǒng)(Global Positioning System,GPS)是衛(wèi)星導航系統(tǒng),目前應用最為廣泛。智能終端上的GPS接收機通過連續(xù)接收衛(wèi)星發(fā)射信號來實時計算三維位置和速度信[2]。
Android提供了LocationManager類來完成訪問GPS設(shè)備的操作。在權(quán)限允許的情況下,應用程序可以訪問GPS設(shè)備進行定位。使用GPS設(shè)備進行定位,需要為應用請求位置相關(guān)權(quán)限。
借助于LocationManager類可以請求使用系統(tǒng)位置服務。
設(shè)定定位標準(即Criteria),通過該標準獲取位置提供者(Location類)。
隨后注冊當GPS設(shè)備位置更新時響應頻率方法,設(shè)置監(jiān)聽頻率、通知條件[3]。
myLocationListener即LocationListener接口,接口內(nèi)定義onLocationChanged()方法,當位置變化時執(zhí)行。
通過onLocationChanged方法中Location提供的getLatitude()和getLongitude()方法,智能終端即可獲取所在位置的經(jīng)緯度信息。部分手機支持設(shè)置“自動下載星歷”,默認通過網(wǎng)絡輔助GPS設(shè)備來執(zhí)行定位,即AGPS[4]。
借助GPS設(shè)備進行定位,盡管定位精確度較高,但冷啟動GPS時間太長,借助于AGPS解決了定位速度的問題,但是并非所有的Android手機都支持AGPS,所以單靠GPS、AGPS無法滿足定位的需求。
2.基于蜂窩網(wǎng)絡的定位——CELL-ID
小區(qū)定位法(CELL-ID)是一種基于蜂窩網(wǎng)絡的低成本、易實現(xiàn)的定位方法[5]。該方法借助于移動系統(tǒng)HLR(Home Location Register)中用戶所處小區(qū)的位置信息來進行定位,覆蓋面很廣,對終端設(shè)備的支持度極高。
一段基站信息的代碼中,主要信息包括移動網(wǎng)絡號(MNC)、移動國家代碼(MCC)、小區(qū)識別碼(CID)和位置號碼(LAC)。minigps提供了全球基站數(shù)據(jù)庫,借助minigps提供的url接口,將基站信息經(jīng)過封裝HTTP POST到服務器會返回設(shè)備的位置信息[6]。
獲取到基站的基本信息后,將這些基站信息封裝成指定的JSON字符串,封裝格式示例如下:
將此字符串以POST方式發(fā)送到minigps提供的服務器地址,即可從服務器端獲取到一串JSON格式的位置信息,解析出經(jīng)緯度和位置信息。
受限于基站的密度,CELL-ID的定位精度通常較低。
3.Wi-Fi定位
使用Wi-Fi進行定位的基本原理和CELL-ID定位相似。Google曾提供免費的Geolocation API幫助用戶定位用戶所在附近的無線網(wǎng)絡熱點的位置,主要原理是借助手機無線網(wǎng)絡偵測當前手機附近所有無線網(wǎng)絡熱點的MAC地址[7],通過第三方開放數(shù)據(jù)庫里面的MAC地址的坐標獲取到當前用戶所處環(huán)境的近似位置信息。由于Wi-Fi熱點的布設(shè)密度通常遠大于蜂窩基站,因此定位精度優(yōu)于CELL-ID方法。
Android系統(tǒng)提供了獲取當前Wi-Fi信息的API。在Wi-Fi連接正常的情況下,借助于WifiManager[8],可以獲取到當前Wi-Fi的基本信息。遺憾的是,Google的Geolocation API已經(jīng)停止提供該項服務。Wi-Fi定位因為沒能找到合適的第三方無線網(wǎng)絡熱點的MAC地址數(shù)據(jù)庫,沒能測試成功。
4.混合定位
在不同的環(huán)境中,不同定位技術(shù)獲取位置的精度是不同的,因此企圖依賴于某一種技術(shù)解決定位的想法并不可行。正確的做法是針對用戶所處網(wǎng)絡、環(huán)境和使用設(shè)備的不同,結(jié)合各定位技術(shù)的特點,選擇最優(yōu)的一個或多個定位技術(shù)?;旌隙ㄎ挥谑菓\而生。在市郊,可以使用GPS接收機提供位置信息實現(xiàn)高精度定位,并且通過網(wǎng)絡補充信息來縮短定位時間,進一步提高定位精度;在市內(nèi),通過GPS、CELL-ID和Wi-Fi混合定位[9]的方式對較復雜的環(huán)境比如高樓密集區(qū)域或室內(nèi)環(huán)境的智能終端進行精確的定位。表1總結(jié)了幾種不同定位技術(shù)的優(yōu)缺點。
通過表1可以看出混合定位的適用面最廣泛,無論在繁華的城市,還是偏僻的農(nóng)村、人煙稀少的郊區(qū),都具備較高的定位精度。和單一的使用某種定位技術(shù)相比較,混合定位技術(shù)盡管實現(xiàn)起來較為復雜,但是具有更高的性價比。
三、定位API及其選擇
當前定位技術(shù)日益趨向于API化,省去了開發(fā)人員在研究定位技術(shù)上耗時。利用開放的定位API,僅需要將應用程序的必要信息封裝起來通過指定的網(wǎng)絡協(xié)議傳輸?shù)降谌教峁┑姆掌?,就可以實時獲取服務器反饋給用戶設(shè)備所處位置信息的響應。目前主流的定位API有以下三種。
1.Google API
為幫助全世界開發(fā)人員輕松打造位置感知應用,Google提供了位置API,采用智能化管理的基本定位技術(shù),根據(jù)用戶的需求提供最佳地點。開發(fā)人員在使用該API的過程中,可以根據(jù)需要設(shè)置“精度”“功耗”等參數(shù),還可以快速訪問到最新、最近的位置,同時降低電源消耗;還可以檢查用戶當前活動,并根據(jù)這些活動有效地使用電源。
2.高德API
高德公司為Android平臺提供與LBS服務相關(guān)的接口,定位SDK采用多種定位技術(shù)協(xié)作的方式(包括GPS、Wi-Fi、基站等),會根據(jù)設(shè)備當前所處的實際情況,選擇最佳的定位方案。
3.百度API
幾年前,百度公司推出地圖API,并且免費提供給用戶使用。幾年來逐步提供面向網(wǎng)頁地圖應用的JavaScript開源庫、JavaScript API和Flash API,以及面向手機地圖應用提供的定位SDK。除此之外,還包括靜態(tài)圖API和車聯(lián)GPS/AGPS定位實現(xiàn)。
Google是最早涉足定位技術(shù)領(lǐng)域的,其定位準確度不容質(zhì)疑。但是,繼2011年關(guān)閉了Google Gears接口,2012年又關(guān)閉了Wi-Fi信息數(shù)據(jù)庫的訪問接口,人們再無法免費享受到Google的定位API的服務。百度和高德的定位API在定位準確度、定位時間上沒有太大差距,因此筆者對兩者的性能進行了測試。
實驗時,在某品牌某型號手機上對高德定位API進行測試。在GPRS和Wi-Fi網(wǎng)絡同時關(guān)閉(GPS設(shè)備可用)時,高德API無法獲取經(jīng)緯度信息。百度定位API未發(fā)現(xiàn)該問題。
為了方便LBS開發(fā)者,百度LBS開放平臺提供LBS云服務,服務端的數(shù)據(jù)計算和存儲能力已開放,通過現(xiàn)有API和SDK服務,提供海量位置數(shù)據(jù)的存儲和檢索服務。
從性能、可控性方面考慮,最終選擇百度的定位API作為在Android平臺上校園定位技術(shù)的解決方案。
四、實例驗證
本節(jié)首先介紹百度API的使用方法,隨后以校園移動即時通信系統(tǒng)Android客戶端為實例,驗證利用百度定位API實現(xiàn)校園定位的可行性、合理性和服務效率。
1.百度API的使用方法
百度定位需要注冊并申請API Key,開發(fā)人員可以根據(jù)實際需求,選擇合適的定位優(yōu)先級。Android 移動終端可在LBS 云端計算和檢索符合要求的位置信息,并且把適合的位置信息保存。具體實現(xiàn)過程如下:
通過定位SDK的核心LocationClient類設(shè)置API Key,即setAK()方法。
設(shè)置LocationClient參數(shù),方便根據(jù)具體的問題選擇不同的定位方案。在項目中,通過BaiduLocationParamsConfig類提供的靜態(tài)setLocationOption()方法,設(shè)置LocationClient的配置信息,如位置信息更新頻率、定位方式優(yōu)先級(一般選網(wǎng)絡有限)、定位服務的版本等。
LocationClient提供了start()方法來開啟定位。隨后注冊位置的監(jiān)聽(即BDLocationListener),即可獲取到最新的位置信息。BDLocationListener接口中提供了onReceiveLocation()方法,參數(shù)BDLocation即為位置信息。BDLocation中提供了對位置信息包括經(jīng)、緯度、詳細地址信息等的get、set方法。
locationListener變量實現(xiàn)了BDLocationListener,負責在新的位置信息達到后進行處理,把最新的位置信息存于BDLocation中。
LocationClient的getLastKnownLocation()方法,用來獲取最近一次成功的位置信息,用于在定位成功后獲取位置信息。
2.即時通信客戶端驗證
下面在西安交通大學即時消息通信Android客戶端上,驗證應用百度定位API實現(xiàn)校園定位的正確性、可行性。
首先Android 移動終端定時通過百度LBS 云端計算和檢索所有用戶的位置信息(經(jīng)、緯度信息)和定位時間戳,并將位置信息保存在數(shù)據(jù)庫中。用戶位置信息表如表2所示。
在軟件的“搖一搖”模塊中,設(shè)計了“附近好友”的功能,用戶搖晃手機,客戶端執(zhí)行定位功能,通過對設(shè)備定位,將獲取到的經(jīng)度和緯度信息封裝進IQ包,以XML流形式發(fā)送到服務器端。服務器端會根據(jù)解析到的經(jīng)度和緯度信息,采用百度LBS的云存儲數(shù)據(jù)周邊檢索功能,以一點為中心(中心點通過經(jīng)緯度參數(shù)指定),搜索中心點附近指定距離范圍內(nèi)的POI點。與數(shù)據(jù)庫中已存儲的所有用戶的位置信息進行比較,搜索出一系列附近好友?!皳u一搖”查找附近好友功流程圖如圖1。
服務器端客戶端搜索到的用戶位置信息為Ls(lso,lsa)(其中,lso表示請求用戶的經(jīng)度信息,lsa表示請求用戶的緯度信息),如果從百度LBS云存儲中檢索到的周邊某些用戶的位置信息為Lp(lpo,lpa)(其中,lpo表示用戶的經(jīng)度信息,lpa表示用戶的緯度信息),如果滿足lpo和lpa分別在lso和lsa的200米以內(nèi)(200米約為0.02度左右)[10],將該用戶的JID信息添加到結(jié)果列表。在這些附近用戶列表中隨即選取一個用戶,將該用戶的基本信息封裝起來,作為響應的IQ包,在IQHandler類中作為客戶端請求的響應[11],返回給客戶端,功能UI界面如圖2。
經(jīng)過測試,通過百度定位API在校園即時通信Android客戶端實現(xiàn)的查找附近好友功能,響應時間不超過0.5秒。使用Monkey對該功能進行10000次的壓力測試,系統(tǒng)未接收到任何崩潰或失控的異常,結(jié)果如圖3所示,“Events injected:10000”后所提示。
上述實例研究說明, 本文提出的基于云計算的百度定位API的校園定位解決方案在Android平臺上具有良好的可行性。在無線網(wǎng)絡環(huán)境驗證中,獲取地理位置信息的秒級反應速度符合移動端軟件界面的交互需求, 運行效率符合實際需求。
五、結(jié)束語
隨著數(shù)字校園的不斷發(fā)展,業(yè)務系統(tǒng)移動化已經(jīng)成為一種趨勢。針對當前移動終端系統(tǒng)與LBS服務相隔絕的問題,本文提出一套基于云計算的Android平臺的校園定位功能實現(xiàn)技術(shù)方案,以實現(xiàn)校內(nèi)移動業(yè)務與LBS的集成應用,為師生提供更為智能靈活和便捷的服務。本文以校園即時消息通信Android客戶端展開實例驗證,實驗結(jié)果證明該技術(shù)方案是合理的、可行的和正確的。此方案還可以與移動迎新、教務考勤、校園訂餐、校車調(diào)度等多種移動業(yè)務結(jié)合。在移動迎新中通過獲取新生位置和校園地圖,為學生指引各步驟需要辦理的具體地點和路線;教務考勤可通過精確獲取學生位置信息,從地理維度提升考勤精確度;校園訂餐可直接提取訂餐人員位置和校園地圖,獲取送餐地點和路線;校車調(diào)度可通過定位技術(shù)實時獲取校車位置,判斷校車到達某一站點的時間,為師生提供合理的乘車方案。如何讓基于云計算的LBS的校園定位技術(shù)與有相關(guān)需求的校園移動應用相結(jié)合,為移動用戶提供更好的用戶體驗,將是我們下一步的研究方向。
參考文獻:
[1]張瑞潔,田原,劉思葉,等.即時通信文本中地理信息提取——以微信為例[J].北京大學學報(自然科學版),2016,52(6):985-989.
[2]Akbar Siddieq,Ida Nurhaida.Mobile application of BTS tower search build upon location based service (LBS)[J].Library Hi Tech News,2019,36(3):1-6.
[3]付宇,王紅.位置隱私保護的虛擬軌跡填充算法[J].計算機應用,2019,39(8):2318-2325.
[4]胡德敏,鄭霞.基于連續(xù)查詢的用戶軌跡k-匿名隱私保護算法[J].計算機應用研究,2017,34(11):3421-3423+3427.
[5]QUALCOMM Incorporated. Patent Issued for Location Based Service (LBS) System, Method And Apparatus For Triggering Of Mobile Station LBS Applications (USPTO 10,237,697)[J].Computers, Networks & Communications,2019.
[6]劉海,李興華,雒彬,等.基于區(qū)塊鏈的分布式K匿名位置隱私保護方案[J].計算機學報,2019,42(5):942-960.
[7]Xiaowen Gong,Xu Chen,Kai Xing,et al. From Social Group Utility Maximization to Personalized Location Privacy in Mobile Networks[J].IEEE/ACM Transactions on Networking (TON),2017,25(3):1703-1716.
[8]張經(jīng)緯.基于時空相關(guān)的移動對象位置匿名方法研究[D].哈爾濱:哈爾濱工程大學,2014.
[9]周傲英,楊彬,金澈清,等.基于位置的服務:架構(gòu)與進展[J].計算機學報,2011,34(7):1155-1171.
[10]柯昌博,吳嘉余,曹彥.面向云計算應用層演化的隱私保護方法研究[J/OL].計算機工程與應用:1-9.http://kns.cnki.net/kcms/detail/11.2127.TP.20190705.1637.030.html.
[11]李亞紅,趙冬玲.半結(jié)構(gòu)化數(shù)據(jù)的形式化描述及數(shù)據(jù)抽取方法研究[J].計算機應用與軟件,2013,30(4):145-148.(編輯:魯利瑞)