王小平 黃博
摘要:基站天線的工程參數(shù)影響著基站的覆蓋范圍,是網(wǎng)絡優(yōu)化的關鍵參數(shù)。對基站進行定期巡查是維護基站工程參數(shù)正常的必要舉措,但從代維公司反饋的作業(yè)計劃中發(fā)現(xiàn)有存在謊報巡查站點的情況。針對這一問題,本文基于Android系統(tǒng),利用智能手機終端,在基站天線工程參數(shù)測量系統(tǒng)中,設計和實現(xiàn)了當前GPS定位信息展示,行走方位角度指示,巡查位置坐標實時記錄,以及利用地圖進行巡查路線回放等功能。在方便巡查人員出行的同時,管理人員可以通過路線回放來判斷代維巡查人員是否到站,從而可以有效避免謊報巡查站點的行為。該功能經(jīng)測試效果良好,為基站天線維護工作提供了有力的幫助。
關鍵詞:基站天線;路線記錄;Android;GPS定位Design and Implementation
of the route-replay function in base-station inspect
Wang XiaopingWang JianyongYang Xun(Chongqing City Management College,401331)
Abstract:The common engineering parameters of base stations antenna are important in network optimization and they impact the coverage of the base stations. It is very necessary to inspect the base stations periodically for maintain the normal condition, but it was found some non-reported acts of patrol stations from the feedback work. Concerning this issue, we designed some function in the base station system based Android to help us see the location of us, indicate the azimuth angles, real-time recording the location and show the trails by maps. In this way, inspection staff can have a more convenient patrol, and on the other hand, the administrator can judge whether the patrol works have reached the station though their route, thus it can prevent non-reported acts of patrol efficiently. The function has achieved the expected effect, and it can provide a powerful help for the maintenance work of base stations.
Key words:base stations antenna;route-recording;Android;GPS location1引言
基站天線的工程參數(shù)包括經(jīng)緯度、海拔高度、掛高、方位角、機械下傾角等等,這些都是基站維護、網(wǎng)絡優(yōu)化中的重要參數(shù)。在運營商集團加強了對資源資產(chǎn)的管理后,對天線相關工程參數(shù)的要求更加嚴格。代維日常工作的一部分內(nèi)容就是對天線的工程參數(shù)進行采集和記錄,一般要求代維管理每個月必須完成一定數(shù)量的基站巡查,現(xiàn)有的檢測方法是代維管理人員上站抽查并與巡查記錄進行比對,發(fā)現(xiàn)問題后上報,由于這種方式工作量大,效率極低,導致從代維公司反饋的作業(yè)計劃中經(jīng)常會發(fā)現(xiàn)存在謊報巡查站點的情況,進而無法及時掌握基站天線實測參數(shù)等諸多問題,非常不利于基站的管理維護工作。
針對上述問題,迫切需要一種集成度高、便于攜帶的基站信息管理軟件,使維護人員從繁雜、重復的工作中解放出來,不僅能完成基站工程參數(shù)的測量,還能夠?qū)ψ陨淼墓ぷ鬟M行有效地監(jiān)督。Android智能手機終端的出現(xiàn)為這一問題的解決提供了契機。Android智能終端設備中有內(nèi)置GPS模塊,利用第三方的定位接口中與位置service相關的類,就可以用利用這些服務獲得定位API[1~3],方便獲取到移動終端的位置信息(如經(jīng)緯度數(shù)據(jù)、海拔高度),獲得經(jīng)緯度數(shù)據(jù)后在地圖上直接標注,就可以實現(xiàn)基站巡檢的路線回放,清楚直觀地重現(xiàn)代維人員的巡查路線的歷史記錄,從而判斷出代維工作人員在規(guī)定時間里是否真正到站。同時,Android傳感器接口可以獲得移動終端的方位信息(如方位角、旋轉(zhuǎn)角、下傾角),利用這一功能實現(xiàn)的指南針功能也為巡查人員的出行提供了便利[3]。
2研究基礎
2.1 Android系統(tǒng)平臺研究
Android平臺由操作系統(tǒng)、中間件、用戶界面和應用軟件組成,平臺的核心是Linux內(nèi)核,它負責設備驅(qū)動程序、資源訪問、電源管理和完成其他操作系統(tǒng)的職責。提供的設備驅(qū)動程序包括顯示器、照相器、鍵盤、WiFi、閃存、音頻和IPC(Inter-Process Communication,進程間通信)[4,5]。Android java API的主要庫包括電話、資源、位置、UI、ContentProvider(數(shù)據(jù))和包管理器(安裝、安全等)。程序員使用此Java API開發(fā)最終用戶應用程序。
2.2 Android傳感器劃分
Android設備通常內(nèi)置了硬件傳感器,Android也提供了一個框架來使用這些傳感器,傳
感器將來自真實世界的數(shù)據(jù)提供給應用程序。用戶可以通過傳感器數(shù)據(jù)來實現(xiàn)控制游戲進度或者開發(fā)出供于真實世界的有用工具等。Android設備中可能出現(xiàn)的一些傳感器類型包括:光線傳感器、溫度傳感器、陀螺儀傳感器、方向傳感器、重力傳感器等等。本文中方位指示(指南針)功能的實現(xiàn)即利用了Sensor Manager中與方位傳感器有關的函數(shù)方法來實現(xiàn)。
2.3 高德地圖接口開發(fā)
高德地圖Android API是一套簡單的地圖應用開發(fā)調(diào)用接口,可支持地圖顯示與操作,興趣點搜索,地理編碼,離線地圖等功能;開發(fā)者可以輕松地將其嵌入自己的應用程序,而且提供穩(wěn)定的位置及地圖應用程序,穩(wěn)定性也是本文使用高德地圖而不是Google Maps進行開發(fā)的一個主要原因。目前Android應用市場中很多基于位置的服務(Location Based Service,LBS)是利用Google Maps接口開發(fā)[6]。在獲取高德地圖服務時,需要開發(fā)者注冊AMap賬戶,獲取API KEY。
3功能架構(gòu)
完整的Android終端的基站管理系統(tǒng)的設計主要分為五個子模塊:方位指示功能模塊,巡查路線記錄和回放功能模塊,基站基本工程參數(shù)測量模塊,發(fā)送數(shù)據(jù)子模塊,天氣預報等輔助功能模塊。本文在這里主要探討和研究與代維巡查相關的方位指示和路線記錄回放功能的實現(xiàn)。指南針模塊與巡查路線回放功能的層次結(jié)構(gòu)圖如圖1所示。
指南針模塊是通過對Android手機底層硬件接口,從傳感器探頭上獲得數(shù)據(jù)包,將這些數(shù)據(jù)進行處理后用來控制指南針圖片的旋轉(zhuǎn)以達到方位指示的效果。巡檢路線模塊主要包括后臺運行模塊、文件分級展示模塊和地圖顯示模塊,這三個模塊的功能分別是記錄位置點、位置點文件的分級顯示和路線在地圖的顯示。
4功能實現(xiàn)
4.1 指南針功能
在Android的SDK文檔中顯示系統(tǒng)可以支持多種傳感器。要實現(xiàn)指南針的功能,需要使用到方位傳感器(AK8973 orientation sensor)。Android提供的API對于不同傳感器使用是同一個接口,這樣有利于功能的開發(fā)。注冊傳感器的方法代碼為:mSensorManager.registerListener(this,mSensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION),SensorManager.SENSOR_DELAY_GAME)。其中,第一個參數(shù)表示監(jiān)聽的對象(this),第二個參數(shù)設置感應事件,第三個參數(shù)設置設置感應事件的頻率,有四種頻率模式可選,每個頻率相差0.04s。注冊完傳感器之后,利用onSensorChanged來讀取傳感器的具體數(shù)據(jù)。利用方位傳感器可以獲取到極方位角(azimuth),傾斜角(pitch)以及旋轉(zhuǎn)角(roll)。程序中指南針的功能只需要利用SensorEvent獲取極方位角數(shù)據(jù),然后當極方位角發(fā)生偏移,讓對應的圖片向相反的轉(zhuǎn)過同樣的角度就能實現(xiàn)指南針圖形移動的效果。
4.2 位置點記錄
要實現(xiàn)代維巡查路線的回放功能,需要對代維人員的行走位置進行記錄。本文利用的是高德地圖的定位API來實現(xiàn)坐標記錄功能。首先需要通過getInstance()方法獲得實例化LocationManagerProxy對象并注冊位置更新。注冊位置更新的方法代碼為:mAMapLocManager.requestLocationUpdates(LocationManagerProxy.GPS_PROVIDER,10000,0,this)。其中第一個參數(shù)表示選著的定位方式,不同的枚舉值對應不同的定位方式。第二個參數(shù)是時間(單位為毫秒,設置的值不能少于5000),第三個是參數(shù)是距離(單位為米),第四個是監(jiān)聽的對象。高德地圖提供了幾種定位方式,包括GPS、WiFi、基站定位等幾種定位方式,表1列出了兩種定位方式的差異(數(shù)據(jù)來源于實際測試)。
表1兩種定位方式的比較
GPS定位 網(wǎng)絡定位
定位精/m 10~100 200~1500
定位用時/min 0.5~3 0.3~1
耗電情況 比較耗電 一般
定位局限 室內(nèi)無法定位 室內(nèi)室外均可
由表1可知,GPS定位適合精度要求比較高的情況下使用,不適合在室內(nèi)使用,而相較與GPS定位,網(wǎng)絡定位定位速度比較快,但是精度比較差,適合對定位精度要求不太高的情況下使用。而本文中由于需要準備記錄代維人員的行程,故對精度有較高的要求,選用GPS定位方式。巡檢位置點的記錄簡單流程如圖2所示。
由如圖1的流程圖可以看出,整個位置記錄是在后臺Service中實現(xiàn),這是考慮到位置記錄是一個比較耗時的過程,如果在Activity中記錄數(shù)據(jù),雖然可以使用保持屏幕長亮來避免因系統(tǒng)休眠使Acitivity終止導致路線記錄終止,但是這樣又會帶來耗電性更加嚴重的問題,而利用Service能很好解決這個問題,后臺定位是否開啟標志service_start_flag用來控制Service的狀態(tài)。在開啟定位Service之前,如果SD卡正常,會在SD卡中創(chuàng)建相應的存儲目錄,如StationData/lineFiles目錄用來存儲記錄的路線信息文件。開始定位后,記錄下開始的時間,用來在結(jié)束定位的時候生成以該時間命名的文件名并將該時間值插入SqLite數(shù)據(jù)庫。由于經(jīng)實際測試requestLocationUpdates方法中第二個參數(shù)(時間參數(shù))并不一定有效,即定時機制不起作用,所以本文中利用了開啟子線程并利用handler.postDelayed()方法來實現(xiàn)坐標的定時記錄,同時利用Handler更新TextView控件信息,這些控件用來顯示當前的出行速度,位置點更新的時間以及當前的經(jīng)緯度坐標等信息。獲得經(jīng)緯度數(shù)據(jù)之后,利用高德地圖API中的Geocoder.getFromLocation()方法經(jīng)過逆地理編碼可以由獲得用戶所在的位置的詳細信息。結(jié)束定位時,在最開始創(chuàng)建的目錄下生成路線記錄文件(txt文本格式),將ArrayList
4.3 路線回放功能的實現(xiàn)
4.3.1 路線數(shù)據(jù)的分級列表
在實際的巡查過程中,必然會存在多個時間段多個位置點記錄數(shù)據(jù)文件,為獲得較好的用戶體驗,需要能夠?qū)@些不同維度的數(shù)據(jù)進行分級展示。本文是采用了ExpandableListView(類似于可擴展的ListView)組件對SD卡中已有的路線文件進行分級展示,ExpandableListView可以顯示兩個條目,采取的做法是在一級條目中顯示哪一天的記錄,二級條目顯示對應這一天的所有時刻的已記錄文件。實現(xiàn)過程如流程圖3所示。
如圖3所示,在跳轉(zhuǎn)到路線顯示的Activity之后,首先會利用Cursor對數(shù)據(jù)表CREAT_TIME進行遍歷,該表存儲了所有的已記錄的路線文件對應創(chuàng)建的時間,并將該表中的數(shù)據(jù)存入定義的容器my_dateList數(shù)據(jù)集中。由于一天中可能有多條記錄,如my_dateList可能存在2013-08-26 13:49:32、2013-08-27 16:27:30、2013-08-27 09:59:45和2013-08-27 12:06:55時刻的數(shù)據(jù)文件,在需要獲取到有哪些天的數(shù)據(jù)時,需要對數(shù)據(jù)進行去重,從而能夠得到2013-08-26和2013-08-27這兩天有數(shù)據(jù)記錄的信息,并將這些數(shù)據(jù)存在自定義的容器數(shù)據(jù)集中item_dayList中,item_dayList中的數(shù)據(jù)將作為ExpandableListView的一級條目的數(shù)據(jù)。通過兩層嵌套循環(huán)遍歷(外層item_dayList,內(nèi)層my_dateList)可以得到每個一級條目對應的二級條目的數(shù)據(jù)。采用通過繼承BaseExpandableListAdapter實現(xiàn)的自定義ExpandAdper將數(shù)據(jù)填充到ExpandableListView組件中,并分別為一級條目和二級條目生成一個View,最終實現(xiàn)了路線文件的分級顯示的效果。
4.3.2 路線回放與地圖視圖截取
實現(xiàn)了記錄文件信息的分級顯示之后,要實現(xiàn)路線回放功能,需要能夠讀取出每個ExpandableListView中二級條目對應文件中的位置點數(shù)據(jù),并在地圖上加以展示。本文采用的做法是利用方法onChildClick()對ExpandableListView子條目進行點擊事件監(jiān)聽,在按鈕的監(jiān)聽方法中實現(xiàn)路線數(shù)據(jù)的刪除、路線數(shù)據(jù)的讀取以及路線數(shù)據(jù)在地圖上的展示功能。點擊子條目以后,可以選擇對應的操作。刪除操作是在用戶選擇“刪除”功能后,從數(shù)據(jù)庫CREAT_TIME表中刪除該子條目對應的時刻以及SD卡中的該時刻對應的文本文件;路線數(shù)據(jù)的提取是讀取出SD卡中的路線數(shù)據(jù)后,在ListView中顯示該文本文件中所有的位置記錄點;路線的回放功能是利用高德地圖提供的API實現(xiàn),具體做法是采用高德提供的AMap類來展示地圖的視圖,利用PolyLineOptions描繪路線線段,描繪的過程即由點連成線的過程,這些點即路線記錄文件中的位置點,通過Timer類的定時間機制來實現(xiàn)動態(tài)連線的效果,繪制完成后,通過AMap.addPolyline()方法將描繪的線段添加在地圖上,AMap.moveCamera()方法中傳入當前路線線段的中間點坐標,就能夠?qū)崿F(xiàn)當路線線段添加到地圖中之后,當前地圖視圖顯示描繪的路線。
地圖視圖的截取功能是利用onMapPrint()方法獲取當前屏幕視圖,并進行截圖保存,圖片保存在SD目錄StationData/MapFiles之中,以當前的時刻命名,方便用戶以后瀏覽查看。
5功能展示
在如上所述的環(huán)境、設計和開發(fā)方法實現(xiàn)的基站巡檢路線回放以及指南針功能,其功能實現(xiàn)描述如下所述。
⑴基于Android終端傳感器開發(fā)的指南針功能的實現(xiàn),如圖4所示。界面中的指南針圖片隨著角度的變化會旋轉(zhuǎn),圖片上的TextView組件顯示當前的方位信息。
⑵位置信息顯示,如圖4中白線下方的組件所示。顯示當前行走速度、定位精度、定位時間以及用戶所在經(jīng)緯度。紅色字體的顯示的詳細位置信息是采用逆地理編碼而得到的。
⑶所有時刻記錄的路線列表,如果5所示。由圖2可以看到由2013-08-24到2013-09-02天所記錄的路線,并顯示出了每天的記錄條數(shù)以及展開信息。
⑷路線記錄文件中的位置點信息,如圖6所示。該圖展示了從SD卡目錄文件中記錄的路線文件中的位置點坐標以及每一點所記錄的時間。
⑸基站巡檢路線回放功能即利用高德地圖進行路線展示的實現(xiàn)如圖7所示。地圖中灰色的粗線表示的即為行走的路線,采用的是衛(wèi)星視圖的效果來顯示。
6結(jié)論
基站的管理和維護工作對提升網(wǎng)絡指標意義重大,定期對基站設備進行巡檢是維護基站設備的正常運轉(zhuǎn)的必要舉措,因此有效的避免巡檢工作中的謊報行為十分重要。本文設計和實現(xiàn)的基站巡檢路線回放功能能夠?qū)救藛T的行走位置點進行記錄、顯示和地圖展示,從而使管理人員通過路線就可以判斷代維人員曾經(jīng)是否真正到站,這樣可以避免很多工作上的懈怠行為,同時簡單的指南針功能也為工作人員的出行帶來了諸多便利。在越來越追求集團管理完善的今天以及智能手機終端的越來越快速地普及和推廣,這些功能的實現(xiàn)對運營商的運營有著非常實際的意義。
[參考文獻]
[1]徐光俠,封雷,涂演,等.基于Android和Google Maps的生活輔助系統(tǒng)的設計和實現(xiàn)[J].重慶郵電大學學報(自然科學版),2012(2):244.
[2]農(nóng)麗萍,王力虎,黃一平.Android在嵌入式車載導航系統(tǒng)的應用研究[J].計算機工程與設計,2011,31(11):2474-2475.
[3]劉暢.一種基于Android平臺的EPG實現(xiàn)及優(yōu)化[J].電視技術2013,37(21):74-75.
[4]楊越(譯).精通Android3[M].北京:人民郵電出版社,2011:715-716.
[5]E2EClou工作室深入淺出Google Android[M].北京人民郵電出版社, 2009:102-137.
[6]楊豐盛.Android應用開發(fā)揭秘[J].北京:機械工業(yè)出版社,2010:4-10.
[7]廖軍,郭達.移動互聯(lián)網(wǎng)應用趨勢——基于Web的終端平[J].信息通信技術,2004,19(2):420-423.
[8]劉正,陳強.基于Android的GPS應用中的研究與開發(fā).中國西部科技,2011,09(32):15-16.