summaryrefslogtreecommitdiffstats
path: root/src/multimedia/platform/android/mediacapture/qandroidcamerasession.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/multimedia/platform/android/mediacapture/qandroidcamerasession.cpp')
-rw-r--r--src/multimedia/platform/android/mediacapture/qandroidcamerasession.cpp66
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: