diff options
Diffstat (limited to 'src/multimedia/platform/android/mediacapture/qandroidcamerasession.cpp')
-rw-r--r-- | src/multimedia/platform/android/mediacapture/qandroidcamerasession.cpp | 66 |
1 files changed, 19 insertions, 47 deletions
diff --git a/src/multimedia/platform/android/mediacapture/qandroidcamerasession.cpp b/src/multimedia/platform/android/mediacapture/qandroidcamerasession.cpp index a5cb1a467..e15a04cc6 100644 --- a/src/multimedia/platform/android/mediacapture/qandroidcamerasession.cpp +++ b/src/multimedia/platform/android/mediacapture/qandroidcamerasession.cpp @@ -65,7 +65,6 @@ QAndroidCameraSession::QAndroidCameraSession(QObject *parent) , m_nativeOrientation(0) , m_videoOutput(0) , m_savedState(-1) - , m_status(QCamera::InactiveStatus) , m_previewStarted(false) , m_lastImageCaptureId(0) , m_readyForCapture(false) @@ -108,7 +107,6 @@ void QAndroidCameraSession::setActive(bool active) return; m_active = active; - emit activeChanged(m_active); // If the application is inactive, the camera shouldn't be started. Save the desired state // instead and it will be set when the application becomes active. @@ -116,6 +114,8 @@ void QAndroidCameraSession::setActive(bool active) setActiveHelper(active); else m_savedState = active; + + emit activeChanged(m_active); } void QAndroidCameraSession::setActiveHelper(bool active) @@ -125,10 +125,7 @@ void QAndroidCameraSession::setActiveHelper(bool active) close(); } else { if (!m_camera && !open()) { - m_active = false; emit error(QCamera::CameraError, QStringLiteral("Failed to open camera")); - m_status = QCamera::InactiveStatus; - emit statusChanged(m_status); return; } startPreview(); @@ -161,9 +158,6 @@ bool QAndroidCameraSession::open() { close(); - m_status = QCamera::StartingStatus; - emit statusChanged(m_status); - m_camera = AndroidCamera::open(m_selectedCamera); if (m_camera) { @@ -188,7 +182,7 @@ bool QAndroidCameraSession::open() m_camera->notifyNewFrames(m_previewCallback); emit opened(); - emit statusChanged(m_status); + setActive(true); } return m_camera != 0; @@ -201,9 +195,6 @@ void QAndroidCameraSession::close() stopPreview(); - m_status = QCamera::StoppingStatus; - emit statusChanged(m_status); - m_readyForCapture = false; m_currentImageCaptureId = -1; m_currentImageCaptureFileName.clear(); @@ -213,8 +204,7 @@ void QAndroidCameraSession::close() delete m_camera; m_camera = 0; - m_status = QCamera::InactiveStatus; - emit statusChanged(m_status); + setActive(false); } void QAndroidCameraSession::setVideoOutput(QAndroidVideoOutput *output) @@ -370,9 +360,6 @@ bool QAndroidCameraSession::startPreview() || (m_videoOutput->surfaceHolder() && !m_camera->setPreviewDisplay(m_videoOutput->surfaceHolder()))) return false; - m_status = QCamera::StartingStatus; - emit statusChanged(m_status); - applyImageSettings(); applyResolution(m_actualImageSettings.resolution()); @@ -394,9 +381,6 @@ void QAndroidCameraSession::stopPreview() if (!m_camera || !m_previewStarted) return; - m_status = QCamera::StoppingStatus; - emit statusChanged(m_status); - AndroidMultimediaUtils::enableOrientationListener(false); m_camera->stopPreview(); @@ -463,7 +447,7 @@ void QAndroidCameraSession::applyImageSettings() return; // only supported format right now. - m_actualImageSettings.setFormat(QCameraImageCapture::JPEG); + m_actualImageSettings.setFormat(QImageCapture::JPEG); const QSize requestedResolution = m_requestedImageSettings.resolution(); const QList<QSize> supportedResolutions = m_camera->getSupportedPictureSizes(); @@ -485,19 +469,19 @@ void QAndroidCameraSession::applyImageSettings() int jpegQuality = 100; switch (m_requestedImageSettings.quality()) { - case QCameraImageCapture::VeryLowQuality: + case QImageCapture::VeryLowQuality: jpegQuality = 20; break; - case QCameraImageCapture::LowQuality: + case QImageCapture::LowQuality: jpegQuality = 40; break; - case QCameraImageCapture::NormalQuality: + case QImageCapture::NormalQuality: jpegQuality = 60; break; - case QCameraImageCapture::HighQuality: + case QImageCapture::HighQuality: jpegQuality = 80; break; - case QCameraImageCapture::VeryHighQuality: + case QImageCapture::VeryHighQuality: jpegQuality = 100; break; } @@ -506,7 +490,7 @@ void QAndroidCameraSession::applyImageSettings() bool QAndroidCameraSession::isReadyForCapture() const { - return m_status == QCamera::ActiveStatus && m_readyForCapture; + return isActive() && m_readyForCapture; } void QAndroidCameraSession::setReadyForCapture(bool ready) @@ -523,7 +507,7 @@ int QAndroidCameraSession::capture(const QString &fileName) ++m_lastImageCaptureId; if (!isReadyForCapture()) { - emit imageCaptureError(m_lastImageCaptureId, QCameraImageCapture::NotReadyError, + emit imageCaptureError(m_lastImageCaptureId, QImageCapture::NotReadyError, tr("Camera not ready")); return m_lastImageCaptureId; } @@ -546,7 +530,7 @@ int QAndroidCameraSession::capture(const QString &fileName) void QAndroidCameraSession::onCameraTakePictureFailed() { - emit imageCaptureError(m_currentImageCaptureId, QCameraImageCapture::ResourceError, + emit imageCaptureError(m_currentImageCaptureId, QImageCapture::ResourceError, tr("Failed to capture image")); // Preview needs to be restarted and the preview call back must be setup again @@ -616,17 +600,12 @@ void QAndroidCameraSession::onCameraPictureCaptured(const QByteArray &data) void QAndroidCameraSession::onCameraPreviewStarted() { - if (m_status == QCamera::StartingStatus) { - m_status = QCamera::ActiveStatus; - emit statusChanged(m_status); - } - setReadyForCapture(true); } void QAndroidCameraSession::onCameraPreviewFailedToStart() { - if (m_status == QCamera::StartingStatus) { + if (isActive()) { Q_EMIT error(QCamera::CameraError, tr("Camera preview failed to start.")); AndroidMultimediaUtils::enableOrientationListener(false); @@ -638,20 +617,14 @@ void QAndroidCameraSession::onCameraPreviewFailedToStart() } m_previewStarted = false; - m_status = QCamera::InactiveStatus; - emit statusChanged(m_status); - + setActive(false); setReadyForCapture(false); } } void QAndroidCameraSession::onCameraPreviewStopped() { - if (m_status == QCamera::StoppingStatus) { - m_status = QCamera::InactiveStatus; - emit statusChanged(m_status); - } - + setActive(false); setReadyForCapture(false); } @@ -681,11 +654,11 @@ void QAndroidCameraSession::processCapturedImage(int id, emit imageSaved(id, actualFileName); } else { - emit imageCaptureError(id, QCameraImageCapture::OutOfSpaceError, file.errorString()); + emit imageCaptureError(id, QImageCapture::OutOfSpaceError, file.errorString()); } } else { const QString errorMessage = tr("Could not open destination file: %1").arg(actualFileName); - emit imageCaptureError(id, QCameraImageCapture::ResourceError, errorMessage); + emit imageCaptureError(id, QImageCapture::ResourceError, errorMessage); } } else { QVideoFrame frame(new QMemoryVideoBuffer(data, -1), QVideoFrameFormat(resolution, QVideoFrameFormat::Format_Jpeg)); @@ -738,8 +711,7 @@ void QAndroidCameraSession::onApplicationStateChanged(Qt::ApplicationState state if (!m_keepActive && m_active) { m_savedState = m_active; close(); - m_active = false; - emit activeChanged(m_active); + setActive(false); } break; case Qt::ApplicationActive: |