diff --git a/app/src/main/cpp/PhoneDevice.cpp b/app/src/main/cpp/PhoneDevice.cpp index daaa2d0d..a85224a4 100644 --- a/app/src/main/cpp/PhoneDevice.cpp +++ b/app/src/main/cpp/PhoneDevice.cpp @@ -1171,6 +1171,7 @@ bool CPhoneDevice::TakePhoto(const IDevice::PHOTO_INFO& photoInfo, const vector< params.orientation = mPhotoInfo.orientation; params.zoom = mPhotoInfo.zoom; params.zoomRatio = mPhotoInfo.zoomRatio; + params.requestTemplate; = mPhotoInfo.requestTemplate; if (photoInfo.ldrEnabled) { diff --git a/app/src/main/cpp/camera2/ndkcamera.cpp b/app/src/main/cpp/camera2/ndkcamera.cpp index 13fd48d9..f98bd097 100644 --- a/app/src/main/cpp/camera2/ndkcamera.cpp +++ b/app/src/main/cpp/camera2/ndkcamera.cpp @@ -554,7 +554,7 @@ int NdkCamera::open(const std::string& cameraId) { m_params.autoExposure) ? TEMPLATE_PREVIEW : TEMPLATE_STILL_CAPTURE; - templateId = TEMPLATE_STILL_CAPTURE; + templateId = m_param.requestTemplate; status = ACameraDevice_createCaptureRequest(camera_device, templateId, &capture_request); int32_t fpsRange[2] = {1,10}; @@ -1255,7 +1255,6 @@ void NdkCamera::onCaptureCompleted(ACameraCaptureSession* session, ACaptureReque } } - if (m_imagesCaptured != 0 || camera_facing == 2) { return; @@ -1305,19 +1304,19 @@ void NdkCamera::onCaptureCompleted(ACameraCaptureSession* session, ACaptureReque val = {0}; status = ACameraMetadata_getConstEntry(result, ACAMERA_SENSOR_SENSITIVITY, &val); - mResult.sensitivity = *(val.data.i32); + mResult.sensitivity = (status == ACAMERA_OK) ? *(val.data.i32) : 0; val = {0}; status = ACameraMetadata_getConstEntry(result, ACAMERA_CONTROL_SCENE_MODE, &val); - mResult.sceneMode = status == ACAMERA_OK ? *(val.data.u8) : 0; + mResult.sceneMode = (status == ACAMERA_OK) ? *(val.data.u8) : 0; val = {0}; status = ACameraMetadata_getConstEntry(result, ACAMERA_CONTROL_AF_MODE, &val); - mResult.autoFocus = *(val.data.u8); + mResult.autoFocus = (status == ACAMERA_OK) ? *(val.data.u8) : 0; val = {0}; status = ACameraMetadata_getConstEntry(result, ACAMERA_CONTROL_AE_EXPOSURE_COMPENSATION, &val); - mResult.compensation = *(val.data.i32); + mResult.compensation = (status == ACAMERA_OK) ? *(val.data.i32) : 0; ALOGD("onCaptureCompleted EXPO=%lld, FD=%f camera id=%s, AE=%s AFS=%u AES=%u", exTime, focusDistance, mCameraId.c_str(), ((aeMode == 1) ? "ON" : "OFF"), mResult.afState, mResult.aeState); diff --git a/app/src/main/cpp/camera2/ndkcamera.h b/app/src/main/cpp/camera2/ndkcamera.h index 24b73da2..48524cc5 100644 --- a/app/src/main/cpp/camera2/ndkcamera.h +++ b/app/src/main/cpp/camera2/ndkcamera.h @@ -81,6 +81,7 @@ public: unsigned int sensitivity; int compensation; float zoomRatio; + uint8_t requestTemplate; }; struct CAPTURE_RESULT