我們舉個例子來進(jìn)一步說明上面三種模式,假設(shè)我們的相機(jī)應(yīng)用程序開啟了預(yù)覽,所以會提交一個重復(fù)模式的 Capture 用于不斷獲取預(yù)覽畫面,然后我們提交一個單次模式的 Capture,接著我們又提交了一組連續(xù)三次的多次模式的 Capture,這些不同模式的 Capture 會按照下圖所示被執(zhí)行:
下面是幾個重要的注意事項:
1.無論 Capture 以何種模式被提交,它們都是按順序串行執(zhí)行的,不存在并行執(zhí)行的情況 。2.重復(fù)模式是一個比較特殊的模式,因為它會保留我們提交的 CaptureRequest 對象用于不斷重復(fù)執(zhí)行 Capture 操作,所以大多數(shù)情況下重復(fù)模式的 CaptureRequest 和其他模式的 CaptureRequest 是獨立的,這就會導(dǎo)致重復(fù)模式的參數(shù)和其他模式的參數(shù)會有一定的差異,例如重復(fù)模式不會配置CaptureRequest.AF_TRIGGER_START ,因為這會導(dǎo)致相機(jī)不斷觸發(fā)對焦的操作 。3.如果某一次的 Capture 沒有配置預(yù)覽的 Surface,例如拍照的時候,就會導(dǎo)致本次 Capture 不會將畫面輸出到預(yù)覽的 Surface 上,進(jìn)而導(dǎo)致預(yù)覽畫面卡頓的情況,所以大部分情況下我們都會將預(yù)覽的 Surface 添加到所有的 CaptureRequest 里 。
4) CameraManagerCameraManager 是一個負(fù)責(zé)查詢和建立相機(jī)連接的系統(tǒng)服務(wù),它的功能不多,這里列出幾個 CameraManager 的關(guān)鍵功能:
1.將相機(jī)信息封裝到 CameraCharacteristics 中,并提獲取 CameraCharacteristics 實例的方式 。2.根據(jù)指定的相機(jī) ID 連接相機(jī)設(shè)備 。3.提供將閃光燈設(shè)置成手電筒模式的快捷方式 。
5 )CameraCharacteristicsCameraCharacteristics 是一個只讀的相機(jī)信息提供者,其內(nèi)部攜帶大量的相機(jī)信息,包括代表相機(jī)朝向的 LENS_FACING ;判斷閃光燈是否可用的 FLASH_INFO_AVAILABLE ;獲取所有可用 AE 模式的CONTROL_AE_AVAILABLE_MODES 等等 。
如果你對 Camera1 比較熟悉,那么 CameraCharacteristics 有點像 Camera1 的 Camera.CameraInfo 或者 Camera.Parameters。
6 ) CameraDeviceCameraDevice 代表當(dāng)前連接的相機(jī)設(shè)備,它的職責(zé)有以下四個:
1.根據(jù)指定的參數(shù)創(chuàng)建 CameraCaptureSession 。2.根據(jù)指定的模板創(chuàng)建 CaptureRequest 。3.關(guān)閉相機(jī)設(shè)備 。4.監(jiān)聽相機(jī)設(shè)備的狀態(tài),例如斷開連接、開啟成功和開啟失敗等 。
熟悉 Camera1 的人可能會說 CameraDevice 就是 Camera1 的 Camera 類,實則不是,Camera 類幾乎負(fù)責(zé)了所有相機(jī)的操作,而 CameraDevice 的功能則十分的單一,就是只負(fù)責(zé)建立相機(jī)連接的事務(wù),而更加細(xì)化的相機(jī)操作則交給了稍后會介紹的 CameraCaptureSession 。
7) SurfaceSurface 是一塊用于填充圖像數(shù)據(jù)的內(nèi)存空間,例如你可以使用 SurfaceView 的 Surface 接收每一幀預(yù)覽數(shù)據(jù)用于顯示預(yù)覽畫面,也可以使用 ImageReader 的 Surface 接收 JPEG 或 YUV 數(shù)據(jù) 。每一個 Surface 都可以有自己的尺寸和數(shù)據(jù)格式,你可以從 CameraCharacteristics 獲取某一個數(shù)據(jù)格式支持的尺寸列表 。
8) CameraCaptureSessionCameraCaptureSession 實際上就是配置了目標(biāo) Surface 的 Pipeline 實例,我們在使用相機(jī)功能之前必須先創(chuàng)建 CameraCaptureSession 實例 。一個 CameraDevice 一次只能開啟一個 CameraCaptureSession,絕大部分的相機(jī)操作都是通過向 CameraCaptureSession 提交一個 Capture 請求實現(xiàn)的,例如拍照、連拍、設(shè)置閃光燈模式、觸摸對焦、顯示預(yù)覽畫面等等 。
9 ) CaptureRequest
CaptureRequest 是向 CameraCaptureSession 提交 Capture 請求時的信息載體,其內(nèi)部包括了本次 Capture 的參數(shù)配置和接收圖像數(shù)據(jù)的 Surface 。CaptureRequest 可以配置的信息非常多,包括圖像格式、圖像分辨率、傳感器控制、閃光燈控制、3A 控制等等,可以說絕大部分的相機(jī)參數(shù)都是通過 CaptureRequest 配置的 。
值得注意的是每一個 CaptureRequest 表示一幀畫面的操作,這意味著你可以精確控制每一幀的 Capture 操作 。
以上關(guān)于本文的內(nèi)容,僅作參考!溫馨提示:如遇健康、疾病相關(guān)的問題,請您及時就醫(yī)或請專業(yè)人士給予相關(guān)指導(dǎo)!
「愛刨根生活網(wǎng)」www.malaban59.cn小編還為您精選了以下內(nèi)容,希望對您有所幫助:- win10獲取system權(quán)限 windows虛機(jī)無法獲取ip
- 蘋果激活鎖解除方法 appid沒有權(quán)限
- 手機(jī)里面的nfc使用方法 nfc門禁卡模擬器免root
- 文件管理訪問限制 查看文件夾權(quán)限命令
- 自帶內(nèi)存跑步聽歌不用帶手機(jī) 跑步不用帶手機(jī)也能聽歌
- win10自帶系統(tǒng)遷移工具 win10遷移到固態(tài)硬盤詳細(xì)教程
- dnf端口輔助免費權(quán)限 dnf端口輔助什么意思
- 免root狀態(tài)欄美化神器 android狀態(tài)欄尺寸
- 獲取管理員權(quán)限win10的步驟 win10提升管理員權(quán)限的方法
- linux普通用戶修改root密碼 linux修改root密碼命令
