基于Android的車載信息娛樂系統(tǒng)構(gòu)架
2.3 進(jìn)程間的通信
Android有兩種進(jìn)程間通信的模型:intent和code綁定。intent類框架提供上層的進(jìn)程間通信,這是最好的方式,可以動態(tài)地利用SDK包進(jìn)行開發(fā),并與上層應(yīng)用程式綁定。intent類包含了幾個用來描述調(diào)用者真正意圖的域,調(diào)用者發(fā)送intent給Android的intent解析器,And-roid系統(tǒng)將通過intent過濾器從所有的應(yīng)用程序中選擇最適合處理該intent的activity類。intent域包含了期望的處理方式、類以及數(shù)據(jù)字符、數(shù)據(jù)的MIME類型。
intent能夠被用來觸發(fā)activities,發(fā)送數(shù)據(jù)給廣播并啟動相應(yīng)的服務(wù)。安全性方面的限制主要通過Android系統(tǒng)提供的權(quán)限框架類來實現(xiàn)。
每個程序運行在自身的進(jìn)程里,但開發(fā)者能夠?qū)懸粋€服務(wù)運行在不同的進(jìn)程中,一些對象在進(jìn)程間傳遞也是允許的。在Android平臺上,一個進(jìn)程通常不能進(jìn)入其他進(jìn)程內(nèi)存。因此,兩個進(jìn)程間如果相互通信,需要把他們的對象分解成操作系統(tǒng)可以識別的基礎(chǔ)類型,并且通過進(jìn)程的邊界來控制對象。附帶SDK的AIDL工具自動生成控制代碼段,AIDL是用來生成在兩個進(jìn)程之間通信代碼的一種接口描述語言。AIDL IPC機制就是使用代理類在客戶端和實現(xiàn)端傳遞參數(shù)。
3 Android應(yīng)用在車載電子的一種架構(gòu)
Android擴展了汽車的總體結(jié)構(gòu),基本架構(gòu)如圖1所示,自定義的Android平臺應(yīng)用在汽車功能模塊和支持組件的一邊。這種擴展的目的是提供一種允許可信任的應(yīng)用程序訪問汽車功能模塊(車輛制動、轉(zhuǎn)向或電力傳動分配)的安全機制,而不可信任的程序被隔離并且不可以訪問。應(yīng)用程序之間的這種強制性的安全策略是源于可靠性要求的IVI系統(tǒng)。通過汽車管理類可信任應(yīng)用程序有機會訪問一些特性(CAN總線),但處理不當(dāng)也可能危及車輛安全(例如通過連續(xù)發(fā)送無效的數(shù)據(jù)幀使得CAN總線帶寬飽和)。這種方案的主要特點是使上層邏輯去耦合,那樣就可以方便上層應(yīng)用獲取并處理來自底層數(shù)據(jù)。
圖一 基本構(gòu)架
3.1 汽車管理模塊
從上圖可知,汽車管理模塊可以看成是負(fù)責(zé)車載應(yīng)用程序與Android底層交互的一個中間類庫,只有通過它,車載應(yīng)用程序才可以獲取相應(yīng)底層數(shù)據(jù)。
它有兩個接口:一個是對應(yīng)于應(yīng)用程序而另一個是對應(yīng)平臺的組件,它是在Android SDK上面開發(fā)的并且擁有平臺認(rèn)證的一款應(yīng)用程序。因為這個管理類不屬于平臺本身,所以用戶在沒有專業(yè)人員幫助時不能自行更新。
3.2 與應(yīng)用程序之間的交互
Android是基于不透明的IPC之間的通信模型。應(yīng)用程序?qū)⑵涔δ芙唤o操作系統(tǒng),在運行時,其他的應(yīng)用程序可以獲得他們的功能?;旧?,平臺提供了后期管理和維護(hù)代碼的能力,這種模型也可以用于在第三方應(yīng)用程序和汽車管理類之間的交互。
汽車管理類處理汽車功能模塊通過屬性android.permission.car.speed.read和android.permission.car.speed.write。對于每一個屬性(例如汽車總線發(fā)送實時速度),Android提供兩種權(quán)限,創(chuàng)建并且指派給管理類。
利用預(yù)先定義的安全級別,它可以指定不同安全級別擁有以下的權(quán)限:
①所有的。任何人可以訪問應(yīng)用程序
②通常情況。訪問是有權(quán)限決定的,但是一些應(yīng)用程序的權(quán)限沒有具體指出權(quán)限人;在程序安裝后,權(quán)限會被手動設(shè)置。
③危險。訪問時有權(quán)限限制的,用戶在安裝時必須有詳盡的安全許可。
④簽名。訪問是有權(quán)限限制的,只要應(yīng)用程序獲得平臺的認(rèn)證,那么權(quán)限就會自動同意。
平臺認(rèn)證就是車載設(shè)計商在開發(fā)設(shè)計過程中使用的簽署平臺。它也用于簽署汽車管理類。如果一個第三方申請了此證書,它就具有完整的控制汽車擴展(事實上汽車管理類只是一個簽署應(yīng)用平臺證書的應(yīng)用程序)。通過以下屬性定義的汽車功能,能夠通過高級別的AIDL接口去訪問:
這種讀/寫的方式允許通過輸入/輸出來訪問屬性的值。通過增加或者刪除監(jiān)聽器的方法來允許注冊或者取消相關(guān)的回調(diào)函數(shù),該通知的屬性值是可以改變的。汽車管理類繼承了此接口。個人的電話是要被Android權(quán)限相關(guān)的屬性核實的,如果來電者是被允許執(zhí)行的,那么汽車管理類進(jìn)程會自動處理,否則就會拋出一個異常。
在開發(fā)應(yīng)用時,開發(fā)者需要知道其屬性名稱以及數(shù)據(jù)的類型才能夠開發(fā)第三方應(yīng)用程序。而且所有的交互發(fā)生在先前的AIDL接口。這就意味著,多虧Android系統(tǒng)的架構(gòu),開發(fā)者并不需要了解整個SDK而是只要知道AIDL文件定義的電話屬性和AIDL文件描述的回調(diào)函數(shù)。而且,如果不同的IVI來自不同的生產(chǎn)商,但有著相同的屬性功能,那么第三方應(yīng)用程序使用這樣的屬性能夠無縫隙地運行在IVI上。
為了證實以上架構(gòu)的實用性,開發(fā)了一塊實現(xiàn)完整功能的工作模塊,由自定義的Android發(fā)布版的概念驗證組成。該模塊已經(jīng)通過Andr-oid模擬器的測試,基于ARM處理器,自定制模式的典型功能和IVI上面的用戶界面,并在有英特爾Atom處理器的上網(wǎng)本上運行。
結(jié)語
本文概述了車載電子系統(tǒng)的相關(guān)知識,并介紹了Google Android系統(tǒng)背景知識;設(shè)計了一個基于Android架構(gòu)的車載電子可擴展平臺,以適應(yīng)個性化汽車發(fā)展的需要。下一步的工作是引導(dǎo)該系統(tǒng)運行在自定義硬件上,并獲取實時的汽車數(shù)據(jù)。
評論