劉慶喜 陳亮甫 吳登勇 柳玉巧
(山東超越數(shù)控電子有限公司 山東省特種計算機重點實驗室 山東 濟南 250109)
基于安卓系統(tǒng)的北斗中間件設計與實現(xiàn)
劉慶喜 陳亮甫 吳登勇 柳玉巧
(山東超越數(shù)控電子有限公司 山東省特種計算機重點實驗室 山東 濟南 250109)
針對安卓系統(tǒng)北斗應用程序開發(fā)過程需修改安卓源代碼的問題,提出一種基于安卓系統(tǒng)北斗無線電測定業(yè)務中間件的實現(xiàn)方案,用以提高安卓北斗應用程序的開發(fā)效率。北斗應用程序根據提供的中間件接口規(guī)范,進行中間件接口函數(shù)的調用,從而實現(xiàn)安卓移動設備與北斗衛(wèi)星相互通信。以安卓北斗SIM卡基本信息中間件開發(fā)為例,詳細介紹安卓北斗中間件開發(fā)流程,并通過安卓應用程序調用設計的北斗SIM卡基本信息中間件接口函數(shù),獲取SIM卡北斗相關信息,從而驗證安卓北斗中間件設計的有效性。
北斗中間件 北斗無線電測定業(yè)務 安卓系統(tǒng)
安卓系統(tǒng)是基于 Linux開源代碼的操作系統(tǒng)。自推出以來,由于開發(fā)與應用的成本較低、開放程度較高、便于開發(fā)等優(yōu)勢,其在移動設備得到了廣泛的應用。隨著移動設備的使用人員對定位服務的需求大幅提高,安卓系統(tǒng)的很多應用程序都嵌入了衛(wèi)星定位功能[1-3]。
目前,應用最為廣泛的衛(wèi)星定位以及導航是美國研制的第二代衛(wèi)星導航系統(tǒng)GPS。該系統(tǒng)最初研制的目的是對車輛、艦船、飛機、導彈等各種武器進行高精度的定位和導航[4]。雖然GPS已經由軍用發(fā)展到民用、商用等各個方面,但GPS核心技術尚未開放,從而不能對其完全依賴,因此擁有自研的衛(wèi)星導航系統(tǒng)具有重要的意義。北斗系統(tǒng)是由中國自己研制和建設的全球衛(wèi)星定位和導航系統(tǒng),該系統(tǒng)很好地解決了美國GPS系統(tǒng)不能實現(xiàn)短報文通信的缺陷[5-7]。但是由于基于北斗衛(wèi)星定位系統(tǒng)的安卓應用以及可供應用調用的中間件接口相對較少[8-9],設計以及實現(xiàn)安卓系統(tǒng)的北斗定位與導航中間件接口,用于安卓應用程序的調用和開發(fā),具有重要的實際應用價值。
因此,本文基于開源安卓系統(tǒng)和北斗通信協(xié)議,設計以及實現(xiàn)衛(wèi)星無線電測定業(yè)務RDSS(Radio Determination Satellite Server)中間件接口函數(shù),主要包括北斗卡北斗信息、定位信息、指揮機輸出下屬及其監(jiān)聽、口令識別、短報文相互通信、自毀信息等接口,并針對安卓操作系統(tǒng)提供北斗無線電測定業(yè)務接口函數(shù)調用規(guī)范,為移動設備相互通信、北斗卡信息獲取、定位、發(fā)送指揮命令等應用程序的開發(fā)提供便捷的系統(tǒng)底層調用方式。按照本文提供的中間件接口使用規(guī)范,應用程序調用已在安卓系統(tǒng)移植的北斗接口函數(shù),即可實現(xiàn)應用程序所需北斗衛(wèi)星提供的相關服務。
安卓北斗中間件的整體設計主要內容包括RDSS和衛(wèi)星無線電導航RNSS(Radio Navigationg Satellite System)[10-11]。本文主要對RDSS中間件接口的實現(xiàn)進行了設計,并給出相應的接口函數(shù)使用規(guī)范,供安卓系統(tǒng)應用軟件與北斗之間通信二次開發(fā)的調用。RDSS中間件包含北斗RDSS管理類(BDRDSSManager)以及相關功能的監(jiān)聽器。
1.1 北斗中間件開發(fā)環(huán)境和主要功能
本文基于聯(lián)芯手持機設備、安卓操作系統(tǒng)的開源源碼以及Linux安卓編譯環(huán)境進行開發(fā)實現(xiàn)。其中,安卓系統(tǒng)架構圖如圖1所示。
圖1 安卓系統(tǒng)架構圖
北斗中間件開發(fā)主要在Java框架層提供中間件函數(shù)接口和調用規(guī)范,并在用戶空間對發(fā)送給北斗衛(wèi)星的數(shù)據按照北斗協(xié)議進行封裝,封裝之后通過Android系統(tǒng)的設備驅動將數(shù)據傳輸至北斗硬件模塊并進行發(fā)送。接收北斗衛(wèi)星發(fā)送的數(shù)據過程為:平臺北斗硬件模塊接收到北斗信息后,采用回調函數(shù)的方法,通過設備驅動將其傳給用戶空間,用戶空間對接收的北斗數(shù)據進行協(xié)議解析,并通過監(jiān)聽的方法傳輸至中間件接口,中間件函數(shù)同樣通過監(jiān)聽的方法將數(shù)據傳輸至應用層。
安卓北斗中間件RDSS主要功能包括:支持北斗定位與GPS混合定位以及切換方式,提高定位的可用性、可靠性,滿足更高的定位導航要求;支持多種定位監(jiān)聽模式(定位監(jiān)聽、序列號監(jiān)聽、版本信息監(jiān)聽、反饋信息監(jiān)聽、指揮監(jiān)聽等),從而較為全面地支持實際的定位需求;支持短報文功能,能夠使北斗移動設備與北斗衛(wèi)星之間按照北斗協(xié)議進行相互通信,該功能在定位方面有著重要的作用。
1.2 北斗RDSS模塊中間件整體框架設計
北斗RDSS模塊中間件的整體設計主要包括應用層、框架層、中間層、驅動層以及硬件層五部分的設計,如圖2所示。
圖2 北斗RDSS整體機構設計框架圖
應用層的北斗應用程序調用提供的北斗中間件接口函數(shù),實現(xiàn)實際的應用需求;框架層設計主要用于為應用程序提供北斗中間件調用接口;中間層設計主要根據北斗協(xié)議對所需提供的北斗中間件接口進行程序設計,并對于框架層傳輸?shù)慕涌诤瘮?shù)按照北斗發(fā)送協(xié)議進行封裝以及對接收的北斗命令進行解析;驅動層設計主要用于將封裝完畢的北斗命令傳輸至北斗模塊以及接收北斗模塊傳送接收到的北斗命令;硬件層用于傳輸和接收北斗命令。
針對安卓系統(tǒng)的北斗中間件詳細設計,本文以獲取北斗SIM卡基本信息為例進行闡述。首先,應用層SIM卡測試用例程序按照中間件接口函數(shù)說明,調用框架層提供的獲取SIM卡基本信息接口函數(shù)。其次,中間層按照北斗函數(shù)協(xié)議進行封裝,如圖3所示。然后,通過驅動層將封裝的數(shù)據傳輸?shù)接布?,通過北斗中間模塊進行發(fā)送。當北斗衛(wèi)星接收到SIM基本信息查詢請求時,將SIM卡基本信息進行發(fā)送,手持機通過北斗模塊接收到SIM基本信息后,采用回調函數(shù)的方式將收到的信息通過驅動層傳輸?shù)街虚g層。中間層對接收的數(shù)據進行解析,并通過監(jiān)聽的方式,框架層獲得解析的數(shù)據。最后,應用層也采用監(jiān)聽的方式,獲得所需框架層解析的數(shù)據,從而顯示出北斗SIM卡信息。流程圖如圖4所示。
圖3 原數(shù)據包轉換為北斗協(xié)議數(shù)據包示意圖
圖4 北斗中間件接口發(fā)送和接收北斗數(shù)據信息設計流程圖
北斗RDSS包括北斗卡北斗信息、定位信息、指揮機輸出下屬及其監(jiān)聽、口令識別、短報文相互通信、自毀信息等中間件接口函數(shù)在安卓系統(tǒng)的實現(xiàn)方法相似。根據圖2和圖4可進行中間件接口函數(shù)的設計和開發(fā),通過定位、SIM卡基本信息獲取應用程序說明開發(fā)北斗中間件接口的實用性。
3.1 北斗中間件實現(xiàn)方法
下面詳述基于安卓系統(tǒng)北斗中間件開發(fā)與具體實現(xiàn)過程,并以RDSS中間件函數(shù)北斗SIM卡基本信息為例,說明中間件接口函數(shù)程序代碼的實現(xiàn)方式。
3.1.1 框架層北斗中間件實現(xiàn)方式
在安卓系統(tǒng)源碼框架層添加北斗中間件接口,提供可供上層應用調用的北斗RDSS中間件接口函數(shù)以及接口規(guī)范。
北斗中間件SIM卡基本信息接口函數(shù)框架層的程序實現(xiàn)方式如下所示。
public void onCardInfo(CardInfo cardInfo){
//提供北斗SIM基本信息中間件接口
}
3.1.2 中間層北斗中間件實現(xiàn)方式
中間層需要對框架層提供的北斗中間件接口函數(shù)進行具體的實現(xiàn),封裝應用程序需要發(fā)送的北斗命令以及解析接收到的北斗命令,并將解析后所需要的信息通過中間件接口傳送給應用程序。
應用發(fā)送的北斗SIM卡基本信息數(shù)據在中間層按照北斗協(xié)議進行封裝:
//封裝獲取北斗SIM卡信息命令
public int sendAccessCardInfoCmdBDV21(int type, int frameNo){
//根據北斗協(xié)議,封裝發(fā)送的數(shù)據包
}
//監(jiān)聽及解析獲取收到的北斗SIM卡信息命令
public int AnalysisCardInfoBDV21(int type, int frameNo){
//監(jiān)聽和解析北斗SIM卡信息
}
3.1.3 驅動層北斗中間件實現(xiàn)方式
驅動層主要負責將需發(fā)送的北斗命令傳輸至北斗模塊以及將北斗模塊接收到相應的北斗命令傳輸至中間層進行解析。
將封裝完畢的數(shù)據包通過驅動傳輸至安卓源碼HAL層。
static int
android_location_GpsLocationProvider_send_message
(JNIEnv* env, jobject obj, jbyteArray buf, jint len)
{
/*將北斗SIM卡數(shù)據包從JNI層傳輸至HAL層*/
}
將接收到相應的北斗命令傳輸至中間層。
static int
android_location_GpsLocationProvider_ListenAndAnalysis_message (JNIEnv* env, jobject obj, jbyteArray buf, jint len)
{
/*監(jiān)聽以及將北斗SIM卡數(shù)據包傳輸至JNI層*/
}
3.1.4 硬件層北斗中間件實現(xiàn)方式
通過HAL層將數(shù)據發(fā)給北斗衛(wèi)星以及接收北斗衛(wèi)星返回的北斗命令。
static int gps_write_message(char* msg, int len)
{
//發(fā)送和接收北斗數(shù)據至北斗衛(wèi)星
}
3.1.5 應用層調用北斗中間件方式
應用層采用北斗SIM卡信息獲取命令請求和解析北斗衛(wèi)星反饋的SIM卡信息的方式進行說明。
北斗SIM卡基本信息中間件接口用例程序實現(xiàn)如下:
sendZhiHuiCmdBt.setOnClickListener(new View.OnClickListener(){
public void onClick(View v)
{
bdRdss.sendAccessCardInfoCmdBDV21(1, 0);
}
});
通過上述北斗中間件接口函數(shù)的設計和開發(fā)方式,基于聯(lián)芯手持機安卓設備進行北斗SIM卡中間件測試。測試結果如圖5所示。
圖5 北斗SIM卡基本信息發(fā)送數(shù)據圖
接收北斗數(shù)據信息,從圖5可以看出,在應用程序調用RDSS中間件接口函數(shù)發(fā)送北斗SIM基本信息獲取請求時,框架層和JNI層發(fā)送符合北斗協(xié)議的封裝數(shù)據包為CCICA,0,0*4B,從而可以說明開發(fā)的RDSS北斗中間件SIM卡基本信息正常,響應了應用程序的請求。
接收北斗數(shù)據過程的實現(xiàn):接收過程與發(fā)送的實現(xiàn)步驟相似,根據圖4的流程圖在安卓源碼每一層次開發(fā)即可實現(xiàn)。RDSS北斗SIM卡基本信息接收中間件實現(xiàn)后,可得到的接收數(shù)據如圖6所示。
圖6 北斗SIM卡基本信息接收數(shù)據圖
發(fā)送北斗SIM卡基本信息請求后,從圖6可以獲得北斗衛(wèi)星反饋給北斗移動設備的數(shù)據為BDICI,0230098,00000000,0000011,6,60,3,N,0*38。根據北斗接口規(guī)范可知0230098為北斗SIM卡的基本卡號信息。通過對接收的北斗命令解析以及監(jiān)聽的方法,應用程序即可獲得北斗SIM卡的基本信息,從而驗證開發(fā)的中間件的可使用性。
3.2 北斗中間件的應用
北斗地圖定位應用程序根據設計的北斗RDSS中間件接口函數(shù)調用規(guī)范進行調用,顯示的位置信息和北斗模塊SIM卡信息,如圖7所示。
圖7 北斗中間件的實際應用
從圖中可以看到,移動設備SIM卡的基本信息為0230098,當前所在位置區(qū)域的經度為121°27,維度信息為32°14。該應用程序說明北斗應用程序的開發(fā)只需調用提供的北斗中間件接口函數(shù),不需對安卓系統(tǒng)中的源碼做出相應的修改,從而達到提高北斗應用程序開發(fā)效率的目的。
本文主要對安卓操作系統(tǒng)的北斗無線電定位業(yè)務中間件接口進行了研究,詳細闡述了中間價接口設計過程和實現(xiàn)方法。以北斗無線電定位業(yè)務SIM卡基本信息中間件開發(fā)為例:首先,根據中間件的開發(fā)流程和安卓系統(tǒng)的層析關系,設計了SIM卡基本信息中間件開發(fā)步驟;其次,在安卓操作系統(tǒng)上,按照設計步驟,進行中間件的開發(fā);再次,采用應用程序調用SIM卡基本信息中間件接口的方法進行測試,并給出測試結果以及對結果進行分析;最后,根據實際需求開發(fā)的調用北斗中間件應用程序,說明北斗中間件開發(fā)的重要性和實際應用價值。通過本文安卓系統(tǒng)開發(fā)的中間件,應用開發(fā)者只需遵循中間件調用規(guī)范,即可在安卓應用程序中實現(xiàn)北斗定位等相關功能,從而有效地提高安卓移動設備北斗應用開發(fā)的效率。
[1] 曾健平,邵艷潔.Android 系統(tǒng)架構及應用程序開發(fā)研究[J].微計算機信息,2011,27(9):1-3.
[2] 龐國明,隋瑞紅.Andriod平臺GPS系統(tǒng)的應用開發(fā)[J].電腦編程技巧與維護,2013(5):27-30.
[3] 蔣紹林,王金雙.Android安全研究綜述[J].計算機應用與軟件,2012,29(10):205-210.
[4] Alkon R M,Karana H,Sahin M.GPS,GALILEO and GLONASS satellite navigation & GPS modemization[J].Recent Advances in SpaceTechnologies,2005(2):390-394.
[5] 安曉博.北斗/GPS雙模導航終端中導航支撐技術研究[D].重慶:重慶大學,2012.
[6] 姚作新.基于北斗衛(wèi)星短信通信方式的無人值守自動氣象站網[J].氣象科技,2012,40(3):340-344.
[7] 中國衛(wèi)星導航系統(tǒng)管理辦公室.北斗衛(wèi)星導航系統(tǒng)空間信號接口控制文件[Z].2012-12.
[8] 常煜芬,張育平.中間件技術研究[J].計算機應用研究,2001,18(10):21-23.
[9] 黃姝娟,杜承烈,尤濤.中間件技術實時性能的比較[J].計算機工程,2009,35(11):32-34,37.
[10] 北斗衛(wèi)星導航系統(tǒng)官方網站[OL].http://www.beidou.gov.cn/zcfg.html.
[11] 李丹,程耕國.基于Android平臺的移動增強現(xiàn)實的應用與研究[J].計算機應用與軟件,2015,32(1):16-19,23.
THEDESIGNANDIMPLEMENTATIONOFBEIDOUMIDDLEWAREBASEDONANDROIDSYSTEM
Liu Qingxi Chen Liangfu Wu Dengyong Liu Yuqiao
(ShandongChaoyueDigitalControlElectronicsCo.,Ltd.,ShandongSpecialComputerKeyLaboratory,Jinan250109,Shandong,China)
An implementation scheme of Beidou RDSS (Radio Determination Satellite Server) middleware functions based on Android system is proposed, in order to avoid modifying the system source code problem of Beidou application program and improve program development efficiency. When the middleware functions are invoked in the correct way, the application program could be communicated with Beidou satellite. Taking Beidou SIM card basic information middleware development as an example, we detailed the Beidou middleware development process, and through the Andrews application called the design of the Beidou SIM card basic information middleware interface function, accessed to SIM card Beidou related information to verify the effectiveness of Android Beidou middleware design.
Beidou middleware Radio determination satellite server Android system
2016-12-28。劉慶喜,碩士,主研領域:嵌入式系統(tǒng)開發(fā)。陳亮甫,碩士。吳登勇,高工。柳玉巧,碩士。
TP317
A
10.3969/j.issn.1000-386x.2017.12.006