周 峰
(蘇州工業職業技術學院,江蘇 蘇州 215104)
基于Android智能手機平臺的GPS開發
周 峰
(蘇州工業職業技術學院,江蘇 蘇州 215104)
通過對Android智能手機平臺架構,在Android的智能手機平臺上,集成了GPS的硬件模塊,實現了GPS的數據通信,GPS的數據解析,以及實現Google地圖的用戶界面,對GPS數據通信層,以及網絡編程應用,給出了整體解決方案。
Android;全球定位系統;導航
隨著移動通訊產業的發展,手機的生產和使用量有了大幅的提高。如何進一步提升手機的應用價值、開發新的功能,已成為手機發展的熱點。當前,手機GPS已在個人導航定位方面發揮了巨大作用,除此以外,它在工程測量、設施搜索、定位監控、緊急援助等方面也有很大的發展空間。Android是一款全新的智能手機操作系統,它開放性好、功能擴展性強,能很好地支持基于定位的應用程序開發。
整個Android平臺分為四部分,它們分別是:核心應用程序、應用程序框架和組件、Java運行環境、Linux內核。
Android附帶了一些核心應用程序,包括E-mail客戶端程序、短信程序、日歷、地圖、瀏覽器和通訊錄等。所有的Android應用程序都用Java語言進行開發。
Android應用程序的開發是基于程序框架和組件的,開發人員擁有同核心應用程序一樣的API訪問權限。
所有Android程序都有各自的進程,這些進程運行在Dalvik虛擬機上。Dalvik虛擬機將所有可執行文件轉化為.dex格式,實現了內存優化。
Android依賴于Linux 2.6提供的系統服務,包括安全、內存管理、進程管理、網絡棧和驅動模型等。
AGPS,即輔助GPS(AGPS)將GPS與無線手機組合在一起,利用輔助GPS進行定位,傳輸一些輔助數據,這樣可以大大縮小代碼搜索窗口和頻率搜索窗口,使得定位時間降至幾秒鐘。輔助GPS是網絡輔助GPS,與獨立的GPS相比,以網絡為核心的方法能夠提供更快的首次鎖定位置的時間TTFF,它使用固定位置GPS接收機獲得移動終端的補充信息數據,輔助數據使移動用戶接收機不必譯碼實際消息就可以進行定時測量。定位原理圖如圖1所示:

圖1 AGPS定位原理圖
其工作流程是:
(1)AGPS手機首先將本身的基站地址通過網絡傳輸到位置服務器;
(2)位置服務器根據該手機的大概位置傳輸與該位置相關的GPS輔助信息(包含GPS的星歷和方位俯仰角等)到手機;
(3)該手機的AGPS模塊根據輔助信息(以提升GPS信號的第一鎖定時間TTFF能力)接收GPS原始信號;
(4)位置服務器根據傳來的GPS偽距信息和來自其他定位設備(如差分GPS基準站等)的輔助信息完成對GPS信息的處理,并估算該手機的位置;位置服務器將該手機的位置通過網絡傳輸到定位網關或應用平臺。
(1)搜索衛星
AGPS定位仍然是基于GPS的,因此定位的首要步驟還是先搜索到當前地區的可用GPS衛星,AGPS通過網絡直接下載當前地區的可用衛星信息,提高了搜星速度。同時也減小了設備的電量消耗。

