董露+石磊+胡德正


摘要:針對日益突出的老人兒童監護需求,基于北斗衛星導航系統,將采集到的地理位置信息依據互聯網協議傳輸至網絡。在用戶終端利用安卓系統豐富的APIs,調用百度地圖,設計并實現具有跟蹤功能的手機終端定位系統。測試結果表明,系統能準確定位手機和監控位置,靈活拖拽、縮放地圖,提供便捷的定位服務,為關愛老人兒童工作提供了很好的服務。
關鍵詞:北斗衛星導航系統;安卓;百度地圖;老人兒童關愛;定位跟蹤
DOIDOI:10.11907/rjdk.171339
中圖分類號:TP319
文獻標識碼:A 文章編號:1672-7800(2017)006-0110-03
0 引言
北斗衛星導航系統(BDS)是我國自主研制的全球衛星定位與通信系統[1],通信信號可覆蓋我國全境及周邊地區[2],BDS對亞太地區定位較GPS更加精準,對復雜地形定位準確度高。2015年我國衛星導航與位置服務產業總體產值達1735億元,同比增長29.2%。北斗應用占比進一步提高,市場貢獻率接近20%,北斗兼容應用已經成為國內行業市場的主流方案[3],其應用除了車載外,對老人兒童等特殊群體的關愛也有幫助。
預計到本世紀中葉我國老年人口將達到4.86億[4]。老人兒童在外出時易發生走失,由于他們缺乏冷靜的應對和呼救能力,導致尋人十分困難,能跟蹤老人兒童位置的設備作用凸顯。
目前,老人跟蹤定位系統很多,大多基于GPS系統,未能充分發揮北斗系統的優勢。
本文基于北斗系統,采用Eclipse、百度地圖Android SDK、JDK、ADT等開發工具和包,實現手機定位跟蹤系統開發。軟件設計一個定位主界面和跟蹤按鈕,實現手機實時定位跟蹤老人小孩位置,并在地圖上顯示。
1 系統構架
北斗數據接收模塊接收天線發出的地理位置信息,通過串口連接到PC機,將數據上傳至服務器,用戶客戶端軟件通過Socket獲取位置信息并在安卓手機上通過百度地圖顯示,系統流程如圖1所示。
北斗數據接收模塊采用和芯星通UM220-III N 雙系統高性能GNSS模塊[5]。隨著北斗二代導航定位系統區域導航定位的實現,使用多系統兼容的接收機提供導航定位信息,可以提高接收機的可用性并充分利用在軌衛星提高定位精度[6]。UM220安裝方法如圖2所示。
數據傳輸裝置采用RS232串行接口[7]傳輸線,一端連接UM220,另一端連接服務器,數據傳輸是異步進行的,發送的內容和接收到的內容互不影響,能保證數據傳輸出錯率較低。
軟件部分采用Eclipse編程軟件用Java語言編寫,應用百度地圖API實現手機位置實時顯示以及跟蹤老人小孩位置功能。
2 開發語言及平臺
系統使用Java語言進行編碼開發。Java 技術因其固有的網絡移動、面向對象、平臺無關、安全等諸多特征,迅速成為企業級應用開發的首選技術[8],是安卓[9]智能終端應用開發最常用的編程語言。
Android開發平臺主要由JDK、Eclipse、Android SDK、ADT四部分組成。首先配置Java開發環境,下載JDK并安裝;接下來下載eclipse,雙擊文件夾中的eclipse.exe即可直接啟動;然后下載ADT的壓縮包,并在eclipse中離線安裝此插件;再配置Android SDK,點擊菜單window→preferences,點擊Browse選擇Android SDK解壓目錄[10];最后配置ADV安卓虛擬機,完成開發平臺搭建[11]。
3 系統實現
安卓客戶端軟件通過申請百度地圖API key實時調用百度地圖,完成主界面實時定位功能和跟蹤模塊的設計開發。用戶按下跟蹤按鈕后,客戶端通過Socket獲取北斗地理位置數據,并用地圖清晰地顯示出來。
3.1 申請百度地圖API key
百度地圖 Android SDK是一套基于Android 2.1及以上版本設備的應用程序接口,通過該接口可實現豐富的LBS功能[12-13]。
在使用百度地圖SDK前,必須通過百度賬戶申請百度地圖移動版開發密鑰。申請流程:登陸API控制臺→創建應用→配置應用→獲取安全碼→成功創建KEY。安全碼的組成規則:Android簽名證書的sha1值+packagename[14]。
例如:SHA1:BB:0D:AC:74:D3:21:E1:43:67:71:9B:62:91:AF:A1:66:6E:44:5D:75
包名:com.baidumap.demo
使用eclipse開發時,應用獲取包名packagename是Android應用程序本身在AndroidManifest.xml中定義的名稱。
3.2 主界面設計
3.2.1 主界面布局
主界面總體布局為垂直線性布局,在其左上方加入一個名為“北斗跟蹤”的按鈕Button,具體操作方法為:
在布局文件activity_main.xml里設置button代碼,或者在Graphical Layout里拖拽button至屏幕并按需求修改大小和位置,此時activity_main代碼區會直接顯示出對應的Button代碼,代碼如下:
3.3 跟蹤模塊設計與實現
當用戶點擊“北斗跟蹤”按鈕后,安卓客戶端通過Socket接口與已經獲取的北斗地理數據服務端進行通信,獲取老人小孩所在地理位置數據,并刷新地圖顯示。
3.3.1 Socket通信
在網絡通信中常常把Socket稱作“套接字”,它主要用來描述網絡上一端的IP 地址和端口號,可以理解為是一個數據在網絡上交換的句柄,這個句柄用來實現主機和主機的通信連接[16]。在Java中,基于TCP協議實現網絡通信的類有兩個:客戶端的Socket類和在服務器端的ServerSocket類。ServerSocket類的功能是建立一個Server,并通過accept()方法隨時監聽客戶端的連接請求。使用Socket進行通信過程如下:①在服務器端指定一個等待連接的端口號,在客戶端規定一個主機和端口號,從而在客戶端和服務器端創建Socket/ServerSocket實例[17];②打開連接到Socket的輸入輸出流;③利用輸入輸出流,按照協議對Socket進行讀寫操作;④關閉輸入輸出流和Socket。
3.3.2 跟蹤功能實現
在main activity.java中mainactivity類聲明按鈕變量Button mButton,然后在OnCreat函數中聲明mButton,寫按鈕的點擊函數mButton.setOnClickListener(),按下按鈕后地圖跳轉至北斗模塊所處位置點point處,更新地圖,以圖標形式覆蓋在點上用以指示其位置,可用map.addOverlay方法向地圖添加覆蓋物,具體代碼如下:
4 測試結果
運行手機軟件,定位到當前位置如圖3所示,將UM220模塊放置在武漢大學操場內,獲取到的位置為:latitude=30.534511,longitude = 114.367977,傳入服務器IP為192.168.0.102,在手機上點擊“北斗跟蹤”按鈕,界面切換至模塊所在位置,在地圖上觀察到的位置與初始放置位置相同,完成準確的定位和跟蹤功能,如圖4所示。同時在地圖顯示時可以靈活拖拽并將地圖放大或縮小。
5 結語
本文描述了基于北斗衛星的手機定位跟蹤系統總體構架、開發語言和平臺,介紹了百度地圖API key的申請,根據Android和Baidu Map提供的應用程序編程接口以及Java中的Socket接口,設計并實現了基于北斗衛星的互聯網定位跟蹤系統。以北斗衛星為基礎,借助百度地圖提供的數據地圖服務,為用戶外出時提供定位顯示,跟蹤老人兒童位置,以免發生走失現象,具有較高的實用價值。
參考文獻:
[1]朱建偉,袁國輝.基于北斗衛星導航系統的新一代廣州市空間測繪基準框架構建[J].工程勘察,2017,45(1):59-63.
[2]王春芳,陳永濤,李春來,等.基于北斗衛星的預警信息發布技術研究及實現[J].應用氣象學報,2014,25(3):
375-384.
[3]劉重才.北斗全球組網提速[N].上海證券報,2017-1-10(16).
[4]張向南,汪傳建,蘭貞益.基于Android的老人關愛系統[J].計算機系統應用,2016,25(6):100-105.
[5]和芯星通公司.UM220用戶手冊[EB/OL]. http://www.docin.com/p-557798299.html.
[6]懷洋,邵瓊玲,陸振民.北斗/GPS混合定位模塊UM220應用研究[J].國外電子測量技術,2014,33(3):254-257.
[7]NAYDEN C. Intelligent modular service mobile robot controllable via Internet[J].IFAC Proceedings Volumes,2012,45(10):49-153.
[8]歐鋒.Java技術方案概述[J].計算機系統應用,2012,21(8):236-239.
[9]諸姣.安卓應用系統的功能與權限相關性研究[J].計算機應用與軟件,2014, 31(10):27-33.
[10]馮玉平,王曙光.基于Android 的手機定位軟件[J].計算機與現代化,2015,33(2):11-13.
[11]周麗,黃素珍.神經網絡在洪水預測中的應用研究[J].計算機工程與設計,2007,28(17):4312-4314.
[12]李剛.瘋狂Android講義[M].北京:電子工業出版社,2011.
[13]杜傳明.百度地圖 API 在小型地理信息系統中的應用[J].測繪與空間地理信息,2011,34(2):152-156.
[14]李驍.百度地圖API在Android中的配置和應用[J].計算機光盤軟件與應用,2015,18(2):37-38.
[15]張波,趙雙明.基于安卓平臺的百度地圖開發研究[J].軟件導刊,2015,14(7): 96-98.
[16]王新忠,楊波. 基于SOCKET 的數據傳輸安全技術研究[J].科技廣場,2016, 1(7):72-77.
[17]文顯瓊,張繼榮.基于Socket的網絡編程及其實現[J].軟件導刊,2012,11(2):97-98.
(責任編輯:杜能鋼)