diff --git a/app/src/main/cpp/camera2/ndkcamera.cpp b/app/src/main/cpp/camera2/ndkcamera.cpp index ed0e852d..0e654359 100644 --- a/app/src/main/cpp/camera2/ndkcamera.cpp +++ b/app/src/main/cpp/camera2/ndkcamera.cpp @@ -875,6 +875,19 @@ void NdkCamera::onCaptureCompleted(ACameraCaptureSession* session, ACaptureReque if (m_imagesCaptured == ~0) { + if (m_params.autoExposure != 0) + { + val = { 0 }; + status = ACameraMetadata_getConstEntry(result, ACAMERA_CONTROL_AE_STATE, &val); + mResult.aeState = (status == ACAMERA_OK) ? val.data.u8[0] : ACAMERA_CONTROL_AE_STATE_INACTIVE; + if (mResult.aeState == ACAMERA_CONTROL_AE_STATE_PRECAPTURE) + { + uint8_t aePrecatureTrigger = ACAMERA_CONTROL_AE_PRECAPTURE_TRIGGER_START; + status = ACaptureRequest_setEntry_u8(capture_request, ACAMERA_CONTROL_AE_PRECAPTURE_TRIGGER, 1, &aePrecatureTrigger); + return; + } + } + if (afSupported && (m_params.autoFocus != 0)) { val = { 0 }; @@ -907,9 +920,7 @@ void NdkCamera::onCaptureCompleted(ACameraCaptureSession* session, ACaptureReque return; } - val = { 0 }; - status = ACameraMetadata_getConstEntry(result, ACAMERA_CONTROL_AE_STATE, &val); - mResult.aeState = (status == ACAMERA_OK) ? val.data.u8[0] : ACAMERA_CONTROL_AE_STATE_INACTIVE; + val = { 0 }; status = ACameraMetadata_getConstEntry(result, ACAMERA_SENSOR_EXPOSURE_TIME, &val);