圖2 AGPS定位搜索基本流程
如圖2所示,AGPS中從定位啟動到GPS接收器找到可用衛星的基本流程如下:
1)設備從蜂窩基站獲取到當前所在的小區位置;
2)設備通過蜂窩網絡將當前蜂窩小區位置傳送給網絡中的AGPS位置服務器;
3)APGS位置服務器根據當前小區位置查詢該區域當前可用的衛星信息(包括衛星的頻段、方位、仰角等相關信息),并返回給設備;
4)GPS接收器根據得到的可用衛星信息,可以快速找到當前可用的GPS衛星。至此,GPS接收器已經可正常接收GPS信號,GPS初始化過程結束。AGPS對定位速度的提高就主要體現在此過程中。
(2)計算位置
GPS接收器一旦找到四顆以上的可用衛星,就可以開始接收衛星信號實現定位。接下來的過程根據位置計算所在端的不同,通常有兩種方案:在移動設備端進行計算的MS-Based方式和在網絡端進行計算的MS-Assisted方式。
MS-Based方式中,接下來過程與傳統GPS定位完全相同,GPS接收器接收原始GPS信號,解調并進行一定處理,根據處理后的信息進行位置計算,得到最終的位置坐標。
在此過程中可以看到,在使用MS-Assisted方式時,由于輔助定位信息的加入,可以取得更高的定位精度;同時,可以很大程度上克服弱GPS信號情況下的無法定位或精度降低的問題;將復雜計算轉移到網絡端,也可以很大程度上減小設備的電量消耗。
HAL(hardware abstraction layer 硬件抽象層)存在的目的在于讓android framework與linux device driver分離開來。上層應用通過Dalvik VM(Android虛擬機)與core services(如sensor service,camera service等)來加載動態庫文件(*.so),這里的so文件指的是HAL的實現,core service通過JNI接口調用HAL層提供的接口,這樣就實現了android 應用程序對硬件的操作。
HAL實現仍然是以加載動態鏈接庫的方式來與 linux device driver通信,不過libhardware屏蔽了具體的加載細節,每種應用以HAL stub的概念呈現給JNI層,一個HAL stub編譯成一個動態鏈接庫文件. 移植一個新的HAL實現需要開發人員編寫 HAL module(stub),上層應用通過libhardware獲取HAL module的一系列回調函數(callback ops),這一系列回調函數直接與底層的linux device driver通信(一般是通過讀寫設備文件來實現的)。
GPS 的 HAL 實現主要工作就是填充一個 GpsInterface結構,android應用啟動 LOCATION_SERVICE時,將檢測系統是否支持GPS應用,若支持GPS,則在JNI層初始化GPS設備時將返回一個 GpsInterface結構,然后通過JNI層的回調函數將GPS信息發送給framework層,調用過程如圖3所示:
GpsInterface->Init初始化當前GPS,當用戶點擊GPS APP開始從而調用GpsInterface->Start后,啟用讀線程通過epoll檢測GPS設備文件的狀態,若收到數據則讀取NEMA數據,將數據解析后,根據解析后的數據填充 GpsStatus,GpsLocation和GpsSvInfo結構,然后調用相應的JNI層在Init時傳進來的回調函數,service部分的代碼將自動更新GPS信息。

圖3 JNI層回調函數調用過程
本文在Android操作系統的智能于機上實現了GPS的應用開發,利用終端各功能模塊的整合,配合相應的軟件驅動,完成指定的功能,如對定位信息進行數據處理,計算所在位置的經度,緯度,海拔,速度和時間等。
GPS系統具有全天候、全球覆蓋、三維定速、定時、高精度、快速、省時、高效率、應用廣泛、多功能等特點,因此可廣泛應用于陸地、海洋以及航空航天等各種環境下。而實時的Google Map地圖的使用,更能直觀地將豐富的城市地圖、全國的公路網圖、等地理信息同步地在智能手機上顯示出來,方便使用者(不僅僅是汽車駕駛員)進行查詢參考,這是以后Android GPS應用開發的重要發展方向。
[1] 黃智偉.GPS接收機電路設計[M].國防工業出版社, 2005.6.
[2] 魯郁.GPS全球定位接收機--原理與軟件實現[M].電子工業出版社,2009.6.
[3] 吳亞峰.Android編程典型實例與項目開發[M].電子工業出版社,2011.10.
GPS development of intelligent mobile phone platform Based on the Android
Through intelligent mobile phone platform structure for the Android, integrated with GPS hardware module, the GPS data communication, GPS data analysis, as well as the realization of Google map user interface were realized. For GPS data communication layer, as well as network programming application, the overall solution were given.
Android; Global positioning system; Navigation
TP216
A
1008-1151(2012)09-0031-02
2012-08-16
周峰(1979-),蘇州工業職業技術學院教師,從事電子、電路的教學和研究。