From 848defbcaa43dc838c0361185c2fbb05ce6f2ccb Mon Sep 17 00:00:00 2001 From: Matthew Date: Wed, 24 Apr 2024 11:21:25 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=9E=E7=8E=B0=E6=8B=8D=E7=85=A7=E6=94=BE?= =?UTF-8?q?=E5=A4=A7=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/cpp/PhoneDevice.cpp | 4 ++++ app/src/main/cpp/camera2/ndkcamera.cpp | 9 +++++++++ app/src/main/cpp/camera2/ndkcamera.h | 4 +++- app/src/main/java/com/xypower/mpapp/ChannelActivity.java | 6 ++++++ 4 files changed, 22 insertions(+), 1 deletion(-) diff --git a/app/src/main/cpp/PhoneDevice.cpp b/app/src/main/cpp/PhoneDevice.cpp index de6d7ad2..ab25e480 100644 --- a/app/src/main/cpp/PhoneDevice.cpp +++ b/app/src/main/cpp/PhoneDevice.cpp @@ -896,6 +896,8 @@ bool CPhoneDevice::TakePhoto(const IDevice::PHOTO_INFO& photoInfo, const vector< mOsds = osds; NdkCamera::CAMERA_PARAMS params; + memset(¶ms, 0, sizeof(params)); + params.sceneMode = mPhotoInfo.sceneMode; params.autoFocus = mPhotoInfo.autoFocus; params.autoExposure = mPhotoInfo.autoExposure; @@ -903,6 +905,8 @@ bool CPhoneDevice::TakePhoto(const IDevice::PHOTO_INFO& photoInfo, const vector< params.exposureTime = mPhotoInfo.exposureTime; params.sensibility = mPhotoInfo.sensibility; params.orientation = mPhotoInfo.orientation; + params.zoom = mPhotoInfo.zoom; + params.zoomRatio = mPhotoInfo.zoomRatio; // GpioControl::EnableGpio(CMD_SET_CAM_3V3_EN_STATE, true); bool res = false; diff --git a/app/src/main/cpp/camera2/ndkcamera.cpp b/app/src/main/cpp/camera2/ndkcamera.cpp index 006324c0..437190e0 100644 --- a/app/src/main/cpp/camera2/ndkcamera.cpp +++ b/app/src/main/cpp/camera2/ndkcamera.cpp @@ -408,6 +408,15 @@ int NdkCamera::open(const std::string& cameraId) { } m_imagesCaptured = 0; + + if (m_params.zoom) + { + float zoomRatio = m_params.zoomRatio; + // uint8_t afMode = ACAMERA_CONTROL_AF_MODE_AUTO; + status = ACaptureRequest_setEntry_float(capture_request, ACAMERA_CONTROL_ZOOM_RATIO, 1, &zoomRatio); + + } + if (afSupported && m_params.autoFocus) { // uint8_t afMode = ACAMERA_CONTROL_AF_MODE_CONTINUOUS_VIDEO; uint8_t afMode = ACAMERA_CONTROL_AF_MODE_CONTINUOUS_PICTURE; diff --git a/app/src/main/cpp/camera2/ndkcamera.h b/app/src/main/cpp/camera2/ndkcamera.h index c52cb327..91b580d3 100644 --- a/app/src/main/cpp/camera2/ndkcamera.h +++ b/app/src/main/cpp/camera2/ndkcamera.h @@ -74,9 +74,11 @@ public: unsigned int autoExposure : 1; unsigned int orientation:3; unsigned int focusTimeout : 14; // milli-seconds 65535 / 4 - unsigned int reserved : 8; + unsigned int zoom; + unsigned int reserved : 7; unsigned int exposureTime; // ms unsigned int sensibility; + float zoomRatio; }; struct CAPTURE_RESULT diff --git a/app/src/main/java/com/xypower/mpapp/ChannelActivity.java b/app/src/main/java/com/xypower/mpapp/ChannelActivity.java index 9a39066d..448a06b5 100644 --- a/app/src/main/java/com/xypower/mpapp/ChannelActivity.java +++ b/app/src/main/java/com/xypower/mpapp/ChannelActivity.java @@ -258,6 +258,7 @@ public class ChannelActivity extends AppCompatActivity { jsonObject.put("sceneMode", sceneMode); jsonObject.put("exposureTime", Integer.parseInt(binding.exposuretime.getText().toString())); jsonObject.put("sensibility", Integer.parseInt(binding.sensitivity.getText().toString())); + jsonObject.put("zoom", binding.btnZoom.isChecked() ? 1 : 0); jsonObject.put("orientation", binding.orientations.getSelectedItemPosition()); jsonObject.put("recognization", binding.recognization.getSelectedItemPosition()); // binding.cameraId.setText(jsonObject.optString("cameraId", "")); @@ -266,6 +267,11 @@ public class ChannelActivity extends AppCompatActivity { } else { jsonObject.remove("cameraId"); } + if (binding.zoomRatio.getSelectedItemPosition() >= 0) { + jsonObject.put("zoomRatio", Float.valueOf(binding.zoomRatio.getSelectedItem().toString())); + } else { + jsonObject.put("zoomRatio", 0f); + } if (!TextUtils.isEmpty(binding.resolutionCX.getText().toString())) { jsonObject.put("resolutionCX", Integer.parseInt(binding.resolutionCX.getText().toString())); } else {