基于Android系統(tǒng)的攝像頭安全切換方法
【專利摘要】本發(fā)明提供了一種基于Android系統(tǒng)的攝像頭安全切換方法,該方法為:在前/后置攝像頭與usb攝像頭之間相互切換時(shí),先關(guān)閉當(dāng)前的Camera活動(dòng),再重新啟動(dòng)Camera活動(dòng)并加載切換后攝像頭相關(guān)的硬件抽象層。本發(fā)明實(shí)施例,不僅保留了內(nèi)外置攝像頭與usb攝像頭各自的硬件優(yōu)化特性,而且由于在切換過程中會(huì)重新啟動(dòng)Camera活動(dòng),從而保證了前/后置攝像頭與usb攝像頭之間自由安全地切換,避免了不良現(xiàn)象的發(fā)生。
【專利說明】基于Android系統(tǒng)的攝像頭安全切換方法
[0001]
【技術(shù)領(lǐng)域】
[0002]本發(fā)明涉及攝像頭的切換【技術(shù)領(lǐng)域】,尤其涉及一種基于Android系統(tǒng)的攝像頭安全切換方法。
[0003]
【背景技術(shù)】
[0004]當(dāng)前最常用Android系統(tǒng)基于Linux內(nèi)核,對USB總線接口即插即用和熱插拔的支持非常完善,而且USB接口數(shù)據(jù)傳輸速率快,因此通過USB接口動(dòng)態(tài)連接外圍設(shè)備可提高移動(dòng)平臺(tái)的可擴(kuò)展性和靈活性,增強(qiáng)移動(dòng)平臺(tái)的電源使用效率,滿足數(shù)據(jù)傳輸?shù)膶?shí)時(shí)性。另外人們習(xí)慣通過手機(jī)等移動(dòng)終端以照片或視頻的方式實(shí)時(shí)記錄或共享身邊珍貴的畫面,因此希望移動(dòng)終端能夠?qū)崿F(xiàn)照相機(jī)取景拍照等多媒體應(yīng)用。如果能夠利用USB接口熱插拔和傳輸速率快的優(yōu)點(diǎn),在Android移動(dòng)終端上完成攝像頭取景拍照的實(shí)時(shí)數(shù)據(jù)傳輸,同時(shí)能夠與android系統(tǒng)本身存在的內(nèi)外置攝像頭共存使用,那么將會(huì)給移動(dòng)終端使用者提供優(yōu)秀的用戶體驗(yàn)。然而,當(dāng)前市場上存在的android移動(dòng)設(shè)備基本上不支持內(nèi)外置攝像頭與usb攝像頭的自由切換,即使有實(shí)現(xiàn)的方案也不是非常穩(wěn)定,易造成照相程序崩潰現(xiàn)象,且不能實(shí)現(xiàn)usb攝像頭的一些特殊硬件特性比如硬件拍照按鈕功能的實(shí)現(xiàn)。
[0005]
【發(fā)明內(nèi)容】
[0006]本發(fā)明的目的在于提供一種基于Android系統(tǒng)的攝像頭安全切換方法,實(shí)現(xiàn)內(nèi)外置攝像頭與USB攝像頭的安全切換,避免不穩(wěn)定現(xiàn)象的發(fā)生。
[0007]本發(fā)明的目的是通過以下技術(shù)方案實(shí)現(xiàn)的。
[0008]一種基于Android系統(tǒng)的攝像頭安全切換方法,包括:在前/后置攝像頭與usb攝像頭之間相互切換時(shí),先關(guān)閉當(dāng)前的Camera活動(dòng),再重新啟動(dòng)Camera活動(dòng)并加載切換后攝像頭相關(guān)的硬件抽象層。
[0009]優(yōu)選地,上述方法中,由前/后置攝像頭切換至usb攝像頭的方法具體包括步驟:
實(shí)時(shí)檢測USb攝像頭是否存在,在檢測到USb攝像頭存在時(shí),執(zhí)行下一步;
設(shè)置Usb攝像頭設(shè)備打開標(biāo)記為真,同時(shí)檢查當(dāng)前Camera活動(dòng)是否已啟動(dòng),若已經(jīng)啟動(dòng),貝1J發(fā)出關(guān)閉Camera活動(dòng)的通知。
[0010]關(guān)閉Camera 活動(dòng);
重新啟動(dòng)Camera活動(dòng),同時(shí)加載usb攝像頭相關(guān)的硬件抽象層。
[0011]優(yōu)選地,上述方法中,由USb攝像頭切換至前/后置攝像頭的方法具體包括步驟: 實(shí)時(shí)檢測USb攝像頭是否仍存在,在檢測到USb攝像頭不存在時(shí),執(zhí)行下一步; 設(shè)置usb攝像頭設(shè)備打開標(biāo)記為假,同時(shí)檢查當(dāng)前Camera活動(dòng)是否已啟動(dòng),若已經(jīng)啟動(dòng),貝1J發(fā)出關(guān)閉Camera活動(dòng)的通知。
[0012]關(guān)閉Camera 活動(dòng);
重新啟動(dòng)Camera活動(dòng),并加載前/后置攝像頭相關(guān)的硬件抽象層。
[0013]優(yōu)選地,上述方法還包括:在Android Camera架構(gòu)中的Camera JNI層增設(shè)一用于檢測usb攝像頭是否存在的檢測接口。
[0014]優(yōu)選地,上述方法中,在Android系統(tǒng)服務(wù)進(jìn)程中開啟一線程,通過該線程來定時(shí)調(diào)用所述檢測接口以檢測usb攝像頭是否存在。
[0015]優(yōu)選地,上述方法中,在Android系統(tǒng)的System UI Service服務(wù)進(jìn)程中開啟所述線程。
[0016]優(yōu)選地,上述方法中,所述線程每兩秒鐘調(diào)用一次所述檢測接口以執(zhí)行檢測操作。
[0017]本發(fā)明實(shí)施例與現(xiàn)有技術(shù)相比,本發(fā)明具有以下優(yōu)點(diǎn):
本發(fā)明實(shí)施例,不僅保留了內(nèi)外置攝像頭與usb攝像頭各自的硬件優(yōu)化特性,而且由于在切換過程中會(huì)重新啟動(dòng)Camera活動(dòng),從而保證了前/后置攝像頭與usb攝像頭之間自由安全地切換,避免了不良現(xiàn)象的發(fā)生。
[0018]
【專利附圖】
【附圖說明】
[0019]圖1是本發(fā)明較佳實(shí)施例提供的Android系統(tǒng)的整體架構(gòu)圖;
圖2是本發(fā)明較佳實(shí)施例提供的Android Camera架構(gòu)圖;
圖3是本發(fā)明較佳實(shí)施例提供的由前/后置攝像頭切換至usb攝像頭的方法流程圖; 圖4是本發(fā)明較佳實(shí)施例提供的由usb攝像頭切換至前/后置攝像頭的方法流程圖。
[0020]
【具體實(shí)施方式】
[0021]為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖及實(shí)施例,對本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
[0022]請參閱圖1,Android平臺(tái)的架構(gòu)從上至下包含了五個(gè)部分:應(yīng)用程序(Applicat1n)、應(yīng)用框架(Applicat1n Framework)、開發(fā)庫(Libraries)、運(yùn)行時(shí)環(huán)境(Android Runtime)以及 Linux 內(nèi)核(Linux Kernel)。下面將分別介紹。
[0023]1.應(yīng)用程序(Applicat1n!)
Android將一系列核心應(yīng)用程序包一同發(fā)布,主要包括Launcher、Settings、Camera
坐寸ο
[0024]2.應(yīng)用框架(AppI icat1n Framework)
為了簡化程序組件的重用,便于程序組件的替換,Android設(shè)計(jì)了 API框架,提供了一系列服務(wù)和系統(tǒng),如!Activity manager、Windows manager ;
3.開發(fā)庫(Libraries)
Android包含一套C/C++開發(fā)庫,主要包括:libc、SQLite等。
[0025]4.運(yùn)行時(shí)環(huán)境(Android Runtime)
Android包含一套虛擬機(jī)Dalvik,該虛擬機(jī)為Java應(yīng)用程序提供自己的進(jìn)程空間,其底層依賴于Linux內(nèi)核的一些功能實(shí)現(xiàn),如線程機(jī)制和底層內(nèi)存管理機(jī)制。
[0026]5.Linux 內(nèi)核(Linux Kernel)
Android 內(nèi)核基于 Linux 2.6 內(nèi)核,在此基礎(chǔ)上增加了 Binder (IPC) Driver、PowerDriver等。其中Binder Driver用于上層用戶進(jìn)程間通信的底層實(shí)現(xiàn),如照相機(jī)通過Binder機(jī)制完成進(jìn)程間的通信。
[0027]請參閱圖2所不的Android Camera架構(gòu)。
[0028]在內(nèi)核驅(qū)動(dòng)層(Linux Kernel), Binder Driver為進(jìn)程間通信提供底層共享內(nèi)存的管理接口,而USB接口的攝像頭驅(qū)動(dòng)(USB Camera Driver)針對具體的USB攝像頭設(shè)備提供打開、控制、讀寫等管理操作接口。
[0029]開發(fā)庫(Libraries)主要分為三部分:一是進(jìn)程間通信IPC上層的具體實(shí)現(xiàn)模塊,將調(diào)用底層Binder Driver的管理接口,從而使得服務(wù)端CameraServer與客戶端CameraClient能夠完成依賴調(diào)用以及消息傳遞。二是硬件抽象層HAL,具體包括CameraHardware和V4L2Camera,前者為服務(wù)器端CameraServer提供具體的調(diào)用接口,后者操作USB攝像頭驅(qū)動(dòng)生產(chǎn)的設(shè)備文件,如打開open、控制1ctl、讀寫read/write等。三是動(dòng)態(tài)庫Library為上層提供的JNI接口,便于應(yīng)用框架層的調(diào)用。
【權(quán)利要求】
1.一種基于Android系統(tǒng)的攝像頭安全切換方法,其特征在于,在前/后置攝像頭與usb攝像頭之間相互切換時(shí),先關(guān)閉當(dāng)前的Camera活動(dòng),再重新啟動(dòng)Camera活動(dòng)并加載切換后攝像頭相關(guān)的硬件抽象層。
2.如權(quán)利要求1所述的基于Android系統(tǒng)的攝像頭安全切換方法,其特征在于,該方法中,由前/后置攝像頭切換至usb攝像頭的方法具體包括步驟: 實(shí)時(shí)檢測usb攝像頭是否存在,在檢測到usb攝像頭存在時(shí),執(zhí)行下一步; 設(shè)置usb攝像頭設(shè)備打開標(biāo)記為真,同時(shí)檢查當(dāng)前Camera活動(dòng)是否已啟動(dòng),若已經(jīng)啟動(dòng),貝1J發(fā)出關(guān)閉Camera活動(dòng)的通知; 關(guān)閉Camera活動(dòng); 重新啟動(dòng)Camera活動(dòng),同時(shí)加載usb攝像頭相關(guān)的硬件抽象層。
3.如權(quán)利要求1所述的基于Android系統(tǒng)的攝像頭安全切換方法,其特征在于,該方法中,由usb攝像頭切換至前/后置攝像頭的方法具體包括步驟: 實(shí)時(shí)檢測USb攝像頭是否仍存在,在檢測到USb攝像頭不存在時(shí),執(zhí)行下一步; 設(shè)置Usb攝像頭設(shè)備打開標(biāo)記為假,同時(shí)檢查當(dāng)前Camera活動(dòng)是否已啟動(dòng),若已經(jīng)啟動(dòng),貝1J發(fā)出關(guān)閉Camera活動(dòng)的通知; 關(guān)閉Camera活動(dòng); 重新啟動(dòng)Camera活動(dòng),并加載前/后置攝像頭相關(guān)的硬件抽象層。
4.如權(quán)利要求2或3所述的基于Android系統(tǒng)的攝像頭安全切換方法,其特征在于,該方法還包括:在Android Camera架構(gòu)中的Camera JNI層增設(shè)一用于檢測usb攝像頭是否存在的檢測接口。
5.如權(quán)利要求4所述的基于Android系統(tǒng)的攝像頭安全切換方法,其特征在于,該方法中,在Android系統(tǒng)服務(wù)進(jìn)程中開啟一線程,通過該線程來定時(shí)調(diào)用所述檢測接口以檢測usb攝像頭是否存在。
6.如權(quán)利要求5所述的基于Android系統(tǒng)的攝像頭安全切換方法,其特征在于,該方法中,在Android系統(tǒng)的System UI Service服務(wù)進(jìn)程中開啟所述線程。
7.如權(quán)利要求5所述的基于Android系統(tǒng)的攝像頭安全切換方法,其特征在于,該方法中,所述線程每兩秒鐘調(diào)用一次所述檢測接口以執(zhí)行檢測操作。
【文檔編號】G06F9/445GK104133711SQ201410386477
【公開日】2014年11月5日 申請日期:2014年8月7日 優(yōu)先權(quán)日:2014年8月7日
【發(fā)明者】劉均, 謝飛虹 申請人:深圳市元征科技股份有限公司