一種基于Android的攝像頭控制方法
【專利摘要】本發(fā)明公開一種基于Android的攝像頭控制方法,其包括:步驟1:建立攝像頭資源分配表、應用程序運行隊列和應用程序等待隊列;所述攝像頭資源分配表的信息包括攝像頭名稱、是否在使用的標志、使用該攝像頭的應用程序名稱以及該應用程序的優(yōu)先級;應用程序運行隊列表示使用攝像頭的應用程序列表,應用程序等待隊列表示等待使用攝像頭的應用程序列表;步驟2:實時更新應用程序運行隊列,如果有需要調用攝像頭的新的應用程序A,則掃描攝像頭資源分配表,判斷是否申請調用成功。本發(fā)明解決了Android系統(tǒng)在多個應用對同一攝像頭存在爭用時的控制管理,避免用戶手動釋放占用攝像頭資源的程序。
【專利說明】—種基于Android的攝像頭控制方法
【技術領域】
[0001]本發(fā)明涉及一種基于Android的攝像頭控制方法,主要用于車載終端設備中攝像頭的控制。
【背景技術】
[0002]在Android的系統(tǒng)中,攝像頭的使用需要用到系統(tǒng)提供的Camera對象進行操作,但是對于同一個攝像頭,Camera對象都是獨占使用,當一個程序打開一個攝像頭之后,如果它不釋放該攝像頭,其它程序是不能使用的。在普通應用場景中,這不會帶來太大的問題,可以通過關閉上一個占用攝像頭的程序的方法來釋放攝像頭。但是,在一些車載終端使用的特殊場合,例如,如果用于拍照和倒車的攝像頭是同一個攝像頭,而且用戶掛倒檔,屏幕切換到倒車程序,但是,如果此時出現(xiàn)緊急情況,需要進行攝像頭監(jiān)控抓拍,就會出現(xiàn)不能抓拍的情況。當然,也可以分別安裝拍照和倒車攝像頭,但是這樣做,一是增加成本,二是某些Android系統(tǒng)版本(例如Android2.3之前的版本)并不支持同時打開兩個攝像頭的方法。
[0003]為此,申請?zhí)枮?01310312262.7的發(fā)明專利,公開了一種Android設備攝像頭使用的控制方法,其方法包括如下內(nèi)容:當應用程序啟動時,讀取預置的配置文件,所述預置的配置文件中配置了所述Android設備中所有需要使用所述攝像頭的應用程序的信息;通過框架層判斷啟動的所述應用程序是否被配置在所述預置的配置文件中;如果啟動的所述應用程序被配置在所述預置的配置文件中,通過所述框架層將所述攝像頭單獨分配給啟動的所述應用程序使用。該發(fā)明使得Android系統(tǒng)上的應用程序在啟動時就讀取預置的配置文件,如果該應用程序被配置在該預置的配置文件中,則通過框架層將攝像頭單獨分配給該應用程序使用,解決多個應用程序同時占用攝像頭時發(fā)生沖突的問題。但是該發(fā)明專利存在如下問題:該發(fā)明專利所述的配置文件的建立和讀取由系統(tǒng)框架層完成,因此需要修改系統(tǒng)框架層,如果不是定制的Android操作系統(tǒng),無法做到修改系統(tǒng)框架層代碼;另外,該發(fā)明專利在攝像頭資源被某一個應用程序占用之后,如果有其它應用程序需要使用攝像頭,僅僅是簡單粗暴的關閉上一個應用程序占用的攝像頭,然后將攝像頭分配給新的應用程序,沒有優(yōu)先級的判斷,這種做法在某些應用場合是不恰當?shù)摹?br>
【發(fā)明內(nèi)容】
[0004]因此,針對上述的問題,本發(fā)明提出一種基于Android的攝像頭控制方法,采用基于靜態(tài)優(yōu)先級的搶占式調度算法,對系統(tǒng)的攝像頭進行統(tǒng)一管理,滿足某些應用場合下,多個應用對同一攝像頭的爭用的特殊要求,并且不需要修改框架層的代碼。
[0005]為了解決上述技術問題,本發(fā)明所采用的思路是,利用Android系統(tǒng)的服務組件,提供一個攝像頭控制服務,其對外提供視頻注冊和注銷接口,同時定義了廣播消息,通過廣播消息對各個應用進行停止、暫停、重新占用攝像頭的操作。攝像頭控制服務在內(nèi)部維護一個攝像頭資源分配表,對攝像頭的使用進行統(tǒng)一管理。資源分配表的各個項包含資源名稱(攝像頭名稱)、是否在使用、使用該資源的程序名稱、程序優(yōu)先級這些信息。在資源分配表中,可以通過資源名稱對資源分配表的各個項進行檢索、修改。在注冊時,需要使用攝像頭的應用程序將注冊信息(包括應用程序名稱、需要使用的資源名稱、應用程序優(yōu)先級)傳入攝像頭控制服務,攝像頭控制服務采用靜態(tài)優(yōu)先級搶占式調度算法為程序分配攝像頭控制權限,如果程序可以獲取控制權,則注冊成功,可以進行攝像頭控制,同時通知其它占用攝像頭的程序釋放資源;如果注冊失敗,則將程序信息推入等待隊列,等待資源爭用。
[0006]具體的,本發(fā)明所采用的技術方案是,一種基于Android的攝像頭控制方法,包括如下步驟:
步驟1:建立攝像頭資源分配表、應用程序運行隊列和應用程序等待隊列;所述攝像頭資源分配表的信息包括攝像頭名稱、是否在使用的標志、使用該攝像頭的應用程序名稱以及該應用程序的優(yōu)先級;應用程序運行隊列表示使用攝像頭的應用程序列表,應用程序等待隊列表示等待使用攝像頭的應用程序列表;
步驟2:實時更新應用程序運行隊列,如果有需要調用攝像頭的新的應用程序A,則根據(jù)應用程序A的相關信息掃描攝像頭資源分配表,該相關信息包括應用程序A的名稱、優(yōu)先級、其申請調用的攝像頭信息;如果該應用程序A申請調用的攝像頭未被占用,則轉到步驟3,如果已經(jīng)被占用,則判斷占用該攝像頭的應用程序B的優(yōu)先級是否高于該應用程序A,如果是,則轉到步驟4,如果不是,則暫停應用程序B,并將該應用程序B的相關信息寫入應用程序等待隊列;
步驟3:修改攝像頭資源分配表,將該應用程序A的相關信息寫入攝像頭資源分配表,使用攝像頭資源;
步驟4:將應用程序A的相關信息寫入應用程序等待隊列。
[0007]進一步的,該攝像頭控制方法還包括注銷應用程序的步驟,該步驟包括如下過程:接收應用程序的注銷請求,獲得該應用程序的相關信息,該相關信息包括應用程序的名稱、優(yōu)先級、其使用的攝像頭信息;修改攝像頭資源分配表,刪除該應用程序的相關信息;同時掃描應用程序等待隊列,根據(jù)優(yōu)先級選擇下一個使用該攝像頭的應用程序,并將該應用程序的相關信息寫入攝像頭資源分配表,同時從應用程序等待隊列里面清除。
[0008]也就是說,應用程序在兩種情況下有機會獲取攝像頭的使用權:1、其它應用程序注銷時;2、該應用程序再次運行(再次注冊)。
[0009]進一步的,所述步驟I中,應用程序等待隊列中的應用程序根據(jù)優(yōu)先級進行排序。首先對應用攝像頭的各應用程序的優(yōu)先級進行預先設置,例如設定優(yōu)先級為1-10等10個級別,值越大表示優(yōu)先級越高;然后將各應用程序順序排列。
[0010]本發(fā)明通過上述方案,與現(xiàn)有技術相比,發(fā)明技術的有益效果是:解決了 Android系統(tǒng)在多個應用對同一攝像頭存在爭用時的控制管理,避免用戶手動釋放占用攝像頭資源的程序,使用戶操作更加方便;提高了系統(tǒng)資源的復用度,避免不同應用場景需要安裝不同攝像頭的情況。
【專利附圖】
【附圖說明】
[0011]圖1為本發(fā)明的系統(tǒng)結構框圖;
圖2為本發(fā)明的攝像頭控制方法中注冊應用程序的流程圖;
圖3為本發(fā)明的注銷應用程序的流程圖?!揪唧w實施方式】
[0012]現(xiàn)結合附圖和【具體實施方式】對本發(fā)明進一步說明。
[0013]圖1是本發(fā)明的基于Android的攝像頭控制方法的系統(tǒng)結構框圖,其包括應用程序單元、攝像頭控制服務單元以及攝像頭單元。
[0014]其中,應用程序單元表示使用系統(tǒng)攝像頭的各個應用程序。
[0015]攝像頭控制服務單元對應用程序單元提供注冊和注銷接口,控制應用程序停止、暫?;蛘咧匦逻\行;對攝像頭資源的使用情況進行記錄,實現(xiàn)攝像頭控制流程。其中應用程序運行隊列保存了系統(tǒng)中已經(jīng)獲得攝像頭資源的應用程序信息(包括應用程序名稱、所占用的攝像頭資源、應用程序優(yōu)先級);應用程序等待隊列保存了因攝像頭資源被占用而暫時不能使用攝像頭資源的應用程序信息(包括應用程序名稱、所申請的攝像頭資源、應用程序優(yōu)先級);攝像頭資源列表記錄了各個攝像頭資源的使用情況。
[0016]攝像頭單元表示系統(tǒng)存在的可供各個應用程序使用的攝像頭資源。
[0017]圖2是本發(fā)明的攝像頭控制方法的處理流程,顯示了應用程序通過攝像頭控制服務進行注冊的整個工作流程,包括如下步驟:
A.增加攝像頭控制服務,包括如下步驟:
Al.初始化系統(tǒng)的攝像頭資源列表,默認系統(tǒng)中各個攝像頭資源處于空閑狀態(tài),可供各個應用程序使用;
A2.初始化應用程序運行隊列,隊列默認為空,表示沒有任何應用程序使用攝像頭;
A3.初始化應用程序等待隊列,隊列默認為空,表示沒有任何應用程序申請攝像頭資
源;
A4.定義系統(tǒng)中各個攝像頭資源名稱,對應用程序的優(yōu)先級進行設置,設定優(yōu)先級為1-10,值越大表示優(yōu)先級越高。
[0018]B.注冊應用程序,申請獲得某個攝像頭資源的使用權,包括如下步驟:
B1.調用攝像頭控制服務提供的注冊接口,將應用程序的相關信息傳入攝像頭控制服務,這些信息包括應用程序名稱、應用程序優(yōu)先級、攝像頭資源名稱;
B2.攝像頭控制服務判斷通過檢索資源分配表,判斷該攝像頭資源是否被占用,如果被占用,轉步驟B3,否則轉步驟B5 ;
B3.攝像頭控制服務判斷當前注冊的應用程序的優(yōu)先級是否高于已經(jīng)占用攝像頭的應用程序的優(yōu)先級,如果優(yōu)先級高,轉步驟B4 ;
B4.攝像頭控制服務發(fā)送廣播通知占用攝像頭資源的應用程序暫停攝像頭資源的使用,將該應用程序推入等待隊列;
B5.攝像頭控制服務修改資源分配表,通知注冊程序,本次注冊成功,可以使用攝像頭資源;
B6.攝像頭控制服務通知注冊程序本次注冊失敗,不能使用該攝像頭,并將該應用程序推入等待隊列。
[0019]圖3顯示了應用程序通過攝像頭控制服務進行注銷的工作流程:
C.注銷應用程序,放棄攝像頭資源的使用,包括如下步驟:
Cl.調用攝像頭服務提供的注銷接口,將應用程序信息傳入攝像頭控制服務,包括應用程序名稱、應用程序優(yōu)先級,攝像頭資源名稱;
C2.攝像頭控制服務修改資源分配表;
C3.攝像頭控制服務判斷等待隊列中的應用程序是否符合運行條件,如果符合,轉步驟
C4;
C4.通知該應用程序可以運行,并修改資源分配表。
[0020]綜上所述,采用本發(fā)明的方法,通過在應用程序和攝像頭硬件之間建立攝像頭控制服務單元,解決了 Android系統(tǒng)在多個應用對同一攝像頭存在爭用時的控制管理,避免用戶手動釋放占用攝像頭資源的程序,使用戶操作更加方便,提高了系統(tǒng)資源的復用度。
[0021]盡管結合優(yōu)選實施方案具體展示和介紹了本發(fā)明,但所屬領域的技術人員應該明白,在不脫離所附權利要求書所限定的本發(fā)明的精神和范圍內(nèi),在形式上和細節(jié)上可以對本發(fā)明做出各種變化,均為本發(fā)明的保護范圍。
【權利要求】
1.一種基于Android的攝像頭控制方法,包括如下步驟: 步驟1:建立攝像頭資源分配表、應用程序運行隊列和應用程序等待隊列;所述攝像頭資源分配表的信息包括攝像頭名稱、是否在使用的標志、使用該攝像頭的應用程序名稱以及該應用程序的優(yōu)先級;應用程序運行隊列表示使用攝像頭的應用程序列表,應用程序等待隊列表示等待使用攝像頭的應用程序列表; 步驟2:實實時更新應用程序運行隊列,如果有需要調用攝像頭的新的應用程序A,則根據(jù)應用程序A的相關信息掃描攝像頭資源分配表,該相關信息包括應用程序A的名稱、優(yōu)先級、其申請調用的攝像頭信息;如果該應用程序A申請調用的攝像頭未被占用,則轉到步驟3,如果已經(jīng)被占用,則判斷占用該攝像頭的應用程序B的優(yōu)先級是否高于該應用程序A,如果是,則轉到步驟4,如果不是,則暫停應用程序B,并將該應用程序B的相關信息寫入應用程序等待隊列; 步驟3:修改攝像頭資源分配表,將該應用程序A的相關信息寫入攝像頭資源分配表,使用攝像頭資源; 步驟4:將應用程序A的相關信息寫入應用程序等待隊列。
2.根據(jù)權利要求1所述的基于Android的攝像頭控制方法,其特征在于:該攝像頭控制方法還包括注銷應用程序的步驟,該步驟包括如下過程:接收應用程序的注銷請求,獲得該應用程序的相關信息,該相關信息包括應用程序的名稱、優(yōu)先級、其使用的攝像頭信息;修改攝像頭資源分配表,刪除該應用程序的相關信息;同時掃描應用程序等待隊列,根據(jù)優(yōu)先級選擇下一個使用該攝像頭的應用程序,并將該應用程序的相關信息寫入攝像頭資源分配表,同時從應用程序等待隊列里面清除。
3.根據(jù)權利要求1所述的基于Android的攝像頭控制方法,其特征在于:所述步驟I中,應用程序等待隊列中的應用程序根據(jù)優(yōu)先級進行排序。
【文檔編號】G06F9/44GK103677848SQ201310734558
【公開日】2014年3月26日 申請日期:2013年12月27日 優(yōu)先權日:2013年12月27日
【發(fā)明者】呂瑞明, 鐘可華, 李琦, 陳義華, 楊磊, 魯林華 申請人:廈門雅迅網(wǎng)絡股份有限公司