android系統(tǒng)外接攝像頭的分辨率獲取方法及裝置制造方法
【專(zhuān)利摘要】本發(fā)明公開(kāi)了android系統(tǒng)外接攝像頭的分辨率獲取方法及裝置,通過(guò)視頻驅(qū)動(dòng)層獲取外接攝像頭所有支持的分辨率,將外接攝像頭所有支持的分辨率轉(zhuǎn)換為包含分辨率信息的字符串列表;調(diào)用所述字符串列表,并將字符串列表寫(xiě)入android系統(tǒng)的相機(jī)應(yīng)用屬性中;根據(jù)android系統(tǒng)相機(jī)應(yīng)用的預(yù)覽界面的尺寸和外接攝像頭所有支持的分辨率進(jìn)行匹配計(jì)算,選擇最匹配的分辨率作為預(yù)覽界面的分辨率;使得android系統(tǒng)的相機(jī)應(yīng)用可以對(duì)不同外接攝像頭所支持分辨率進(jìn)行顯示,使得外接攝像頭的分辨率能更好的匹配該android系統(tǒng)終端的顯示屏幕,提高了android系統(tǒng)對(duì)外接攝像頭的兼容性,大大提高了顯示效果。
【專(zhuān)利說(shuō)明】android系統(tǒng)外接攝像頭的分辨率獲取方法及裝置
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及移動(dòng)終端設(shè)備,尤其涉及的是一種android系統(tǒng)外接攝像頭的分辨率獲取方法及裝置。
【背景技術(shù)】
[0002]隨著移動(dòng)終端特別是3G智能手機(jī)的普及,在移動(dòng)終端上集成了許多應(yīng)用,譬如上網(wǎng)功能、相機(jī)功能及攝像機(jī)功能等等。以采用android系統(tǒng)的終端為例,在android系統(tǒng)上面,相機(jī)應(yīng)用已經(jīng)變的越來(lái)越流行,由于android系統(tǒng)的局限性,在使用攝像頭的時(shí)候,系統(tǒng)本身并不能根據(jù)所插入攝像頭所支持的分辨率來(lái)動(dòng)態(tài)更新,只能支持固定的分辨率。當(dāng)插入不同攝像頭的時(shí)候,應(yīng)用層也不能獲得當(dāng)前插入攝像頭所提供支持的分辨率列表?,F(xiàn)有技術(shù)是若底層檢測(cè)到有攝像頭這樣的外設(shè)插入時(shí),會(huì)提供多個(gè)固定的分辨率來(lái)判斷該攝像頭所支持的分辨率是否在固定值中,如果在,則能正常使用,如果不在,則會(huì)存在問(wèn)題,例如花屏或黑屏等。并且由于android系統(tǒng)的相機(jī)應(yīng)用的預(yù)覽屏幕的尺寸不同,導(dǎo)致外界攝像頭的分辨率與預(yù)覽屏幕不一定適配,很可能使得顯示效果不好,失真嚴(yán)重。
[0003]因此,現(xiàn)有技術(shù)還有待于改進(jìn)和發(fā)展。
【發(fā)明內(nèi)容】
[0004]本發(fā)明要解決的技術(shù)問(wèn)題在于,針對(duì)現(xiàn)有技術(shù)的上述缺陷,提供一種android系統(tǒng)外接攝像頭的分辨率獲取方法及裝置,旨在解決現(xiàn)有的android系統(tǒng)外接攝像頭時(shí)無(wú)法根據(jù)外接攝像頭的分辨率來(lái)動(dòng)態(tài)更新,只能支持固定分辨率,以及外界攝像頭的分辨率與android系統(tǒng)的相機(jī)應(yīng)用的預(yù)覽屏幕不匹配的問(wèn)題。
[0005]本發(fā)明解決技術(shù)問(wèn)題所采用的技術(shù)方案如下:
一種android系統(tǒng)外接攝像頭的分辨率獲取方法,其中,包括以下步驟:
A、通過(guò)視頻驅(qū)動(dòng)層獲取外接攝像頭所有支持的分辨率;
B、將外接攝像頭所有支持的分辨率轉(zhuǎn)換為包含分辨率信息的字符串列表;
C、調(diào)用所述字符串列表,并將字符串列表寫(xiě)入android系統(tǒng)的相機(jī)應(yīng)用屬性中;
D、根據(jù)android系統(tǒng)相機(jī)應(yīng)用的預(yù)覽界面的尺寸和外接攝像頭所有支持的分辨率進(jìn)行匹配計(jì)算,選擇最匹配的分辨率作為預(yù)覽界面的分辨率。
[0006]所述的android系統(tǒng)外接攝像頭的分辨率獲取方法,其中,所述步驟D具體包括: D1、計(jì)算每一個(gè)所述外接攝像頭所支持的分辨率的寬高比值與所述預(yù)覽界面的寬高比
值的差值,當(dāng)所述差值在預(yù)定置信區(qū)間內(nèi)時(shí),將對(duì)應(yīng)的分辨率保留;當(dāng)所述差值不在預(yù)定置信區(qū)間內(nèi)時(shí),將對(duì)應(yīng)的分辨率刪除;
D2、自動(dòng)調(diào)整預(yù)覽界面的分辨率,使預(yù)覽界面的分辨率為保留的分辨率。
[0007]所述的android系統(tǒng)外接攝像頭的分辨率獲取方法,其中,所述步驟A還包括:
Al、當(dāng)無(wú)法獲取外接攝像頭所支持的分辨率時(shí),設(shè)置默認(rèn)支持的分辨率為640*480。
[0008]所述的android系統(tǒng)外接攝像頭的分辨率獲取方法,其中,所述步驟B具體包括: B1、將所述分辨率的整型寬width和高h(yuǎn)eight分別轉(zhuǎn)換為相應(yīng)的字符串,用X作為連接符號(hào),以width X height格式存儲(chǔ),形成一相應(yīng)的字符串列表。
[0009]一種android系統(tǒng)外接攝像頭的分辨率獲取裝置,其中,包括:
分辨率獲取模塊,用于通過(guò)視頻驅(qū)動(dòng)層獲取外接攝像頭所有支持的分辨率;
轉(zhuǎn)換及存儲(chǔ)模塊,用于將外接攝像頭所有支持的分辨率轉(zhuǎn)換為包含分辨率信息的字符串列表;
寫(xiě)入模塊,用于調(diào)用所述字符串列表,并將字符串列表寫(xiě)入android系統(tǒng)的相機(jī)應(yīng)用屬性中;
分辨率匹配模塊,用于根據(jù)android系統(tǒng)相機(jī)應(yīng)用的預(yù)覽界面的尺寸和外接攝像頭所有支持的分辨率進(jìn)行匹配計(jì)算,選擇最匹配的分辨率作為預(yù)覽界面的分辨率。
[0010]所述的android系統(tǒng)外接攝像頭的分辨率獲取裝置,其中,所述分辨率選擇模塊包括:
計(jì)算單元,用于計(jì)算每一個(gè)所述外接攝像頭所支持的分辨率的寬高比值與所述預(yù)覽界面的寬高比值的差值,當(dāng)所述差值在預(yù)定置信區(qū)間內(nèi)時(shí),將對(duì)應(yīng)的分辨率保留;當(dāng)所述差值不在預(yù)定置信區(qū)間內(nèi)時(shí),將對(duì)應(yīng)的分辨率刪除;
分辨率調(diào)整單元,用于自動(dòng)調(diào)整預(yù)覽界面的分辨率,使預(yù)覽界面的分辨率為保留的分辨率。
[0011]所述的android系統(tǒng)外接攝像頭的分辨率獲取裝置,其中,所述轉(zhuǎn)換及存儲(chǔ)模塊用于將所述分辨率的整型寬width和高h(yuǎn)eight分別轉(zhuǎn)換為相應(yīng)的字符串,用X作為連接符號(hào),以width X height格式存儲(chǔ),形成一相應(yīng)的字符串列表。
[0012]所述的android系統(tǒng)外接攝像頭的分辨率獲取裝置,其中,所述分辨率獲取模塊還用于在無(wú)法獲取外接攝像頭所支持的分辨率時(shí),設(shè)置默認(rèn)支持的分辨率為640*480。
[0013]本發(fā)明所提供的android系統(tǒng)外接攝像頭的分辨率獲取方法及裝置,有效地解決了現(xiàn)有的android系統(tǒng)在使用外接攝像頭的時(shí)候,不能根據(jù)所插入攝像頭所支持的分辨率來(lái)動(dòng)態(tài)更新,只能支持固定的分辨率,及當(dāng)插入不同攝像頭的時(shí)候,也不能獲得當(dāng)前插入攝像頭所提供支持的分辨率列表,以及外界攝像頭的分辨率與android系統(tǒng)的相機(jī)應(yīng)用的預(yù)覽屏幕不匹配的問(wèn)題,所述方法通過(guò)視頻驅(qū)動(dòng)層獲取外接攝像頭所有支持的分辨率;將外接攝像頭所有支持的分辨率轉(zhuǎn)換為包含分辨率信息的字符串列表;調(diào)用所述字符串列表,并將字符串列表寫(xiě)入android系統(tǒng)的相機(jī)應(yīng)用屬性中;根據(jù)android系統(tǒng)相機(jī)應(yīng)用的預(yù)覽界面的尺寸和外接攝像頭所有支持的分辨率進(jìn)行匹配計(jì)算,選擇最匹配的分辨率作為預(yù)覽界面的分辨率,使得android系統(tǒng)的相機(jī)應(yīng)用可以對(duì)不同外接攝像頭所支持分辨率進(jìn)行顯示,使得相機(jī)應(yīng)用可以使用最高分辨率顯示畫(huà)面,使得在使用外接攝像頭獲得的視頻數(shù)據(jù)在拉伸過(guò)程中不會(huì)出現(xiàn)很大的失真效果,使得外接攝像頭的分辨率能更好的匹配該android系統(tǒng)終端的顯示屏幕,提高了 android系統(tǒng)對(duì)外接攝像頭的兼容性,大大提高了顯示效果,方便了用戶(hù)的使用。
【專(zhuān)利附圖】
【附圖說(shuō)明】
[0014]圖1為本發(fā)明提供的android系統(tǒng)外接攝像頭的分辨率獲取方法較佳實(shí)施例的流程圖。[0015]圖2為本發(fā)明提供的android系統(tǒng)外接攝像頭的分辨率獲取裝置較佳實(shí)施例的結(jié)構(gòu)框圖。
【具體實(shí)施方式】
[0016]本發(fā)明提供一種android系統(tǒng)外接攝像頭的分辨率獲取方法及裝置,為使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚、明確,以下參照附圖并舉實(shí)施例對(duì)本發(fā)明進(jìn)一步詳細(xì)說(shuō)明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
[0017]請(qǐng)參閱圖1,圖1為本發(fā)明提供的android系統(tǒng)外接攝像頭的分辨率獲取方法較佳實(shí)施例的流程圖,如圖所示,所述android系統(tǒng)外接攝像頭的分辨率獲取方法包括以下步驟:
步驟S100、通過(guò)視頻驅(qū)動(dòng)層獲取外接攝像頭所有支持的分辨率;
步驟S200、將外接攝像頭所有支持的分辨率轉(zhuǎn)換為包含分辨率信息的字符串列表; 步驟S300、調(diào)用所述字符串列表,并將字符串列表寫(xiě)入android系統(tǒng)的相機(jī)應(yīng)用屬性
中;
步驟S400、根據(jù)android系統(tǒng)相機(jī)應(yīng)用的預(yù)覽界面的尺寸和外接攝像頭所有支持的分辨率進(jìn)行匹配計(jì)算,選擇最匹配的分辨率作為預(yù)覽界面的分辨率。
[0018]下面結(jié)合具體的實(shí)施例對(duì)上述步驟進(jìn)行詳細(xì)的描述。
[0019]所述android系統(tǒng)一般應(yīng)用于終端,特別是移動(dòng)終端中,所述移動(dòng)終端包括手機(jī)、相機(jī)或平板電腦等。在步驟S100中,通過(guò)視頻驅(qū)動(dòng)層的1/0接口控制命令獲得外接攝像頭所有所支持的分辨率。具體來(lái)說(shuō),通過(guò)修改android系統(tǒng)的視頻驅(qū)動(dòng)層代碼,也就是在視頻驅(qū)動(dòng)模塊中增加代碼,通過(guò)ioctl (對(duì)設(shè)備的1/0通道進(jìn)行管理的函數(shù))和內(nèi)核進(jìn)行交互獲得android系統(tǒng)所插入的攝像頭所有支持的視頻分辨率。
[0020]在實(shí)際應(yīng)用時(shí),在相機(jī)應(yīng)用的視頻驅(qū)動(dòng)模塊,添加一個(gè)getPixelFormat (char*pResolutionList)函數(shù),該函數(shù)是用來(lái)獲得插入的攝像頭等硬件設(shè)備所有支持的分辨率,該函數(shù)中傳遞一個(gè)參數(shù)pResolutionList,該參數(shù)pResolutionList是用來(lái)存儲(chǔ)獲得分辨率列表。getPixelFormat函數(shù)通過(guò)視頻驅(qū)動(dòng)層的標(biāo)準(zhǔn)1/0接口命令ioctl (fd, VID10C_ENUM_FRAMESIZES, &fsize)函數(shù)來(lái)獲得外接攝像頭等硬件設(shè)備所支持的分辨率數(shù)值。該函數(shù)中fsize參數(shù)用來(lái)存儲(chǔ)分辨率。分辨率的寬width和高h(yuǎn)eight分別保存在fsize.discrete, width, fsize.discrete, height 中。
[0021]在步驟S200中,將所述分辨率轉(zhuǎn)換為相應(yīng)的包含分辨率信息的字符串,將外接攝像頭所有支持的分辨率轉(zhuǎn)換為包含分辨率信息的字符串列表,并存儲(chǔ)。具體來(lái)說(shuō),先把從視頻驅(qū)動(dòng)層獲得的分辨率的整形寬width值從高位到低位轉(zhuǎn)換成字符存在字符串列表中,計(jì)算完成寬Width之后用X作為連接符號(hào),然后用相同的方法把分辨率的高h(yuǎn)eight也轉(zhuǎn)換成為相應(yīng)的字符串形式,從而形成一相應(yīng)的包含分辨率信息的字符串列表并存儲(chǔ)。這樣可以大大提高從底層,也就是視頻驅(qū)動(dòng)層,獲得外接攝像頭所支持分辨率的效率,并且便于應(yīng)用層可以更方便更好的讀取這些數(shù)據(jù)。
[0022]優(yōu)選地,所述步驟S200具體包括:將所述分辨率的整型寬width和高h(yuǎn)eight分別轉(zhuǎn)換為相應(yīng)的字符串,用X作為連接符號(hào),以width X height格式存儲(chǔ),形成一相應(yīng)的字符串列表。在實(shí)際應(yīng)用時(shí),在相機(jī)應(yīng)用的視頻驅(qū)動(dòng)模塊,添加一個(gè)get_resolution_string (int width, int height, char* resolution)函數(shù),該函數(shù)傳遞三個(gè)參數(shù),width和height是傳遞進(jìn)來(lái)獲得的視頻分辨率的寬和高參數(shù),resolution是一個(gè)字符指針。該函數(shù)的作用是把整型的分辨率的寬width和高h(yuǎn)eight數(shù)值轉(zhuǎn)換成字符存儲(chǔ)到resolution指針中。具體來(lái)說(shuō),get_resolution_string 函數(shù)把 width 和 height 轉(zhuǎn)換成 width x height格式的字符串譬如(1280 X 720)存儲(chǔ)到resolution中,由于需要把整型寬width和高h(yuǎn)eight轉(zhuǎn)換成字符串形式,因此需要使用如下方法進(jìn)行轉(zhuǎn)化:
首先判斷分辨率的寬width和高h(yuǎn)eight所處于的區(qū)間范圍,區(qū)間由(10n,10n+1],n>0, 然后初始化一個(gè)index=0 ;
首先把width轉(zhuǎn)換插入到resolution字符串里面,
【權(quán)利要求】
1.一種android系統(tǒng)外接攝像頭的分辨率獲取方法,其特征在于,包括以下步驟: A、通過(guò)視頻驅(qū)動(dòng)層獲取外接攝像頭所有支持的分辨率; B、將外接攝像頭所有支持的分辨率轉(zhuǎn)換為包含分辨率信息的字符串列表; C、調(diào)用所述字符串列表,并將字符串列表寫(xiě)入android系統(tǒng)的相機(jī)應(yīng)用屬性中; D、根據(jù)android系統(tǒng)相機(jī)應(yīng)用的預(yù)覽界面的尺寸和外接攝像頭所有支持的分辨率進(jìn)行匹配計(jì)算,選擇最匹配的分辨率作為預(yù)覽界面的分辨率。
2.根據(jù)權(quán)利要求1所述的android系統(tǒng)外接攝像頭的分辨率獲取方法,其特征在于,所述步驟D具體包括: D1、計(jì)算每一個(gè)所述外接攝像頭所支持的分辨率的寬高比值與所述預(yù)覽界面的寬高比值的差值,當(dāng)所述差值在預(yù)定置信區(qū)間內(nèi)時(shí),將對(duì)應(yīng)的分辨率保留;當(dāng)所述差值不在預(yù)定置信區(qū)間內(nèi)時(shí),將對(duì)應(yīng)的分辨率刪除; D2、自動(dòng)調(diào)整預(yù)覽界面的分辨率,使預(yù)覽界面的分辨率為保留的分辨率。
3.根據(jù)權(quán)利要求1所述的android系統(tǒng)外接攝像頭的分辨率獲取方法,其特征在于,所述步驟A還包括: Al、當(dāng)無(wú)法獲取外接攝像頭所支持的分辨率時(shí),設(shè)置默認(rèn)支持的分辨率為640*480。
4.根據(jù)權(quán)利要求1所述的android系統(tǒng)外接攝像頭的分辨率獲取方法,其特征在于,所述步驟B具體包括: B1、將所述分辨率的整型寬width和高h(yuǎn)eight分別轉(zhuǎn)換為相應(yīng)的字符串,用X作為連接符號(hào),以width X height格式存儲(chǔ),形成一相應(yīng)的字符串列表。
5.一種android系統(tǒng)外接攝像頭的分辨率獲取裝置,其特征在于,包括: 分辨率獲取模塊,用于通過(guò)視頻驅(qū)動(dòng)層獲取外接攝像頭所有支持的分辨率; 轉(zhuǎn)換及存儲(chǔ)模塊,用于將外接攝像頭所有支持的分辨率轉(zhuǎn)換為包含分辨率信息的字符串列表; 寫(xiě)入模塊,用于調(diào)用所述字符串列表,并將字符串列表寫(xiě)入android系統(tǒng)的相機(jī)應(yīng)用屬性中; 分辨率匹配模塊,用于根據(jù)android系統(tǒng)相機(jī)應(yīng)用的預(yù)覽界面的尺寸和外接攝像頭所有支持的分辨率進(jìn)行匹配計(jì)算,選擇最匹配的分辨率作為預(yù)覽界面的分辨率。
6.根據(jù)權(quán)利要求5所述的android系統(tǒng)外接攝像頭的分辨率獲取裝置,其特征在于,所述分辨率選擇模塊包括: 計(jì)算單元,用于計(jì)算每一個(gè)所述外接攝像頭所支持的分辨率的寬高比值與所述預(yù)覽界面的寬高比值的差值,當(dāng)所述差值在預(yù)定置信區(qū)間內(nèi)時(shí),將對(duì)應(yīng)的分辨率保留;當(dāng)所述差值不在預(yù)定置信區(qū)間內(nèi)時(shí),將對(duì)應(yīng)的分辨率刪除; 分辨率調(diào)整單元,用于自動(dòng)調(diào)整預(yù)覽界面的分辨率,使預(yù)覽界面的分辨率為保留的分辨率。
7.根據(jù)權(quán)利要求5所述的android系統(tǒng)外接攝像頭的分辨率獲取裝置,其特征在于,所述轉(zhuǎn)換及存儲(chǔ)模塊用于將所述分辨率的整型寬width和高h(yuǎn)eight分別轉(zhuǎn)換為相應(yīng)的字符串,用X作為連接符號(hào),以width X height格式存儲(chǔ),形成一相應(yīng)的字符串列表。
8.根據(jù)權(quán)利要求5所述的android系統(tǒng)外接攝像頭的分辨率獲取裝置,其特征在于,所述分辨率獲取模塊還用于在無(wú)法獲取外接攝像頭所支持的分辨率時(shí),設(shè)置默認(rèn)支持的分辨率為640*480
【文檔編號(hào)】H04N5/232GK103546689SQ201310471849
【公開(kāi)日】2014年1月29日 申請(qǐng)日期:2013年10月11日 優(yōu)先權(quán)日:2013年10月11日
【發(fā)明者】郝占峰, 陸琳 申請(qǐng)人:Tcl集團(tuán)股份有限公司