如果已经拍照成功,则不上报错误,避免引起冲突

TempBranch
Matthew 9 months ago
parent c80c9e90f2
commit eee22756a3

@ -48,15 +48,7 @@ static void onDisconnected(void* context, ACameraDevice* device)
static void onError(void* context, ACameraDevice* device, int error) static void onError(void* context, ACameraDevice* device, int error)
{ {
if (ACAMERA_ERROR_CAMERA_DEVICE == error) ((NdkCamera*)context)->onError(device, error);
{
}
XYLOG(XYLOG_SEVERITY_ERROR, "CameraStatus::onError CameraId: %s err=%d", ACameraDevice_getId(device), error);
std::string msg = "NdkCamera error code=" + std::to_string(error);
((NdkCamera*)context)->on_error(msg);
// __android_log_print(ANDROID_LOG_WARN, "NdkCamera", "onError %p %d", device, error);
} }
static void onImageAvailable(void* context, AImageReader* reader) static void onImageAvailable(void* context, AImageReader* reader)
@ -113,6 +105,7 @@ NdkCamera::NdkCamera(int32_t width, int32_t height, const NdkCamera::CAMERA_PARA
m_params = params; m_params = params;
m_firstFrame = true; m_firstFrame = true;
m_photoTaken = false;
mWidth = width; mWidth = width;
mHeight = height; mHeight = height;
@ -551,7 +544,7 @@ int NdkCamera::open(const std::string& cameraId) {
ACameraDevice_StateCallbacks camera_device_state_callbacks; ACameraDevice_StateCallbacks camera_device_state_callbacks;
camera_device_state_callbacks.context = this; camera_device_state_callbacks.context = this;
camera_device_state_callbacks.onDisconnected = ::onDisconnected; camera_device_state_callbacks.onDisconnected = ::onDisconnected;
camera_device_state_callbacks.onError = onError; camera_device_state_callbacks.onError = ::onError;
status = ACameraManager_openCamera(camera_manager, cameraId.c_str(), &camera_device_state_callbacks, &camera_device); status = ACameraManager_openCamera(camera_manager, cameraId.c_str(), &camera_device_state_callbacks, &camera_device);
if (status != ACAMERA_OK) if (status != ACAMERA_OK)
@ -979,6 +972,7 @@ void NdkCamera::onImageAvailable(AImageReader* reader)
return; return;
} }
m_photoTaken = true;
XYLOG(XYLOG_SEVERITY_INFO, "Photo Taken: AES=%u AFS=%u AWBS=%u", (uint32_t)mFinalResult.aeState, (uint32_t)mFinalResult.awbState, (uint32_t)mFinalResult.afState); XYLOG(XYLOG_SEVERITY_INFO, "Photo Taken: AES=%u AFS=%u AWBS=%u", (uint32_t)mFinalResult.aeState, (uint32_t)mFinalResult.awbState, (uint32_t)mFinalResult.afState);
mFinalResult.duration = GetMicroTimeStamp() - m_startTime; mFinalResult.duration = GetMicroTimeStamp() - m_startTime;
@ -1524,8 +1518,25 @@ void NdkCamera::onCaptureFailed(ACameraCaptureSession* session, ACaptureRequest*
XYLOG(XYLOG_SEVERITY_WARNING, "onCaptureFailed session=%p request=%p reason=%d", session, request, failure->reason); XYLOG(XYLOG_SEVERITY_WARNING, "onCaptureFailed session=%p request=%p reason=%d", session, request, failure->reason);
char msg[32] = { 0 }; char msg[32] = { 0 };
snprintf(msg, sizeof(msg), "CaptureFailed reason=%d", failure->reason); snprintf(msg, sizeof(msg), "CaptureFailed reason=%d PhotoTaken=%d", failure->reason, m_photoTaken ? 1 : 0);
on_error(msg); if (!m_photoTaken)
{
on_error(msg);
}
}
void NdkCamera::onError(ACameraDevice* device, int error)
{
if (ACAMERA_ERROR_CAMERA_DEVICE == error)
{
}
XYLOG(XYLOG_SEVERITY_ERROR, "CameraStatus::onError CameraId: %s err=%d PhotoTaken=%d", ACameraDevice_getId(device), error, m_photoTaken ? 1 : 0);
if (!m_photoTaken)
{
std::string msg = "NdkCamera error code=" + std::to_string(error);
on_error(msg);
}
} }
void NdkCamera::onAvailabilityCallback(const char* cameraId) void NdkCamera::onAvailabilityCallback(const char* cameraId)

@ -128,6 +128,7 @@ public:
void onUnavailabilityCallback(const char* cameraId); void onUnavailabilityCallback(const char* cameraId);
virtual void onImageAvailable(AImageReader* reader); virtual void onImageAvailable(AImageReader* reader);
virtual int32_t getOutputFormat() const; virtual int32_t getOutputFormat() const;
virtual bool on_image(cv::Mat& rgb); virtual bool on_image(cv::Mat& rgb);
virtual void on_error(const std::string& msg); virtual void on_error(const std::string& msg);
virtual void on_image(const unsigned char* nv21, int nv21_width, int nv21_height); virtual void on_image(const unsigned char* nv21, int nv21_width, int nv21_height);
@ -137,6 +138,7 @@ public:
void onCaptureCompleted(ACameraCaptureSession* session, ACaptureRequest* request, const ACameraMetadata* result); void onCaptureCompleted(ACameraCaptureSession* session, ACaptureRequest* request, const ACameraMetadata* result);
void onCaptureFailed(ACameraCaptureSession* session, ACaptureRequest* request, ACameraCaptureFailure* failure); void onCaptureFailed(ACameraCaptureSession* session, ACaptureRequest* request, ACameraCaptureFailure* failure);
void onSessionReady(ACameraCaptureSession *session); void onSessionReady(ACameraCaptureSession *session);
void onError(ACameraDevice* device, int error);
const CAPTURE_RESULT& getCaptureResult() const const CAPTURE_RESULT& getCaptureResult() const
{ {
@ -154,6 +156,7 @@ protected:
int camera_facing; int camera_facing;
int camera_orientation; int camera_orientation;
bool m_firstFrame; bool m_firstFrame;
bool m_photoTaken;
int32_t mWidth; int32_t mWidth;
int32_t mHeight; int32_t mHeight;
std::string mCameraId; std::string mCameraId;

Loading…
Cancel
Save