自 CameraX 1.2 起,零延遲快門已可做為拍攝模式。啟用零延遲快門功能,相較於預設拍攝模式,大幅縮短延遲時間,因此能夠準確捕捉所有精彩時刻。
啟用零延遲快門
如要啟用零延遲快門,請將 CAPTURE_MODE_ZERO_SHOT_LAG
傳遞至 ImageCapture.Builder.setCaptureMode()
。若無法成功傳遞,setCaptureMode()
會改回使用 CAPTURE_MODE_MINIMIZE_LATENCY
。
如要進一步瞭解拍攝模式,請參閱圖像拍攝指南。
運作方式
零延遲快門會使用環形緩衝區,儲存最近三個拍攝畫面。當使用者按下拍攝按鈕時,CameraX 會叫用 takePicture()
,而環形緩衝區則會擷取時間戳記最接近按下按鈕時間的拍攝畫面。接著,CameraX 會重新處理拍攝工作階段,從該畫面產生圖片,並以 JPEG 格式儲存到磁碟。
必要條件
啟用零延遲快門前,請先使用 isZslSupported()
判斷裝置是否符合以下需求:
- 指定 Android 6.0 以上版本 (API 級別 23 以上)。
- 支援
PRIVATE
重新處理功能。
如果裝置不符合最低需求,CameraX 會改回採用 CAPTURE_MODE_MINIMIZE_LATENCY
。
零延遲快門僅適用於圖片拍攝。您無法針對錄影或相機擴充功能,啟用這類快門。
最後,由於使用閃光燈會導致延遲時間拉長,因此如果閃光燈已開啟或處於自動模式,零快門延遲就無法運作。如要進一步瞭解如何設定閃光燈模式,請參閱 setFlashMode()
。