林麗速
摘 要:基于Android系統(tǒng)的智能手機(jī)已得到了廣泛的應(yīng)用,本文進(jìn)行對基于Android平臺的Camera系統(tǒng)核心架構(gòu)進(jìn)行研究與設(shè)計(jì)。文中基于筆者的實(shí)踐經(jīng)驗(yàn),詳細(xì)分析了基于Android平臺的Camera系統(tǒng)功能,闡述了Camera系統(tǒng)的核心架構(gòu),并給出了Android Camera實(shí)現(xiàn)具體功能的設(shè)計(jì)方案。該Camera不僅擁有的高清晰拍照功能,且控制鍵更健全,為開發(fā)和設(shè)計(jì)Camera系統(tǒng)提供了參考。
關(guān)鍵詞:Android;Camera;取景器;服務(wù)器
中圖分類號:TP391.41
Android系統(tǒng)是谷歌公司研究推廣的新一代移動互聯(lián)網(wǎng)操作系統(tǒng),該系統(tǒng)由操作系統(tǒng)、中間件、用戶界面和應(yīng)用軟件組成,已經(jīng)在智能終端領(lǐng)域得到了廣泛的應(yīng)用,尤其是智能手機(jī)應(yīng)用領(lǐng)域,Android系統(tǒng)已經(jīng)在智能手機(jī)領(lǐng)域得到了廣泛的開發(fā)和設(shè)計(jì)[1]。人們在使用智能手機(jī)、ipad等移動智能設(shè)備過程中,可以使用Camera系統(tǒng)進(jìn)行拍照,將照片保存在智能終端硬盤中,也可以發(fā)布到網(wǎng)絡(luò)上,以便與朋友分享。因此,基于Android平臺的Camera系統(tǒng)已經(jīng)成為了許多學(xué)者研究的熱點(diǎn),得到了長足的進(jìn)步。
1 基于Android平臺的Camera功能分析
目前,基于Android平臺的Camera系統(tǒng)主要包括取景器(viewfinder)和拍攝照片兩種關(guān)鍵的功能,已經(jīng)發(fā)布的基于Android平臺的Camera程序?qū)崿F(xiàn)的功能雖然較為簡單,但是其程序架構(gòu)分別包括兩個(gè)關(guān)鍵組成部分,分別是客戶端(Client)和服務(wù)器(Server),是非常完整的,能夠有效確保通信系統(tǒng)的正常運(yùn)行[2]。Camera系統(tǒng)架構(gòu)實(shí)現(xiàn)進(jìn)程之間的通信是依賴于Binder結(jié)構(gòu)的,具體描述如下:當(dāng)基于Android平臺的Camera系統(tǒng)工作運(yùn)行的時(shí)候,可以將工作程序分成兩個(gè)關(guān)鍵組成部分,分別是客戶端(Client)和服務(wù)器(Server),兩者之間的通信可以使用Binder機(jī)制實(shí)現(xiàn),客戶端調(diào)用接口服務(wù)程序,具體的執(zhí)行功能則在服務(wù)器中實(shí)現(xiàn),具體的進(jìn)程之間的通信對于客戶端來講是不可見的[3]。
2 Camera系統(tǒng)核心架構(gòu)分析
目前,基于Android平臺的Camera系統(tǒng)核心架構(gòu)主要分為四個(gè)層次,分別是應(yīng)用層、應(yīng)用框架層、庫層和內(nèi)核層。
2.1 應(yīng)用層
應(yīng)用層是指應(yīng)用程序直面客戶的層次,應(yīng)用程序可以采用Android系統(tǒng)提供的API進(jìn)行編程實(shí)現(xiàn),通常采用Java語言進(jìn)行編程,使用各種源文件,將Java源文件程序和資源文件集成在一起,通過編譯生成一個(gè)完整的APK包。Camera系統(tǒng)在應(yīng)用層上表現(xiàn)為一個(gè)APK包,APK包在拍照功能實(shí)現(xiàn)過程中調(diào)用了應(yīng)用框架層中的API函數(shù),能夠?qū)崿F(xiàn)拍照等邏輯業(yè)務(wù)功能和UI顯示,該功能的實(shí)現(xiàn)文件命名為Camera.java,該文件關(guān)聯(lián)的類是android.hardware.Camera。
2.2 應(yīng)用框架層
應(yīng)用框架層能夠?yàn)閼?yīng)用軟件開發(fā)者提供許多的API,是一個(gè)應(yīng)用程序?qū)崿F(xiàn)的基本框架。在框架內(nèi)部,程序員可以獲取UI界面需要的各種控件,比如使用網(wǎng)格和列表等,都采用必要的接口,提供給外部用戶。Camera系統(tǒng)可以通過應(yīng)用框架層將應(yīng)用和底層硬件實(shí)現(xiàn)邏輯隔離開,基于Android定義實(shí)現(xiàn)一套上下通信的接口,能夠有效地加強(qiáng)應(yīng)用層、底層硬件的開發(fā)和移植。在應(yīng)用框架層,應(yīng)用層可以通過android.hardware.Camera種類調(diào)用軟件服務(wù)功能,同時(shí)可以使用CameraHardwareInterface.h頭文件中包含的硬件服務(wù)接口為下層提供調(diào)用服務(wù)的功能。
2.3 庫層
對于嵌入式軟件系統(tǒng)來講,庫層是一個(gè)非常重要的中間層,也是Android應(yīng)用層與實(shí)際硬件層進(jìn)行通信傳輸?shù)慕涌?,其可以將硬件的行為與功能封裝起來,通過接口提供給應(yīng)用框架層,以便能夠進(jìn)行通信。在Camera系統(tǒng)中,庫層實(shí)際上就是硬件抽象層,用戶空間的驅(qū)動程序代碼就在庫層實(shí)現(xiàn)。庫層的上級層次為應(yīng)用框架層,其為Camera硬件抽象層提供了包括虛函數(shù)的類,作為一個(gè)接口進(jìn)行調(diào)用服務(wù)。
2.4 內(nèi)核層
內(nèi)核層又被稱為操作系統(tǒng)層,內(nèi)核層與硬件直接關(guān)聯(lián),主要能夠?yàn)閼?yīng)用程序、硬件設(shè)備提供邏輯驅(qū)動程序,以便能夠啟動硬件。為了更好地服務(wù)移動終端系統(tǒng),在Linux內(nèi)核上進(jìn)行很大的改進(jìn)和優(yōu)化。在基于Android平臺的Camera系統(tǒng)中,其通常采用具體的驅(qū)動規(guī)范,可以將Camera基本物理功能提供給硬件抽象層,供其進(jìn)行調(diào)用。Camera系統(tǒng)的主要功能包含了圖像視頻數(shù)據(jù)的采集、轉(zhuǎn)換圖像的格式、縮放圖像和傳輸數(shù)據(jù)
3 具體功能實(shí)現(xiàn)設(shè)計(jì)
針對以上的分析來設(shè)計(jì)Android Camera的實(shí)現(xiàn)方案,圖1給出了preview和拍照時(shí)的數(shù)據(jù)流設(shè)計(jì)方案,圖2給出了視頻錄制時(shí)數(shù)據(jù)流設(shè)計(jì)方案。數(shù)據(jù)都是從java層送到Camera Service,并在HAL層準(zhǔn)備好組件,最后送到Driver層解析。Preview與拍照時(shí)的數(shù)據(jù)流類似,視頻錄制時(shí)則需要考慮緩存數(shù)據(jù)。圖中Preview data、Capture Image data、Recoding data指出了數(shù)據(jù)從上層到下層的流向。
由圖1和圖2給出的Android Camera的設(shè)計(jì)方案設(shè)計(jì)出的Camera不僅擁有的高清晰拍照功能,且控制鍵更健全,為開發(fā)和設(shè)計(jì)Camera系統(tǒng)提供了參考。
4 結(jié)束語
本文分析了基于Android平臺的Camera系統(tǒng)能夠?qū)崿F(xiàn)取景、拍照、保存和上傳等核心功能的實(shí)現(xiàn)技術(shù),同時(shí)總結(jié)了Camera系統(tǒng)通常采用的核心架構(gòu),并給出了具體功能實(shí)現(xiàn)的設(shè)計(jì)方案,以便為系統(tǒng)設(shè)計(jì)和開發(fā)做出貢獻(xiàn)。
參考文獻(xiàn):
[1]胡江楠,劉高平.Android中Camera類庫分析及其典型應(yīng)用[J].浙江萬里學(xué)院學(xué)報(bào),2014(01):11-12.
[2]胡偉.Android系統(tǒng)架構(gòu)及其驅(qū)動研究[J].廣州廣播電視大學(xué)學(xué)報(bào),2010(04):96-101.
[3]張仕成.基于Google Android平臺的應(yīng)用程序開發(fā)與研究[J].電腦知識與技術(shù),2009(28):24-25.
作者單位:福州大學(xué)物理與信息工程學(xué)院,福州 350108