Android平臺下支持北斗模塊的方法
【技術領域】
[0001]本發明涉及移動終端技術領域,具體涉及android平臺下支持北斗模塊方法。
【背景技術】
[0002]北斗衛星導航系統是我國自行研制的全球衛星定位與通信系統,可在全球范圍內全天候、全天時為各類用戶提供高精度、高可靠定位、導航、授時服務,并具有短報文通信能力,已經具備區域導航、定位和授時能力,與目前市場上民用比較普遍的GPS相比,北斗衛星導航具有精度更高、功能更豐富及自主產權等特定,是導航應用發展的趨勢。
[0003]Android是一種基于Linux的自由及開放源代碼的操作系統,主要使用于移動設備,如智能手機和平板電腦。Android平臺具有開發性優勢,開發的平臺允許任何移動終端廠商加入到android聯盟中來。
[0004]目前android系統在國內外得到了廣泛的應用,其自身代碼也在飛速的發展以滿足各種硬件設備和業務需求,但是幾乎所有的Android設備的衛星定位芯片都是GPS (Global Posit1ning System,全球定位系統)的,這是為了迎合主流的android廠商提供的驅動為藍本配合的。但是隨著中國北斗衛星導航系統(BeiDou Navigat1nSatellite SyStem-〃BDS〃)越來越趨于完善,覆蓋面和精準度的提高,現在越來越多的終端制造商開始使用北斗導航系統,因為原生的Android系統只有對GPS的導航系統進行了全面支持,而相對新型的北斗導航系統則無法提供全面支持。
【發明內容】
[0005]鑒于上述問題,提出了本發明以便提供一種克服上述問題或者至少部分地解決上述問題的android平臺下支持北斗模塊的方法,來全面支持北斗衛星模塊在移動終端設備上的實現。
[0006]依據本發明的一個方面,提供了 android平臺下支持北斗模塊的方法,所述android 平臺由 Linux Kernel、Android Runtime、Libraries、Applicat1n Framework、Applicat1ns 5部分組成,包括嵌入式處理器和北斗導航芯片,其特征在于,包括以下步驟:
[0007]步驟(I)、由app 發出定位申請 Locat1n Applicat1n ;
[0008]步驟(2)、啟動一個定位服務線程Locat1n Manager Service ;
[0009]步驟(3)、所述線程調用應用框架App Framework中的Locat1n provider服務Android_locat1n_Locat1nManagerProvider_XXX ;
[0010]步驟(4)、調用到JNI中,所述JNI獲得GpsInterface,并且傳給接口一個回調函數的實現 Gpscallbacks gpsLocat1n ;
[0011]步驟(5)、調用Gps 驅動 Gps Driver。
[0012]進一步的,所述步驟(4)通過native方法調用到JNI中。
[0013]進一步的,所述步驟(4)中獲得的GpsInterface由HAL層實現。
[0014]進一步的,在使用北斗定位之前,取得Locat1n Manager的實例。
[0015]更進一步的,所述獲得Locat1nManager的實例的方法是通過getSystemService方法的調用,獲得位置提供者列表。
[0016]更進一步的,所述位置提供者列表包含北斗服務信息。
[0017]更進一步的,所述北斗服務信息包括獲取:Locat1nMananger的getSystemService,獲取最合適的provider的Criteria,注冊監聽器的requestLocat1nUpdates,獲得經諱度表達的地址的Geocoder。
[0018]進一步的,在HAL層的GPS.c驅動中的nmea_reader_parse函數根據NMEA打頭的不同來分別增加判斷語句判定是GPS還是北斗的NMEA協議信息。
[0019]更進一步的,GPS對于NMEA是用GP打頭的衛星信息,北斗是基于BD打頭的NMEA信息。
[0020]為了解決Android系統無法支持北斗衛星模塊的問題,本發明提出了一種在Android系統中修改硬件抽象層的方法,來全面支持北斗衛星模塊在終端設備上的實現,可以隨意運行在支持Android系統的手機、移動終端、或是個人電腦等。
[0021]上述說明僅是本發明技術方案的概述,為了能夠更清楚了解本發明的技術手段,而可依照說明書的內容予以實施,并且為了讓本發明的上述和其它目的、特征和優點能夠更明顯易懂,以下特舉本發明的【具體實施方式】。
【附圖說明】
[0022]通過閱讀下文優選實施方式的詳細描述,各種其他的優點和益處對于本領域普通技術人員將變得清楚明了。說明書附圖僅用于示出優選實施方式的目的,而并不認為是對本發明的限制。顯而易見地,下面描述的附圖僅僅是本發明的一些實施例,對于本領域普通技術人員來講,在不付出創造性勞動的前提下,還可以根據這些附圖獲得其他的附圖。而且在整個附圖中,用相同的參考符號表示相同的部件。在附圖中:
[0023]圖1示出了根據本發明實施例一的android平臺下支持北斗模塊的方法整體框架圖;
[0024]圖2示出了根據本發明實施例二的android平臺下支持北斗模塊的方法流程圖;
[0025]圖3示出了根據本發明實施例三的android平臺下支持北斗模塊的硬件連接圖。
【具體實施方式】
[0026]下面將參照附圖更詳細地描述本公開的示例性實施例。雖然附圖中顯示了本公開的示例性實施例,然而應當理解,可以以各種形式實現本公開而不應被這里闡述的實施例所限制。相反,提供這些實施例是為了能夠更透徹地理解本公開,并且能夠將本公開的范圍完整的傳達給本領域的技術人員。
[0027]需要說明的是,在說明書及權利要求當中使用了某些詞匯來指稱特定組件。本領域技術人員應可以理解,硬件制造商可能會用不同名詞來稱呼同一個組件。本說明書及權利要求并不以名詞的差異來作為區分組件的方式,而是以組件在功能上的差異來作為區分的準則。如在通篇說明書及權利要求當中所提及的“包含”或“包括”為一開放式用語,故應解釋成“包含但不限定于”。說明書后續描述為實施本發明的較佳實施方式,然所述描述乃以說明書的一般原則為目的,并非用以限定本發明的范圍。本發明的保護范圍當視所附權利要求所界定者為準。
[0028]為了解決上述Android系統無法支持北斗衛星模塊的問題,本發明提出了一種在Android系統中修改硬件抽象層的方法,來全面支持北斗衛星模塊在終端設備上的實現,可以隨意運行在支持Android系統的手機、移動終端、或是個人電腦等。該功能的實現主要針對某些行業對北斗衛星導航模塊的使用開發。
[0029]為便于對本發明實施例的理解,下面將結合附圖以幾個具體實施例為例做進一步的解釋說明,且各個附圖并不構成對本發明實施例的限定。
[0030]實施例一、android平臺下支持北斗模塊的方法整體框架。
[0031]下面結合圖1對本實施例一的方法整體框架進行詳細說明。
[0032]圖1為本發明實施例一的android平臺下支持北斗模塊的方法整體框架圖,如圖1所不,本發明實施例的整體框架包括Framework&Applicat1ns 101, Externallibraries&Runtimel02, HAL(Iibhardware)(Hardware Abstract1n Layer,硬件抽象層)103 和 Linux Device Driverl04o
[0033]具體的,一個完整的android系統架構由5部分組成,分別是:Linux Kernel、Android Runtime、Libraries、Applicat1n Framework、Applicat1ns。下面分另丨J簡單介紹各部分。
[0034]Linux Kernel: An droid基于Linux 2.6提供核心系統服務,例如:安全、內存管理、進程管理、網絡堆棧、驅動模型。Linux Kernel也作為硬件和軟件之間的抽象層,它隱藏具體硬件細節而為上層提供統一的服務。
[0035]Android Runtime:Android包含一個核心庫的集合,提供大部分在Java編程語言核心類庫中可用的功能。每一個Android應用程序是Dalvik虛擬機中的實例,運行在他們自己的進程中。
[0036]Libraries: An droid包含一個C/C++庫的集合,供Android系統的各個組件使用。這些功能通過Android的應用程序框架(applicat1n framework)暴露給開發者。一些核心庫如:系統C庫;媒體庫;界面管理;3D庫等等。
[0037]Applicat1n Framework:通過提供開放的開發平臺,Android使開發者能夠編制極其豐富和新穎的應用程序。開發者可以自由地利用設備硬件優勢、訪問位置信息、運行后臺服務、設置鬧鐘、向狀態欄添加通知等等。開發者可以完全使用核心應用程序所使用的框架APIs。應用程序的體系結構旨在簡化組件的重用,任何應用程序都能發布他的功能且任何其他應用程序可以使用這些功能(需要服從框架執行的安全限制)。這一機制允許用戶替換組件。
[0038]Applicat1ns:Android裝配一個核心應用程序集合,包括電子郵件客戶端、SMS程序、日歷、地圖、瀏覽器、聯系人和其他設置。所有應用程序都是用Java編程語言寫的。
[0039]本發明是修改android系統中HAL的Iibgps的代碼庫實現的。所