3package org.qtproject.qt.android.multimedia.qffmpeg;
5import android.hardware.camera2.CameraAccessException;
6import android.hardware.camera2.CameraCaptureSession;
7import android.hardware.camera2.CaptureFailure;
8import android.hardware.camera2.CaptureResult;
9import android.hardware.camera2.CaptureRequest;
10import android.hardware.camera2.TotalCaptureResult;
17class CameraStillPhotoPrecaptureCallback
extends CameraCaptureSession.CaptureCallback {
18 QtCamera2 mMainCameraObject =
null;
22 CameraSettings mCameraSettings =
null;
23 boolean mWaitForAutoFocus =
false;
24 boolean mWaitForAutoExposure =
false;
30 boolean mShouldProcessIncomingEvents =
true;
38 CameraStillPhotoPrecaptureCallback(
39 QtCamera2 mainCameraObject,
40 CameraSettings cameraSettings,
41 boolean waitForAutoFocus,
42 boolean waitForAutoExposure)
44 assert(mainCameraObject !=
null);
45 assert(cameraSettings !=
null);
47 mMainCameraObject = mainCameraObject;
48 mCameraSettings = cameraSettings;
49 mWaitForAutoFocus = waitForAutoFocus;
50 mWaitForAutoExposure = waitForAutoExposure;
53 boolean capturingWithAutoFlash() {
54 return mWaitForAutoExposure
55 && mCameraSettings.mStillPhotoFlashMode == CaptureRequest.CONTROL_AE_MODE_ON_AUTO_FLASH;
58 private void onCaptureFailureEvent() {
59 mShouldProcessIncomingEvents =
false;
61 mMainCameraObject.onStillPhotoCaptureFailed(mMainCameraObject.mCameraId);
63 synchronized (mMainCameraObject.mSyncedMembers) {
64 mMainCameraObject.mSyncedMembers.mIsTakingStillPhoto =
false;
69 mMainCameraObject.setRepeatingRequestToPreview();
70 }
catch (CameraAccessException e) {
77 public void onCaptureFailed(
78 CameraCaptureSession session,
80 CaptureFailure failure)
82 onCaptureFailureEvent();
86 private PrecaptureOperation determinePrecaptureOperation(CaptureResult
result) {
93 if (capturingWithAutoFlash() && aeState == CaptureResult.CONTROL_AE_STATE_FLASH_REQUIRED) {
94 return PrecaptureOperation.RESUBMIT_WITH_FORCED_FLASH;
98 if (!mWaitForAutoFocus && !mWaitForAutoExposure) {
103 if (mWaitForAutoFocus && QtCamera2.afStateIsReadyForCapture(afState)
104 && !mWaitForAutoExposure)
110 if (!mWaitForAutoFocus
111 && mWaitForAutoExposure && QtCamera2.aeStateIsReadyForCapture(aeState))
117 if (mWaitForAutoFocus && QtCamera2.afStateIsReadyForCapture(afState)
118 && mWaitForAutoExposure && QtCamera2.aeStateIsReadyForCapture(aeState))
127 public void onCaptureCompleted(
128 CameraCaptureSession
s,
130 TotalCaptureResult
result)
132 if (!mShouldProcessIncomingEvents)
138 case FINALIZE_CAPTURE:
139 mMainCameraObject.finalizeStillPhoto(mCameraSettings);
141 case RESUBMIT_WITH_FORCED_FLASH:
143 CameraSettings newCameraSettings =
new CameraSettings(mCameraSettings);
144 newCameraSettings.mStillPhotoFlashMode = CaptureRequest.CONTROL_AE_MODE_ON_ALWAYS_FLASH;
145 mMainCameraObject.submitNewStillPhotoCapture(newCameraSettings);
151 }
catch (CameraAccessException e) {
152 onCaptureFailureEvent();
156 mShouldProcessIncomingEvents =
false;
QNetworkRequest request(url)
[0]