一種切換拍攝模式方法和電子設(shè)備的制作方法
【專利摘要】本發(fā)明的實(shí)施例提供一種切換拍攝模式方法和電子設(shè)備,涉及電子【技術(shù)領(lǐng)域】,能夠在一個Activity(活動)內(nèi)部實(shí)現(xiàn)兩種拍攝模式及模式之間的切換,并在切換過程中保持用戶界面對實(shí)時影像的預(yù)覽。其方法為:將獲取的實(shí)時目標(biāo)圖像的視頻幀依次存儲在預(yù)設(shè)數(shù)據(jù)緩存中,通過從預(yù)設(shè)數(shù)據(jù)緩存中依次讀取視頻幀,在用戶界面上實(shí)時顯示預(yù)覽目標(biāo)圖像,并在一個Activity內(nèi)部調(diào)整資源完成拍攝模式的切換,且在切換過程中保持用戶界面對實(shí)時影像的預(yù)覽。本發(fā)明的實(shí)施例用于實(shí)現(xiàn)相機(jī)在拍照模式與攝像模式之間的切換。
【專利說明】一種切換拍攝模式方法和電子設(shè)備
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及電子【技術(shù)領(lǐng)域】,尤其涉及一種切換拍攝模式方法和電子設(shè)備。
【背景技術(shù)】
[0002]隨著電子技術(shù)的發(fā)展,在移動智能電子設(shè)備上配備攝像頭已經(jīng)高度普及。移動智能電子設(shè)備如手機(jī)、平板電腦等,由于其方便隨身攜帶、隨時抓拍且可以進(jìn)行后續(xù)圖像處理、通信分享等特性,相比于傳統(tǒng)相機(jī)設(shè)備,靈活性更好且娛樂性更強(qiáng),應(yīng)用日益廣泛。由于目前的攝像頭無法同時進(jìn)行拍照及攝像操作,用戶需要根據(jù)需求在兩種拍攝模式之間進(jìn)行切換。
[0003]但是,現(xiàn)有技術(shù)中,以Android (安卓)系統(tǒng)為例,拍照模式與攝像模式是兩個相互獨(dú)立的Activity (活動),兩種模式切換的過程即為停止一個運(yùn)行中Activity,再打開另一個Activity的過程;由于拍照模式下用戶界面對實(shí)時影像預(yù)覽畫面的輸出與攝像模式下預(yù)覽畫面的輸出位于相互獨(dú)立的兩個Activity中,且兩個Activity中對預(yù)覽畫面的輸出設(shè)置如分辨率等參數(shù)可能不同,導(dǎo)致電子設(shè)備在兩種模式之間進(jìn)行切換并輸出預(yù)覽畫面時,畫面存在一定時間的延時或中斷,且對預(yù)覽畫面進(jìn)行了不必要的調(diào)整變化。
【發(fā)明內(nèi)容】
[0004]本發(fā)明的實(shí)施例提供一種切換拍攝模式方法和電子設(shè)備,在一個Activity內(nèi)部實(shí)現(xiàn)拍照模式、攝像模式及兩種拍攝模式之間的切換,且在切換過程中保持用戶界面對實(shí)時影像的預(yù)覽,消除電子設(shè)備在兩種模式之間進(jìn)行切換時產(chǎn)生的延時或中斷,避免對預(yù)覽畫面進(jìn)行不必要的調(diào)整。
[0005]為達(dá)到上述目的,本發(fā)明的實(shí)施例采用如下技術(shù)方案:
[0006]第一方面,本發(fā)明實(shí)施例提供一種切換拍攝模式方法,應(yīng)用于一種電子設(shè)備,所述方法包括:
[0007]連續(xù)采集獲取目標(biāo)圖像的多個視頻幀,并將所述多個視頻幀依次存儲在預(yù)設(shè)數(shù)據(jù)緩存中,所述目標(biāo)圖像為預(yù)設(shè)取景范圍內(nèi)的可視影像;
[0008]從所述預(yù)設(shè)數(shù)據(jù)緩存中依次讀取所述多個視頻幀,并依次將所述多個視頻幀輸出到用戶界面,以實(shí)時顯示預(yù)覽所述目標(biāo)圖像;
[0009]接收切換指令,在當(dāng)前活動Activity內(nèi)部進(jìn)行拍攝模式切換,并在所述拍攝模式切換過程中保持輸出從所述預(yù)設(shè)數(shù)據(jù)緩存中讀取的視頻幀到所述用戶界面,以實(shí)時顯示預(yù)覽所述目標(biāo)圖像。
[0010]結(jié)合第一方面,在第一種可能的實(shí)現(xiàn)方式中,所述連續(xù)采集獲取目標(biāo)圖像的多個視頻幀,并將所述多個視頻幀依次存儲在預(yù)設(shè)數(shù)據(jù)緩存中包括:
[0011]申請創(chuàng)建所述預(yù)設(shè)數(shù)據(jù)緩存,并將所述預(yù)設(shè)數(shù)據(jù)緩存映射到內(nèi)存空間中;
[0012]將獲得的所述多個視頻幀依次存儲在所述預(yù)設(shè)數(shù)據(jù)緩存中隊(duì)列的隊(duì)尾,所述隊(duì)列為所述預(yù)設(shè)數(shù)據(jù)緩存中以隊(duì)列結(jié)構(gòu)管理的存儲單元集合。[0013]結(jié)合第一方面或第一方面的第一種可能的實(shí)現(xiàn)方式,在第二種可能的實(shí)現(xiàn)方式中,所述從所述預(yù)設(shè)數(shù)據(jù)緩存中依次讀取所述多個視頻幀,并依次將所述多個視頻幀輸出到用戶界面,以實(shí)時顯示預(yù)覽所述目標(biāo)圖像包括:
[0014]創(chuàng)建預(yù)覽線程,所述預(yù)覽線程包括從所述預(yù)設(shè)數(shù)據(jù)緩存中隊(duì)列的隊(duì)首位置讀取視頻幀,并將所述視頻幀輸出到所述用戶界面;
[0015]循環(huán)調(diào)用所述預(yù)覽線程,在所述用戶界面上實(shí)時顯示預(yù)覽所述目標(biāo)圖像。
[0016]結(jié)合第一方面的第二種可能的實(shí)現(xiàn)方式,在第三種可能的實(shí)現(xiàn)方式中,所述接收切換指令,在當(dāng)前活動Activity內(nèi)部進(jìn)行拍攝模式切換,并在所述拍攝模式切換過程中保持輸出從所述預(yù)設(shè)數(shù)據(jù)緩存中讀取的視頻幀到所述用戶界面,以實(shí)時顯示預(yù)覽所述目標(biāo)圖像包括:
[0017]若從拍照模式切換為攝像模式,則在當(dāng)前Activity內(nèi)部關(guān)閉拍照線程,并調(diào)用攝像線程;或,若從攝像模式切換為拍照模式,則在當(dāng)前Activity內(nèi)部關(guān)閉攝像線程,并調(diào)用拍照線程;在切換過程中,保持循環(huán)調(diào)用所述預(yù)覽線程,在所述用戶界面上實(shí)時顯示預(yù)覽所述目標(biāo)圖像;
[0018]所述拍照線程包括在接收拍照指令后,從所述預(yù)設(shè)數(shù)據(jù)緩存中提取單個目標(biāo)視頻幀,并進(jìn)行編碼壓縮處理得到圖像文件;所述攝像線程包括在接收攝像指令后,對所述目標(biāo)圖像進(jìn)行采集獲取連續(xù)目標(biāo)視頻幀,并對所述連續(xù)目標(biāo)視頻幀進(jìn)行編碼壓縮處理得到視頻文件。
[0019]結(jié)合第一方面,在第四種可能的實(shí)現(xiàn)方式中,在所述連續(xù)采集獲取目標(biāo)圖像的多個視頻巾貞之前,還包括:
[0020]檢測攝像頭模塊是否存在,并在檢測確定存在后,請求對所述攝像頭模塊進(jìn)行訪問。
[0021]第二方面,提供一種電子設(shè)備,所述電子設(shè)備包括:
[0022]采集存儲單元,用于連續(xù)采集獲取目標(biāo)圖像的多個視頻幀,并將所述多個視頻幀依次存儲在預(yù)設(shè)數(shù)據(jù)緩存中,所述目標(biāo)圖像為預(yù)設(shè)取景范圍內(nèi)的可視影像;
[0023]顯示預(yù)覽單元,用于從所述預(yù)設(shè)數(shù)據(jù)緩存中依次讀取所述多個視頻幀,并依次將所述多個視頻幀輸出到用戶界面,以實(shí)時顯示預(yù)覽所述目標(biāo)圖像;
[0024]模式切換單元,用于接收切換指令,在當(dāng)前活動Activity內(nèi)部進(jìn)行拍攝模式切換,并在所述拍攝模式切換過程中保持輸出從所述預(yù)設(shè)數(shù)據(jù)緩存中讀取的視頻幀到所述用戶界面,以實(shí)時顯示預(yù)覽所述目標(biāo)圖像。
[0025]結(jié)合第二方面,在第一種可能的實(shí)現(xiàn)方式中,所述采集存儲單元具體用于:
[0026]申請創(chuàng)建所述預(yù)設(shè)數(shù)據(jù)緩存,并將所述預(yù)設(shè)數(shù)據(jù)緩存映射到內(nèi)存空間中;
[0027]將獲得的所述多個視頻幀依次存儲在所述預(yù)設(shè)數(shù)據(jù)緩存中隊(duì)列的隊(duì)尾,所述隊(duì)列為所述預(yù)設(shè)數(shù)據(jù)緩存中以隊(duì)列結(jié)構(gòu)管理的存儲單元集合。
[0028]結(jié)合第二方面或第二方面的第一種可能的實(shí)現(xiàn)方式,在第二種可能的實(shí)現(xiàn)方式中,所述顯示預(yù)覽單元具體用于:
[0029]創(chuàng)建預(yù)覽線程,所述預(yù)覽線程包括從所述預(yù)設(shè)數(shù)據(jù)緩存中隊(duì)列的隊(duì)首位置讀取視頻幀,并將所述視頻幀輸出到所述用戶界面;
[0030]循環(huán)調(diào)用所述預(yù)覽線程,在所述用戶界面上實(shí)時顯示預(yù)覽所述目標(biāo)圖像。[0031]結(jié)合第二方面的第二種可能的實(shí)現(xiàn)方式,在第三種可能的實(shí)現(xiàn)方式中,所述模式切換單元具體用于:
[0032]若從拍照模式切換為攝像模式,則在當(dāng)前Activity內(nèi)部關(guān)閉拍照線程,并調(diào)用攝像線程;或,若從攝像模式切換為拍照模式,則在當(dāng)前Activity內(nèi)部關(guān)閉攝像線程,并調(diào)用拍照線程;在切換過程中,保持循環(huán)調(diào)用所述預(yù)覽線程,在所述用戶界面上實(shí)時顯示預(yù)覽所述目標(biāo)圖像;
[0033]所述拍照線程包括在接收拍照指令后,從所述預(yù)設(shè)數(shù)據(jù)緩存中提取單個目標(biāo)視頻幀,并進(jìn)行編碼壓縮處理得到圖像文件;所述攝像線程包括在接收攝像指令后,對所述目標(biāo)圖像進(jìn)行采集獲取連續(xù)目標(biāo)視頻幀,并對所述連續(xù)目標(biāo)視頻幀進(jìn)行編碼壓縮處理得到視頻文件。
[0034]結(jié)合第二方面,在第四種可能的實(shí)現(xiàn)方式中,所述電子設(shè)備還包括:
[0035]檢測訪問單元,用于檢測攝像頭模塊是否存在,并在檢測確定存在后,請求對所述攝像頭模塊進(jìn)行訪問。
[0036]本發(fā)明的實(shí)施例提供一種切換拍攝模式方法和電子設(shè)備,將獲取的實(shí)時目標(biāo)圖像的視頻幀依次存儲在預(yù)設(shè)數(shù)據(jù)緩存中,通過從預(yù)設(shè)數(shù)據(jù)緩存中依次讀取視頻幀,在用戶界面上實(shí)時顯示預(yù)覽目標(biāo)圖像,并在一個Activity內(nèi)部調(diào)整資源完成拍攝模式的切換,且在切換過程中保持用戶界面對實(shí)時影像的預(yù)覽。這樣,消除了在兩種拍攝模式之間進(jìn)行切換時產(chǎn)生的延時或中斷,避免了對預(yù)覽畫面進(jìn)行不必要的調(diào)整。
【專利附圖】
【附圖說明】
[0037]為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0038]圖1為本發(fā)明實(shí)施例提供的一種切換拍攝模式方法的流程示意圖;
[0039]圖2為本發(fā)明實(shí)施例提供的另一種切換拍攝模式方法的流程示意圖;
[0040]圖3為本發(fā)明實(shí)施例提供的一種電子設(shè)備的結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0041]下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例。基于本發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
[0042]本發(fā)明的實(shí)施例提供一種切換拍攝模式方法,如圖1所示,該方法包括:
[0043]S101、連續(xù)采集獲取目標(biāo)圖像的多個視頻幀,并將多個視頻幀依次存儲在預(yù)設(shè)數(shù)據(jù)緩存中,目標(biāo)圖像為預(yù)設(shè)取景范圍內(nèi)的可視影像;
[0044]S102、從預(yù)設(shè)數(shù)據(jù)緩存中依次讀取多個視頻幀,并依次將多個視頻幀輸出到用戶界面,以實(shí)時顯示預(yù)覽目標(biāo)圖像;
[0045]S103、接收切換指令,在當(dāng)前活動Activity內(nèi)部進(jìn)行拍攝模式切換,并在拍攝模式切換過程中保持輸出從預(yù)設(shè)數(shù)據(jù)緩存中讀取的視頻幀到用戶界面,以實(shí)時顯示預(yù)覽目標(biāo)圖像。
[0046]本發(fā)明的實(shí)施例提供一種切換拍攝模式方法,將獲取的實(shí)時目標(biāo)圖像的視頻幀依次存儲在預(yù)設(shè)數(shù)據(jù)緩存中,通過從預(yù)設(shè)數(shù)據(jù)緩存中依次讀取視頻幀,在用戶界面上實(shí)時顯示預(yù)覽目標(biāo)圖像,并在一個Activity內(nèi)部調(diào)整資源完成拍攝模式的切換,且在切換過程中保持用戶界面對實(shí)時影像的預(yù)覽。這樣,消除了在兩種拍攝模式之間進(jìn)行切換時產(chǎn)生的延時或中斷,避免了對預(yù)覽畫面進(jìn)行不必要的調(diào)整。
[0047]為了使本領(lǐng)域技術(shù)人員能夠更清楚地理解本發(fā)明實(shí)施例提供的技術(shù)方案,下面通過具體的實(shí)施例,對本發(fā)明實(shí)施例提供的另一種切換拍攝模式方法進(jìn)行詳細(xì)說明,如圖2所示,該方法包括:
[0048]S201、檢測并訪問攝像頭申旲塊。
[0049]具體的,在對目標(biāo)圖像進(jìn)行采集之前,需要對電子設(shè)備的攝像頭模塊是否可用進(jìn)行檢測。
[0050]示例性的,電子設(shè)備檢測是否能連接到一個存在的攝像頭模塊,其中,該攝像頭模塊可以為電子設(shè)備內(nèi)部的一個模塊,與電子設(shè)備中的其他模塊通過有線方式進(jìn)行連接,或者,該攝像頭模塊也可以為獨(dú)立于電子設(shè)備之外的一個攝像設(shè)備,與該電子設(shè)備通過有線或無線方式進(jìn)行連接,此處不做限定。
[0051 ] 進(jìn)一步的,請求對攝像頭模塊進(jìn)行訪問。
[0052]示例性的,如果電子設(shè)備檢測到了已連接的攝像頭模塊,則必須通過獲取一個相機(jī)(Camera)的實(shí)例來請求對該攝像頭模塊進(jìn)行訪問,以確保檢測捕獲所有的異常;若存在應(yīng)用程序在使用攝像頭模塊后,未能正確釋放Camera對象,則后續(xù)對攝像頭的訪問都會失敗,電子設(shè)備能夠通過檢測獲取異常信息,停止后續(xù)操作;或者,若未檢測到異常,則表明對攝像頭模塊的訪問成功。
[0053]值得一提的,若電子設(shè)備連接了多于一個攝像頭模塊,則可根據(jù)設(shè)置訪問指定攝像頭模塊,缺省可設(shè)定為訪問第一個;以手機(jī)為例,即為訪問后置攝像頭。
[0054]S202、獲取實(shí)時目標(biāo)圖像的視頻幀,并將視頻幀依次存儲在預(yù)設(shè)數(shù)據(jù)緩存中。
[0055]具體的,電子設(shè)備在檢測并訪問攝像頭模塊結(jié)束后,對實(shí)時目標(biāo)圖像進(jìn)行采集,其中,目標(biāo)圖像為預(yù)設(shè)取景范圍內(nèi)的所有可視影像,預(yù)設(shè)取景范圍可以為攝像頭模塊的取景范圍。通過連續(xù)對實(shí)時目標(biāo)圖像進(jìn)行采集,可以獲取多個連續(xù)的視頻幀。
[0056]同時,申請創(chuàng)建預(yù)設(shè)數(shù)據(jù)緩存(Buffer),并將預(yù)設(shè)數(shù)據(jù)緩存映射到內(nèi)存空間中;示例性的,申請操作可以由Camera硬件抽象層(Hardware Abstraction Layer,HAL)執(zhí)行,通過ioctl函數(shù)向UVC驅(qū)動申請預(yù)設(shè)數(shù)據(jù)緩存,并通過—ap函數(shù)映射進(jìn)內(nèi)存空間。
[0057]其中,ioctl函數(shù)為設(shè)備驅(qū)動程序中的函數(shù),用于對設(shè)備的I/O通道進(jìn)行管理;UVC為通用串行總線(Universal Serial Bus, USB)視頻捕獲設(shè)備的協(xié)議標(biāo)準(zhǔn),用于對符合UVC規(guī)格的硬件設(shè)備提供支持;mmap函數(shù)用于將一個文件或者其它對象映射進(jìn)內(nèi)存;且預(yù)設(shè)數(shù)據(jù)緩存在內(nèi)存中為物理地址連續(xù)的存儲單元。
[0058]進(jìn)一步的,通過Camera HAL獲取預(yù)設(shè)數(shù)據(jù)緩存在內(nèi)存中的物理地址,將獲得的多個視頻幀存儲在預(yù)設(shè)數(shù)據(jù)緩存中隊(duì)列的隊(duì)尾。其中,隊(duì)列為預(yù)設(shè)數(shù)據(jù)緩存中以隊(duì)列結(jié)構(gòu)管理的存儲單元集合,為一種操作受限的表,只允許在隊(duì)首進(jìn)行刪除操作,在隊(duì)尾進(jìn)行插入操作。
[0059]值得一提的,對實(shí)時目標(biāo)圖像進(jìn)行采集獲取視頻幀的過程、將視頻幀存儲在預(yù)設(shè)數(shù)據(jù)緩存中的過程是并行進(jìn)行的,從采集獲取第一個視頻幀開始,電子設(shè)備即執(zhí)行存儲該視頻幀至預(yù)設(shè)數(shù)據(jù)緩存中的操作,并在持續(xù)采集操作獲取后續(xù)視頻幀的同時,持續(xù)執(zhí)行對后續(xù)視頻幀的存儲。
[0060]S203、從預(yù)設(shè)數(shù)據(jù)緩存中讀取視頻幀,并將視頻幀輸出到用戶界面。
[0061]具體的,電子設(shè)備在檢測并訪問攝像頭模塊結(jié)束后,生成預(yù)覽開始指令,創(chuàng)建預(yù)覽(Preview)線程,執(zhí)行視頻幀到用戶界面的輸出操作。
[0062]示例性的,通過Camera HAL獲取預(yù)設(shè)數(shù)據(jù)緩存在內(nèi)存中的物理地址,并將該物理地址傳遞給繪圖模塊;其中,繪圖模塊用于建立繪圖圖層,并通過輸出該繪圖圖層至用戶界面進(jìn)行顯示,實(shí)時顯示預(yù)覽目標(biāo)圖像。
[0063]在本實(shí)施例中,繪圖模塊可以為Overlay模塊或Surface模塊。
[0064]值得一提的,Overlay模塊一般多用于需要高巾貞率的場景,或,用戶界面(UserInterface, UI)設(shè)計(jì)需求的場景;且Overlay需要底層硬件與驅(qū)動的支持,否則只能使用Surface進(jìn)行顯不。
[0065]示例性的,通過使用Overlay實(shí)現(xiàn)在用戶界面顯示預(yù)覽目標(biāo)圖像,包括:
[0066]獲取Camera HAL所傳遞的預(yù)設(shè)數(shù)據(jù)緩存在內(nèi)存中的物理地址,根據(jù)該物理地址,通過Overlay模塊的接口,依次從預(yù)設(shè)數(shù)據(jù)緩存中隊(duì)列的隊(duì)首位置讀取視頻幀,并在繪圖圖層上顯示該視頻幀;通過在用戶界面顯示該繪圖圖層,逐幀輸出視頻幀,實(shí)現(xiàn)實(shí)時顯示預(yù)覽目標(biāo)圖像。
[0067]示例性的,通過使用Surface實(shí)現(xiàn)在用戶界面顯示預(yù)覽目標(biāo)圖像,包括:
[0068]調(diào)用函數(shù)向Surface注冊預(yù)設(shè)數(shù)據(jù)緩存,當(dāng)對實(shí)時目標(biāo)圖像進(jìn)行采集獲取視頻幀時,通過預(yù)覽回調(diào)函數(shù),將存儲當(dāng)前捕獲視頻幀數(shù)據(jù)的預(yù)設(shè)數(shù)據(jù)緩存直接傳遞至Surface進(jìn)行顯示,Surface通過在繪圖圖層上顯示該視頻幀,并在用戶界面顯示該繪圖圖層,實(shí)現(xiàn)實(shí)時顯示預(yù)覽目標(biāo)圖像。
[0069]值得一提的,從預(yù)設(shè)數(shù)據(jù)緩存中讀取視頻幀的過程、將視頻幀輸出到用戶界面的過程是并行進(jìn)行的,且與S203中對實(shí)時目標(biāo)圖像進(jìn)行采集獲取視頻幀的過程、將視頻幀存儲在預(yù)設(shè)數(shù)據(jù)緩存中的過程也是并行進(jìn)行的。從采集獲取第一個視頻幀開始,即執(zhí)行存儲該視頻幀至預(yù)設(shè)數(shù)據(jù)緩存中的操作,繪圖圖層在從預(yù)設(shè)數(shù)據(jù)緩存中讀取該視頻幀時,隨即輸出至用戶界面;在持續(xù)采集操作獲取后續(xù)視頻幀的同時,電子設(shè)備持續(xù)執(zhí)行對后續(xù)視頻幀的存儲,且循環(huán)調(diào)用預(yù)覽線程從預(yù)設(shè)數(shù)據(jù)緩存中讀取后續(xù)視頻幀并輸出至用戶界面。
[0070]S204、接收切換指令,執(zhí)行拍攝模式的切換。
[0071]具體的,在當(dāng)前Activity內(nèi)部進(jìn)行拍攝模式的切換,即在一個Activity內(nèi)實(shí)現(xiàn)相機(jī)的拍照模式與攝像模式,以及兩種模式之間的切換過程,并在拍攝模式切換過程中保持輸出視頻幀到用戶界面,實(shí)時顯示預(yù)覽目標(biāo)圖像,使用戶界面的輸出不受拍攝模式之間進(jìn)行切換的影響。
[0072]示例性的,若從拍照模式切換為攝像模式,則在當(dāng)前Activity內(nèi)部關(guān)閉拍照線程,并同時調(diào)用攝像線程;在切換過程中,保持循環(huán)調(diào)用預(yù)覽線程,不受拍照線程或攝像線程切換的影響,在用戶界面上實(shí)時顯示預(yù)覽目標(biāo)圖像;[0073]或者,若從攝像模式切換為拍照模式,則在當(dāng)前Activity內(nèi)部關(guān)閉攝像線程,并調(diào)用拍照線程;在切換過程中,保持循環(huán)調(diào)用預(yù)覽線程,不受拍照線程或攝像線程切換的影響,在用戶界面上實(shí)時顯示預(yù)覽目標(biāo)圖像;
[0074]其中,拍照線程用于執(zhí)行操作在接收拍照指令后,從預(yù)設(shè)數(shù)據(jù)緩存中提取單個目標(biāo)視頻幀,并通過編碼壓縮處理,得到預(yù)設(shè)圖片格式的圖像文件,保存至設(shè)備存儲,實(shí)現(xiàn)從攝像頭接收圖片并保存的過程;拍照指令可以為由用戶點(diǎn)擊按鍵觸發(fā)的指令,也可以為在滿足預(yù)設(shè)拍照條件時由設(shè)備觸發(fā)的指令,此處不做限制;在本實(shí)施例中,預(yù)設(shè)圖片格式可以為JPEG、bmp格式,且上述預(yù)設(shè)圖片格式僅為示例性的,包括但不限于此。
[0075]攝像線程用于執(zhí)行操作在接收攝像指令后,直接采集獲取連續(xù)目標(biāo)視頻幀,并通過編碼壓縮處理,得到預(yù)設(shè)視頻格式的視頻文件,保存至設(shè)備存儲,實(shí)現(xiàn)從攝像頭錄制視頻并保存的過程;攝像指令可以為由用戶點(diǎn)擊按鍵觸發(fā)的指令,也可以為在滿足預(yù)設(shè)攝像條件時由設(shè)備觸發(fā)的指令,此處不做限制;在本實(shí)施例中,預(yù)設(shè)視頻格式可以為MP4、AVI格式,且上述預(yù)設(shè)視頻格式僅為示例性的,包括但不限于此。
[0076]本發(fā)明的實(shí)施例提供一種切換拍攝模式方法,將獲取的實(shí)時目標(biāo)圖像的視頻幀依次存儲在預(yù)設(shè)數(shù)據(jù)緩存中,通過從預(yù)設(shè)數(shù)據(jù)緩存中依次讀取視頻幀,在用戶界面上實(shí)時顯示預(yù)覽目標(biāo)圖像,并在一個Activity內(nèi)部調(diào)整資源完成拍攝模式的切換,且在切換過程中保持用戶界面對實(shí)時影像的預(yù)覽。這樣,消除了在兩種拍攝模式之間進(jìn)行切換時產(chǎn)生的延時或中斷,避免了對預(yù)覽畫面進(jìn)行不必要的調(diào)整。
[0077]本發(fā)明實(shí)施例還提供一種電子設(shè)備00,如圖3所示,該電子設(shè)備00包括:
[0078]采集存儲單元001,用于連續(xù)采集獲取目標(biāo)圖像的多個視頻幀,并將多個視頻幀依次存儲在預(yù)設(shè)數(shù)據(jù)緩存中,目標(biāo)圖像為預(yù)設(shè)取景范圍內(nèi)的可視影像;
[0079]顯示預(yù)覽單元002,用于從預(yù)設(shè)數(shù)據(jù)緩存中依次讀取多個視頻幀,并依次將多個視頻幀輸出到用戶界面,以實(shí)時顯示預(yù)覽目標(biāo)圖像;
[0080]模式切換單元003,用于接收切換指令,在當(dāng)前活動Activity內(nèi)部進(jìn)行拍攝模式切換,并在拍攝模式切換過程中保持輸出從預(yù)設(shè)數(shù)據(jù)緩存中讀取的視頻幀到用戶界面,以實(shí)時顯示預(yù)覽目標(biāo)圖像。
[0081]可選的,采集存儲單元001具體用于:
[0082]申請創(chuàng)建預(yù)設(shè)數(shù)據(jù)緩存,并將預(yù)設(shè)數(shù)據(jù)緩存映射到內(nèi)存空間中;
[0083]將獲得的多個視頻幀依次存儲在預(yù)設(shè)數(shù)據(jù)緩存中隊(duì)列的隊(duì)尾,隊(duì)列為預(yù)設(shè)數(shù)據(jù)緩存中以隊(duì)列結(jié)構(gòu)管理的存儲單元集合。
[0084]可選的,顯示預(yù)覽單元002具體用于:
[0085]創(chuàng)建預(yù)覽線程,預(yù)覽線程包括從預(yù)設(shè)數(shù)據(jù)緩存中隊(duì)列的隊(duì)首位置讀取視頻幀,并將視頻幀輸出到用戶界面;
[0086]循環(huán)調(diào)用預(yù)覽線程,在用戶界面上實(shí)時顯示預(yù)覽目標(biāo)圖像。
[0087]可選的,模式切換單元003具體用于:
[0088]若從拍照模式切換為攝像模式,則在當(dāng)前Activity內(nèi)部關(guān)閉拍照線程,并調(diào)用攝像線程;或,若從攝像模式切換為拍照模式,則在當(dāng)前Activity內(nèi)部關(guān)閉攝像線程,并調(diào)用拍照線程;在切換過程中,保持循環(huán)調(diào)用預(yù)覽線程,在用戶界面上實(shí)時顯示預(yù)覽目標(biāo)圖像;
[0089]拍照線程包括在接收拍照指令后,從預(yù)設(shè)數(shù)據(jù)緩存中提取單個目標(biāo)視頻幀,并進(jìn)行編碼壓縮處理得到圖像文件;攝像線程包括在接收攝像指令后,對目標(biāo)圖像進(jìn)行采集獲取連續(xù)目標(biāo)視頻幀,并對連續(xù)目標(biāo)視頻幀進(jìn)行編碼壓縮處理得到視頻文件。
[0090]可選的,電子設(shè)備00還包括:
[0091]檢測訪問單元004,用于檢測攝像頭模塊是否存在,并在檢測確定存在后,請求對攝像頭模塊進(jìn)行訪問。
[0092]本發(fā)明的實(shí)施例提供一種電子設(shè)備,將獲取的實(shí)時目標(biāo)圖像的視頻幀依次存儲在預(yù)設(shè)數(shù)據(jù)緩存中,通過從預(yù)設(shè)數(shù)據(jù)緩存中依次讀取視頻幀,在用戶界面上實(shí)時顯示預(yù)覽目標(biāo)圖像,并在一個Activity內(nèi)部調(diào)整資源完成拍攝模式的切換,且在切換過程中保持用戶界面對實(shí)時影像的預(yù)覽。這樣,消除了在兩種拍攝模式之間進(jìn)行切換時產(chǎn)生的延時或中斷,避免了對預(yù)覽畫面進(jìn)行不必要的調(diào)整。
[0093]通過以上的實(shí)施方式的描述,所屬領(lǐng)域的技術(shù)人員可以清楚地了解到,為描述的方便和簡潔,僅以上述各功能模塊的劃分進(jìn)行舉例說明,實(shí)際應(yīng)用中,可以根據(jù)需要而將上述功能分配由不同的功能模塊完成,即將裝置的內(nèi)部結(jié)構(gòu)劃分成不同的功能模塊,以完成以上描述的全部或者部分功能。上述描述的系統(tǒng),裝置和單元的具體工作過程,可以參考前述方法實(shí)施例中的對應(yīng)過程,在此不再贅述。
[0094]在本申請所提供的幾個實(shí)施例中,應(yīng)該理解到,所揭露的方法和裝置,可以通過其它的方式實(shí)現(xiàn)。例如,以上所描述的裝置實(shí)施例僅僅是示意性的,例如,所述模塊或單元的劃分,僅僅為一種邏輯功能劃分,實(shí)際實(shí)現(xiàn)時可以有另外的劃分方式,例如多個單元或組件可以結(jié)合或者可以集成到另一個系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另一點(diǎn),所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過一些接口,裝置或單元的間接耦合或通信連接,可以是電性,機(jī)械或其它的形式。
[0095]所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個地方,或者也可以分布到多個網(wǎng)絡(luò)單元上??梢愿鶕?jù)實(shí)際的需要選擇其中的部分或者全部單元來實(shí)現(xiàn)本實(shí)施例方案的目的。
[0096]另外,在本發(fā)明各個實(shí)施例中的各功能單元可以集成在一個處理單元中,也可以是各個單元單獨(dú)物理存在,也可以兩個或兩個以上單元集成在一個單元中。上述集成的單元既可以采用硬件的形式實(shí)現(xiàn),也可以采用軟件功能單元的形式實(shí)現(xiàn)。
[0097]所述集成的單元如果以軟件功能單元的形式實(shí)現(xiàn)并作為獨(dú)立的產(chǎn)品銷售或使用時,可以存儲在一個計(jì)算機(jī)可讀取存儲介質(zhì)中?;谶@樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說對現(xiàn)有技術(shù)做出貢獻(xiàn)的部分或者該技術(shù)方案的全部或部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計(jì)算機(jī)軟件產(chǎn)品存儲在一個存儲介質(zhì)中,包括若干指令用以使得一臺計(jì)算機(jī)設(shè)備(可以是個人計(jì)算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)或處理器(processor)執(zhí)行本發(fā)明各個實(shí)施例所述方法的全部或部分步驟。而前述的存儲介質(zhì)包括:U盤、移動硬盤、只讀存儲器(ROM, Read-Only Memory)、隨機(jī)存取存儲器(RAM, Random Access Memory)、磁碟或者光盤等各種可以存儲程序代碼的介質(zhì)。
[0098]以上所述,僅為本發(fā)明的【具體實(shí)施方式】,但本發(fā)明的保護(hù)范圍并不局限于此,任何熟悉本【技術(shù)領(lǐng)域】的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到變化或替換,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。因此,本發(fā)明的保護(hù)范圍應(yīng)以所述權(quán)利要求的保護(hù)范圍為準(zhǔn)。
【權(quán)利要求】
1.一種切換拍攝模式方法,其特征在于,所述方法包括: 連續(xù)采集獲取目標(biāo)圖像的多個視頻幀,并將所述多個視頻幀依次存儲在預(yù)設(shè)數(shù)據(jù)緩存中,所述目標(biāo)圖像為預(yù)設(shè)取景范圍內(nèi)的可視影像; 從所述預(yù)設(shè)數(shù)據(jù)緩存中依次讀取所述多個視頻幀,并依次將所述多個視頻幀輸出到用戶界面,以實(shí)時顯示預(yù)覽所述目標(biāo)圖像; 接收切換指令,在當(dāng)前活動Activity內(nèi)部進(jìn)行拍攝模式切換,并在所述拍攝模式切換過程中保持輸出從所述預(yù)設(shè)數(shù)據(jù)緩存中讀取的視頻幀到所述用戶界面,以實(shí)時顯示預(yù)覽所述目標(biāo)圖像。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述連續(xù)采集獲取目標(biāo)圖像的多個視頻幀,并將所述多個視頻幀依次存儲在預(yù)設(shè)數(shù)據(jù)緩存中包括: 申請創(chuàng)建所述預(yù)設(shè)數(shù)據(jù)緩存,并將所述預(yù)設(shè)數(shù)據(jù)緩存映射到內(nèi)存空間中; 將獲得的所述多個視頻幀依次存儲在所述預(yù)設(shè)數(shù)據(jù)緩存中隊(duì)列的隊(duì)尾,所述隊(duì)列為所述預(yù)設(shè)數(shù)據(jù)緩存中以隊(duì)列結(jié)構(gòu)管理的存儲單元集合。
3.根據(jù)權(quán)利要求1或2所述的方法,其特征在于,所述從所述預(yù)設(shè)數(shù)據(jù)緩存中依次讀取所述多個視頻幀,并依次將所述多個視頻幀輸出到用戶界面,以實(shí)時顯示預(yù)覽所述目標(biāo)圖像包括: 創(chuàng)建預(yù)覽線程,所述預(yù)覽線程包括從所述預(yù)設(shè)數(shù)據(jù)緩存中隊(duì)列的隊(duì)首位置讀取視頻幀,并將所述視頻幀輸 出到所述用戶界面; 循環(huán)調(diào)用所述預(yù)覽線程,在所述用戶界面上實(shí)時顯示預(yù)覽所述目標(biāo)圖像。
4.根據(jù)權(quán)利要求3所述的方法,其特征在于,所述接收切換指令,在當(dāng)前活動Activity內(nèi)部進(jìn)行拍攝模式切換,并在所述拍攝模式切換過程中保持輸出從所述預(yù)設(shè)數(shù)據(jù)緩存中讀取的視頻幀到所述用戶界面,以實(shí)時顯示預(yù)覽所述目標(biāo)圖像包括: 若從拍照模式切換為攝像模式,則在當(dāng)前Activity內(nèi)部關(guān)閉拍照線程,并調(diào)用攝像線程;或,若從攝像模式切換為拍照模式,則在當(dāng)前Activity內(nèi)部關(guān)閉攝像線程,并調(diào)用拍照線程;在切換過程中,保持循環(huán)調(diào)用所述預(yù)覽線程,在所述用戶界面上實(shí)時顯示預(yù)覽所述目標(biāo)圖像; 所述拍照線程包括在接收拍照指令后,從所述預(yù)設(shè)數(shù)據(jù)緩存中提取單個目標(biāo)視頻幀,并進(jìn)行編碼壓縮處理得到圖像文件;所述攝像線程包括在接收攝像指令后,對所述目標(biāo)圖像進(jìn)行采集獲取連續(xù)目標(biāo)視頻幀,并對所述連續(xù)目標(biāo)視頻幀進(jìn)行編碼壓縮處理得到視頻文件。
5.根據(jù)權(quán)利要求1所述的方法,其特征在于,在所述連續(xù)采集獲取目標(biāo)圖像的多個視頻中貞之前,還包括: 檢測攝像頭模塊是否存在,并在檢測確定存在后,請求對所述攝像頭模塊進(jìn)行訪問。
6.—種電子設(shè)備,其特征在于,所述電子設(shè)備包括: 采集存儲單元,用于連續(xù)采集獲取目標(biāo)圖像的多個視頻幀,并將所述多個視頻幀依次存儲在預(yù)設(shè)數(shù)據(jù)緩存中,所述目標(biāo)圖像為預(yù)設(shè)取景范圍內(nèi)的可視影像; 顯示預(yù)覽單元,用于從所述預(yù)設(shè)數(shù)據(jù)緩存中依次讀取所述多個視頻幀,并依次將所述多個視頻幀輸出到用戶界面,以實(shí)時顯示預(yù)覽所述目標(biāo)圖像; 模式切換單元,用于接收切換指令,在當(dāng)前活動Activity內(nèi)部進(jìn)行拍攝模式切換,并在所述拍攝模式切換過程中保持輸出從所述預(yù)設(shè)數(shù)據(jù)緩存中讀取的視頻幀到所述用戶界面,以實(shí)時顯示預(yù)覽所述目標(biāo)圖像。
7.根據(jù)權(quán)利要求6所述的電子設(shè)備,其特征在于,所述采集存儲單元具體用于: 申請創(chuàng)建所述預(yù)設(shè)數(shù)據(jù)緩存,并將所述預(yù)設(shè)數(shù)據(jù)緩存映射到內(nèi)存空間中; 將獲得的所述多個視頻幀依次存儲在所述預(yù)設(shè)數(shù)據(jù)緩存中隊(duì)列的隊(duì)尾,所述隊(duì)列為所述預(yù)設(shè)數(shù)據(jù)緩存中以隊(duì)列結(jié)構(gòu)管理的存儲單元集合。
8.根據(jù)權(quán)利要求6或7所述的電子設(shè)備,其特征在于,所述顯示預(yù)覽單元具體用于: 創(chuàng)建預(yù)覽線程,所述預(yù)覽線程包括從所述預(yù)設(shè)數(shù)據(jù)緩存中隊(duì)列的隊(duì)首位置讀取視頻幀,并將所述視頻幀輸出到所述用戶界面; 循環(huán)調(diào)用所述預(yù)覽線程,在所述用戶界面上實(shí)時顯示預(yù)覽所述目標(biāo)圖像。
9.根據(jù)權(quán)利要求8所述的電子設(shè)備,其特征在于,所述模式切換單元具體用于: 若從拍照模式切換為攝像模式,則在當(dāng)前Activity內(nèi)部關(guān)閉拍照線程,并調(diào)用攝像線程;或,若從攝像模式切換為拍照模式,則在當(dāng)前Activity內(nèi)部關(guān)閉攝像線程,并調(diào)用拍照線程;在切換過程中,保持循環(huán)調(diào)用所述預(yù)覽線程,在所述用戶界面上實(shí)時顯示預(yù)覽所述目標(biāo)圖像; 所述拍照線程包括在接收拍照 指令后,從所述預(yù)設(shè)數(shù)據(jù)緩存中提取單個目標(biāo)視頻幀,并進(jìn)行編碼壓縮處理得到圖像文件;所述攝像線程包括在接收攝像指令后,對所述目標(biāo)圖像進(jìn)行采集獲取連續(xù)目標(biāo)視頻幀,并對所述連續(xù)目標(biāo)視頻幀進(jìn)行編碼壓縮處理得到視頻文件。
10.根據(jù)權(quán)利要求6所述的電子設(shè)備,其特征在于,所述電子設(shè)備還包括: 檢測訪問單元,用于檢測攝像頭模塊是否存在,并在檢測確定存在后,請求對所述攝像頭模塊進(jìn)行訪問。
【文檔編號】H04M1/725GK103716535SQ201310692799
【公開日】2014年4月9日 申請日期:2013年12月12日 優(yōu)先權(quán)日:2013年12月12日
【發(fā)明者】肖希哲 申請人:樂視致新電子科技(天津)有限公司