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

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)
{
if (ACAMERA_ERROR_CAMERA_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);
((NdkCamera*)context)->onError(device, error);
}
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_firstFrame = true;
m_photoTaken = false;
mWidth = width;
mHeight = height;
@ -551,7 +544,7 @@ int NdkCamera::open(const std::string& cameraId) {
ACameraDevice_StateCallbacks camera_device_state_callbacks;
camera_device_state_callbacks.context = this;
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);
if (status != ACAMERA_OK)
@ -979,6 +972,7 @@ void NdkCamera::onImageAvailable(AImageReader* reader)
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);
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);
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);
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)

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

Loading…
Cancel
Save