在我的android相機應用程序中,我使用了camera2 api。應用程序不顯示相機的預覽,並且我已經以某種方式實現了它,當用戶界面上的按鈕被按下時,它會拍攝一張圖像。但問題在於自動對焦和自動曝光。簡單地說,我需要相機始終專注於視圖的中間。所以建立請求時,我添加以下屬性:Android Camera2:自動對焦和曝光
captureBuilder.set(CaptureRequest.CONTROL_AF_MODE, CaptureRequest.CONTROL_AF_MODE_AUTO);
captureBuilder.set(CaptureRequest.CONTROL_AE_MODE, CaptureRequest.CONTROL_AE_MODE_ON);
captureBuilder.set(CaptureRequest.CONTROL_AWB_MODE, CaptureRequest.CONTROL_AWB_MODE_AUTO);
captureBuilder.set(CaptureRequest.CONTROL_AF_TRIGGER, CameraMetadata.CONTROL_AF_TRIGGER_START);
captureBuilder.set(CaptureRequest.CONTROL_AE_PRECAPTURE_TRIGGER, CameraMetadata.CONTROL_AE_PRECAPTURE_TRIGGER_START);
但問題仍然是圖像不聚焦。
我有幾個問題:
我需要實現內部CameraCaptureSession.CaptureCallback
的方法一些檢查?
我還注意到onImageAvailable
被ImageReader.OnImageAvailableListener
所調用,onCaptureProgressed
的方法CameraCaptureSession.CaptureCallback
沒有被觸發。
我在這裏失蹤的是什麼?我是否需要實現一個線程才能等待攝像機聚焦,然後按下拍攝按鈕時纔會開始。
請注意,此應用程序沒有相機預覽。
是的,我正在運行一個捕獲請求。如果我在後臺運行重複請求,這意味着相機總是正確的?就像我們在拍照時看預覽一樣。所以,如果我理解正確,如果應用程序是這樣做的,從長遠來看,它會消耗大量的功率? – KTB
如果有的話,它會像一個單一的請求,但在拍照之前,它會嘗試着重點? – KTB
如果您願意,您可以在用戶點擊快門按鈕時打開相機,但這樣會有明顯的延遲。開機需要約1秒,將測光/對焦聚焦幾百毫秒,然後您可以拍攝照片。如果你想使用閃光燈,你仍然需要運行一個重複請求,直到自動對焦好,然後啓動預捕獲序列。 –