林育曼,潘敏潔,卓偉鵬,饒 浩
(1.韶關(guān)學(xué)院教育技術(shù)系,韶關(guān) 512005;2.韶關(guān)學(xué)院信息科學(xué)與工程學(xué)院,韶關(guān) 512005)
應(yīng)用二維碼的室內(nèi)場(chǎng)館導(dǎo)航應(yīng)用設(shè)計(jì)與實(shí)踐*
林育曼1,潘敏潔2,卓偉鵬2,饒 浩2
(1.韶關(guān)學(xué)院教育技術(shù)系,韶關(guān) 512005;2.韶關(guān)學(xué)院信息科學(xué)與工程學(xué)院,韶關(guān) 512005)
目前手機(jī)導(dǎo)航多數(shù)為用戶提供室外導(dǎo)航服務(wù),手機(jī)導(dǎo)航已成為人們習(xí)以為常的生活習(xí)慣,而大型室內(nèi)場(chǎng)館通常包括多個(gè)區(qū)域,多個(gè)樓層,甚至涉及主樓附樓等多個(gè)建筑群,由于需要專用設(shè)備成本較高,因此,缺乏相應(yīng)的定位及導(dǎo)航服務(wù),通過對(duì)室內(nèi)場(chǎng)館導(dǎo)航和定位需求進(jìn)行分析,分析了應(yīng)用二維碼實(shí)現(xiàn)室內(nèi)導(dǎo)航的原理和可行性,根據(jù)用戶需求分析設(shè)計(jì)了系統(tǒng)主要功能,討論了系統(tǒng)有關(guān)地圖加載、地圖搜索、二維碼掃描定位導(dǎo)航等技術(shù)的實(shí)現(xiàn)方法,最后應(yīng)用結(jié)果表明系統(tǒng)能夠在Android智能手機(jī)運(yùn)行,并正確實(shí)現(xiàn)室內(nèi)場(chǎng)館定位、搜索和導(dǎo)航,且成本更加低廉定位精度也更加精確。
二維碼;室內(nèi)場(chǎng)館;定位;導(dǎo)航
手機(jī)導(dǎo)航已成為人們習(xí)以為常的生活習(xí)慣,目前手機(jī)上普遍存在的地圖應(yīng)用大多數(shù)是為用戶提供室外導(dǎo)航服務(wù),但與人們生活息息相關(guān)的基礎(chǔ)設(shè)施,如大型購(gòu)物中心,地鐵站,機(jī)場(chǎng),醫(yī)院等,卻缺乏相應(yīng)的室內(nèi)導(dǎo)航服務(wù)。盡管室內(nèi)定位需求強(qiáng)烈,但應(yīng)用于室外導(dǎo)航的GPS定位服務(wù)由于在室內(nèi)無法接收GPS信號(hào),導(dǎo)致無法實(shí)現(xiàn)定位[1]。目前室內(nèi)導(dǎo)航和定位的方法主要有基于專用設(shè)備的室內(nèi)定位,基于Wi-Fi信號(hào)測(cè)距,基于Wi-Fi指紋的定位以及地磁場(chǎng)定位等[2],但這些方法需要在室內(nèi)布署相應(yīng)的專用設(shè)備,成本較高,此外定位時(shí)受到無線信息強(qiáng)度及位置指紋訓(xùn)練程度的影響[3]。通過研究應(yīng)用二維碼技術(shù)進(jìn)行大型室內(nèi)場(chǎng)館的室內(nèi)導(dǎo)航,實(shí)現(xiàn)低成本,快速室內(nèi)定位及導(dǎo)航。
大型室內(nèi)場(chǎng)館通常包括多個(gè)區(qū)域,多個(gè)樓層,甚至涉及主樓附樓等多個(gè)建筑群。目前大型室內(nèi)場(chǎng)館商家位置導(dǎo)航的主要方式一是每個(gè)樓層主入口處放置平面地圖,二是提供商場(chǎng)宣傳冊(cè)。對(duì)顧客來說,當(dāng)?shù)竭_(dá)某一大型室內(nèi)場(chǎng)館時(shí),如何快速搜索商場(chǎng)所有建筑物內(nèi)部設(shè)施位置信息以及有關(guān)的屬性介紹,比如美食店鋪、服飾店鋪、家電店鋪、出口、衛(wèi)生間等等;顧客如何快速定位自己所在的位置,并能獲得周邊商家信息、相關(guān)服務(wù)及促銷信息等。
大型室內(nèi)場(chǎng)館的建筑面積日益擴(kuò)大,功能分區(qū)也愈復(fù)雜,而依靠傳統(tǒng)的位置宣傳方式并不能吸引到足夠的顧客,因此商家迫切需要便捷的位置導(dǎo)航及導(dǎo)購(gòu)方式,以吸引到更多的顧客。商家希望顧客在場(chǎng)館內(nèi)能夠清楚知道周邊的商家情況,并能為商家附近的用戶進(jìn)行商家推薦。
要實(shí)現(xiàn)正確的定位和導(dǎo)航,首先必須獲得目標(biāo)準(zhǔn)確的坐標(biāo)位置。二維碼是一種編碼機(jī)制,它是用特定的幾何圖形按一定規(guī)律在平面二維方向上分布的黑白相間的圖形[4],在代碼編制上巧妙地利用構(gòu)成計(jì)算機(jī)內(nèi)部邏輯基礎(chǔ)的“0”、“1”比特流的概念,它把計(jì)算機(jī)的數(shù)據(jù)信息編碼到二維圖像上,也能從編碼的二位圖像中獲取數(shù)據(jù)信息。
二維碼具有以下顯著優(yōu)點(diǎn):高密度編碼,信息容量大;編碼范圍廣泛;容錯(cuò)能力強(qiáng);制作簡(jiǎn)單且成本低廉。因此,方案選擇利用二維碼進(jìn)行室內(nèi)導(dǎo)航坐標(biāo)的定位,該方案不需要額外部署硬件設(shè)備,所增加的費(fèi)用僅是打印二維碼所消耗的油墨成本,商家成本接近于“零成本”。
確定使用二維碼存儲(chǔ)坐標(biāo)位置信息后,要實(shí)現(xiàn)正確的定位與導(dǎo)航,還需要完成室內(nèi)場(chǎng)館地圖的繪制[5]。因此,方案實(shí)現(xiàn)的基本原理包括:(1)測(cè)量現(xiàn)實(shí)室內(nèi)空間的實(shí)際環(huán)境,制作成平面2D的地圖[6];(2)在地圖中標(biāo)注各類建筑物的幾何要素和屬性信息(坐標(biāo)點(diǎn)),在二維碼中儲(chǔ)存特定的坐標(biāo);(3)用戶掃描二維碼后系統(tǒng)做出響應(yīng),解碼二維碼并顯示用戶目前的地理位置。
根據(jù)用戶需求分析,大型室內(nèi)場(chǎng)館導(dǎo)航系統(tǒng)的主要功能設(shè)計(jì)如圖1所示,包括瀏覽地圖、檢索建筑物、導(dǎo)航和掃碼定位當(dāng)前位置[7],具體包括:
(1)地圖瀏覽功能:用戶通過APP瀏覽相應(yīng)商業(yè)場(chǎng)所的樓層分布圖,以及樓層內(nèi)詳細(xì)的建筑物,地圖瀏覽具有縮放和切換視圖功能。
(2)檢索建筑物功能:用戶可以搜索場(chǎng)館內(nèi)的所有建筑物位置信息以及有關(guān)的屬性介紹,比如商家店鋪,出口衛(wèi)生間等等。
(3)室內(nèi)導(dǎo)航功能:用戶進(jìn)入室內(nèi)場(chǎng)所之后如有定位導(dǎo)航的需求,可以通過掃描附近二維碼獲取起始坐標(biāo),在輸入目的位置信息后快速導(dǎo)航[8]。
(4)掃碼定位功能:以實(shí)現(xiàn)雙方碰面會(huì)合指引為例,如用戶雙方約定在大型場(chǎng)館內(nèi)碰面但對(duì)室內(nèi)場(chǎng)所不熟悉,用戶雙方可以通過掃描二維碼顯示當(dāng)前位置信息,推送給對(duì)方,一方可以通過導(dǎo)航功能實(shí)現(xiàn)雙方碰面會(huì)合指引。
圖1 系統(tǒng)主要功能
導(dǎo)航地圖是實(shí)現(xiàn)精確的導(dǎo)航首要因素,因此,首先要實(shí)現(xiàn)導(dǎo)航地圖的正確加載。加載地圖首先需要布局xml文件中添加地圖控件
室內(nèi)地圖的訪問可分為在線訪問和線下訪問,此應(yīng)用采用的是線下訪問的方式,即將地圖下載保存在應(yīng)用當(dāng)中,線下訪問地圖可以用openMapBy-Path(path)方法加載顯示,其中path是離線地圖文件的地圖所在sdcard路徑。
地圖文件成功獲取到之后需要匹配地圖主題文件,通過 loadThemeByPath(FileUtil,s.getDefaultThemePath(this))方法加載即可,核心代碼如下:
為避免再次打開地圖出現(xiàn)異常,地圖銷毀釋放底層資源,不能在Activity的onDestory方法里銷毀地圖,原因是底層資源的銷毀是異步操作,需要在GL線程里面處理,也就是銷毀地圖前必須保證GL線程活著。而onDestroy回調(diào)執(zhí)行時(shí),大多數(shù)情況是此時(shí)GL線程已經(jīng)銷毀,會(huì)導(dǎo)致底層GLView釋放失敗,下次再打開地圖會(huì)出現(xiàn)異常。
用戶在使用地圖功能過程中如果需要查詢場(chǎng)所里具體某個(gè)建筑物位置,可根據(jù)關(guān)鍵字查詢模型和公共設(shè)施信息,用戶輸入關(guān)鍵字信息后,下拉列表就會(huì)顯示包含關(guān)鍵字的建筑物名稱。核心代碼如下:
在實(shí)際的用戶需求過程中,用戶有可能只關(guān)注最終想去的目的地,而不清楚自己目前所處的具體方位,這時(shí),用戶只需要通過手機(jī)掃描身邊的二維碼,獲取自己的所在位置,再輸入終點(diǎn)之后即可實(shí)現(xiàn)路徑規(guī)劃。
蜂鳥SDK提供的基礎(chǔ)控件工具只提供了屏幕觸控點(diǎn)擊尋找起始點(diǎn),因此需要對(duì)其進(jìn)行二次開發(fā)。二次開發(fā)主要完成通過文本輸入的方式獲得起始點(diǎn),以及通過接入二維碼掃描,解析用戶身邊的二維碼圖標(biāo)獲取起始點(diǎn)。
通過二維碼獲取起始點(diǎn)坐標(biāo)信息的技術(shù)思路是:調(diào)用 Zxing.jar庫(kù)(包括核心類包:camera、decoding、encoding、view),實(shí)現(xiàn)手機(jī)攝像頭的掃碼并且解析二維碼內(nèi)存儲(chǔ)的文本數(shù)據(jù)(二維碼中儲(chǔ)存的是建筑物的X軸和Y軸坐標(biāo)信息),并將數(shù)據(jù)傳遞給路徑規(guī)劃的起始點(diǎn)stCoord=new FMMapCoord(X,Y),之后根據(jù)起始點(diǎn)坐標(biāo)和樓層id等信息進(jìn)行路徑規(guī)劃 mNaviAnalyser.analyzeNavi (stGroupId,stCoord,endGroupId,endCoord,**)
首先導(dǎo)入核心包c(diǎn)ore.jar,建立CaptureActivity.java的xml布局文件capture.xml
其次應(yīng)用調(diào)用手機(jī)進(jìn)行掃碼了,識(shí)別二維碼之后把結(jié)果返回給路徑規(guī)劃算法進(jìn)行路徑規(guī)劃,其核心代碼如下:
應(yīng)用二維碼的大型室內(nèi)場(chǎng)館導(dǎo)航應(yīng)用前臺(tái)部分,用戶能夠查看地圖、檢索地圖上的建筑物和進(jìn)行導(dǎo)航操作。由于室內(nèi)建筑可能包含多層,瀏覽地圖提供了分樓層瀏覽地圖的功能,用戶可以逐層瀏覽,同時(shí)地圖可以以2D/3D兩種模式切換瀏覽,圖2所示為2D地圖瀏覽顯示。地圖搜索功能是指對(duì)室內(nèi)進(jìn)行坐標(biāo)標(biāo)記過的建筑進(jìn)行搜索,圖3所示為搜索功能的顯示界面,用戶可通過輸入關(guān)鍵字進(jìn)行目的地的檢索操作。
導(dǎo)航提供了文本框輸入導(dǎo)航和二維碼掃描兩種方式,圖4所示為掃碼定位導(dǎo)航界面,用戶可以通過點(diǎn)擊“掃一掃”圖標(biāo),進(jìn)行二維碼掃描,確定用戶當(dāng)前位置,然后點(diǎn)擊確定地圖上的終點(diǎn)位置,實(shí)現(xiàn)導(dǎo)航服務(wù)。一旦確定起點(diǎn)和終點(diǎn),即可生成導(dǎo)航路線,導(dǎo)航路線還可以以文字描述方式呈現(xiàn)。
圖2 地圖瀏覽顯示
圖3 搜索功能顯示
圖4 二維碼掃描獲取起點(diǎn)導(dǎo)航界面
通過分析應(yīng)用二維碼的大型室內(nèi)場(chǎng)館導(dǎo)航應(yīng)用的實(shí)現(xiàn),重點(diǎn)說明地圖模塊的各種功能控件的加載和二維碼接入的過程。室內(nèi)導(dǎo)航應(yīng)用的設(shè)計(jì)實(shí)現(xiàn)了自由瀏覽地圖、搜索建筑物、二維碼掃描定位和導(dǎo)航路徑等功能。現(xiàn)如今二維碼的使用已經(jīng)十分普及,該室內(nèi)導(dǎo)航應(yīng)用為用戶的導(dǎo)航需求增加另外一種更為貼近用戶使用習(xí)慣的選擇,可以滿足更多用戶的使用需求。
通過接入二維碼掃描確定位置輔助導(dǎo)航的方式相較于其他導(dǎo)航方式而言,成本更加低廉定位精度也更加精確,但也存在不足,即不能夠?qū)崿F(xiàn)實(shí)時(shí)導(dǎo)航,當(dāng)用戶偏離導(dǎo)航規(guī)劃路線時(shí),需要重新進(jìn)行導(dǎo)航路徑規(guī)劃。
[1]陳朝欽,洪少華,李振榮等.基于ZigBee定位的室內(nèi)停車場(chǎng)導(dǎo)航系統(tǒng)[J].現(xiàn)代計(jì)算機(jī)(專業(yè)版),2017,(13):63-66.Chen Chaoqin,Hong Shaohua,Li Zhenrong,et al.Research on Indoor Parking and Navigation System Based on ZigBee[J].Modern Computer,2017,(13):63-66.
[2]顧聰.基于Android平臺(tái)的室內(nèi)LBS系統(tǒng)的研究與實(shí)現(xiàn)[D].湘潭:湘潭大學(xué),2011.Gu Cong.Research and Implementation of Indoor LBS System Based on Android Platform[D].Xiangtan:Xiangtan University,2011.
[3]陳攀.LBS與RFID結(jié)合實(shí)現(xiàn)圖書館室內(nèi)定位導(dǎo)航方法初探[J].現(xiàn)代情報(bào),2016,36(02):114-119.Chen Pan.LBS and RFID Combined to Achieve Indoor Positioning Navigation Methods of Library[J].Journal of Modern Information,2016,36(02):114-119.
[4]王雯霞,劉春麗.二維碼對(duì)基于Beacon的智慧圖書館應(yīng)用的補(bǔ)充研究[J].圖書館學(xué)研究,2017,(05):20-23+51.Wang Wenxia,Liu Chunli.A Supplementary Research on Two-Dimensional Code Application in Intelligent Library Based on Beacon[J].Research on Libary Science,2017,(05):20-23+51.
[5]莊瑩,黃麗娜,鄭恒杰等.二維碼定位技術(shù)支持下的室內(nèi)導(dǎo)航電子地圖的設(shè)計(jì)與實(shí)現(xiàn)--以武漢大學(xué)圖書館為例[J].測(cè)繪通報(bào),2017,(05):125-128+142.Zhuang Ying,Huang Lina,Zheng Hengjie,et al.Design and Development of Indoor Navigation Map Based on QR Code:The Case of Wuhan University Library[J].Bulletin of Surveying and Mapping,2017,(05):125-128+142.
[6]林巍凌.引入導(dǎo)航網(wǎng)格的室內(nèi)路徑規(guī)劃算法[J].測(cè)繪科學(xué),2016,41(02):39-43.Lin Weiling.Indoor Path Planning Algorithm Based on Navigation Mesh[J].Science of Surveying and Mapping,2016,41(02):39-43.
[7]徐彪,蔣朝陽,朱健銘等.智能輪椅室內(nèi)導(dǎo)航路徑規(guī)劃算法[J].計(jì)算機(jī)系統(tǒng)應(yīng)用,2015,24(08):171-175.Xu Biao,Jiang Zhaoyang,Zhu Jianming,et al.Path Planning Algorithm for Smart Wheelchair Indoor Navigation[J].Computer Systems&Applications,2015,24(08):171-175.
[8]吳友寶,徐建閩.基于二維碼和A*算法的室內(nèi)精準(zhǔn)定位導(dǎo)航系統(tǒng)[J].電子設(shè)計(jì)工程,2016,24(23):23-25+28.Wu Youbao,Xu Jianmin.The Indoor Precise Location and Navigation System Based on Two-Dimensional Code and A*Algorithm [J].Electronic Design Engineering,2016,24(23):23-25+28.
Design and Practice of Navigation Applications for Indoor Venues Based on Two-dimensional Code
Lin Yuman1,Pan Minjie2,Zhuo Weipeng2,Rao Hao2
(1.Department of Instructional Technology,Shaoguan University,Shaoguan 512005,China;2.School of Information Science and Engineering,Shaoguan University,Shaoguan 512005,China)
Currently,mobile navigation is mostly used in outdoor services,mobile navigation has become accustomed to people's habits and customs.Large indoor venues usually include a number of areas,multiple floors,and even involving the main building,annex building,and many other buildings.Due to the need for special equipment and higher cost reasons,large indoor venues lack corresponding positioning and navigation services.Navigation and positioning requirements for indoor venues were analyzed.The principle and feasibility of indoor navigation using two-dimensional code were analyzed.The functions of map loading,map searching,scan and location navigation of two-dimensional code were discussed.The results show that the system can run on the Android smart phones,and correctly realize the positioning,search and navigation of indoor venues,and the cost is lower and the positioning accuracy is more accurate.
Two-dimensional code;Indoor venues;Positioning;Navigation
10.3969/j.issn.1002-2279.2017.05.016
TN4
B
1002-2279-(2017)05-0061-04
2017年廣東省攀登計(jì)劃項(xiàng)目,項(xiàng)目編號(hào):pdjh2017b0455
林育曼(1978—),女,廣東潮安人,碩士,副教授,主研方向:教育信息化,信息技術(shù)應(yīng)用。