summaryrefslogtreecommitdiffstats
path: root/src/plugins/android
diff options
context:
space:
mode:
authorYoann Lopes <yoann.lopes@digia.com>2013-10-04 15:08:42 +0200
committerThe Qt Project <gerrit-noreply@qt-project.org>2013-10-09 18:02:44 +0200
commitb49746b588a84c250a99f1af912940ee8dea5dcd (patch)
treecbef892bf54bee6fa1da0bc2f496f98b721cf77c /src/plugins/android
parenta1cd3c9274789a8735bf5c02094c5c4034992aa6 (diff)
Android: fix media recording location.
When letting the plugin decide where to save the recorded media, doing several recordings would always use the same output file instead of creating a different one every time. Change-Id: If352257d6c91ada8565c1463820321f84c9bb92f Reviewed-by: Christian Stromme <christian.stromme@digia.com>
Diffstat (limited to 'src/plugins/android')
-rw-r--r--src/plugins/android/src/mediacapture/qandroidcapturesession.cpp39
-rw-r--r--src/plugins/android/src/mediacapture/qandroidcapturesession.h3
2 files changed, 24 insertions, 18 deletions
diff --git a/src/plugins/android/src/mediacapture/qandroidcapturesession.cpp b/src/plugins/android/src/mediacapture/qandroidcapturesession.cpp
index ec458eddb..3962baba8 100644
--- a/src/plugins/android/src/mediacapture/qandroidcapturesession.cpp
+++ b/src/plugins/android/src/mediacapture/qandroidcapturesession.cpp
@@ -110,25 +110,27 @@ void QAndroidCaptureSession::setAudioInput(const QString &input)
QUrl QAndroidCaptureSession::outputLocation() const
{
- return m_outputLocation;
+ return m_actualOutputLocation;
}
bool QAndroidCaptureSession::setOutputLocation(const QUrl &location)
{
- if (m_outputLocation == location)
+ if (m_requestedOutputLocation == location)
return false;
- m_outputLocation = location;
+ m_actualOutputLocation = QUrl();
+ m_requestedOutputLocation = location;
- if (m_outputLocation.isEmpty())
+ if (m_requestedOutputLocation.isEmpty())
return true;
- if (m_outputLocation.isValid() && (m_outputLocation.isLocalFile() || m_outputLocation.isRelative())) {
- emit actualLocationChanged(m_outputLocation);
+ if (m_requestedOutputLocation.isValid()
+ && (m_requestedOutputLocation.isLocalFile() || m_requestedOutputLocation.isRelative())) {
+ emit actualLocationChanged(m_requestedOutputLocation);
return true;
}
- m_outputLocation = QUrl();
+ m_requestedOutputLocation = QUrl();
return false;
}
@@ -213,15 +215,18 @@ bool QAndroidCaptureSession::start()
// Set output file
- QString filePath = m_mediaStorageLocation.generateFileName(m_outputLocation.isLocalFile() ? m_outputLocation.toLocalFile()
- : m_outputLocation.toString(),
- m_cameraSession ? QAndroidMediaStorageLocation::Camera
- : QAndroidMediaStorageLocation::Audio,
- m_cameraSession ? QLatin1String("VID_")
- : QLatin1String("REC_"),
- m_containerFormat);
- m_outputLocation = QUrl::fromLocalFile(filePath);
- emit actualLocationChanged(m_outputLocation);
+ QString filePath = m_mediaStorageLocation.generateFileName(
+ m_requestedOutputLocation.isLocalFile() ? m_requestedOutputLocation.toLocalFile()
+ : m_requestedOutputLocation.toString(),
+ m_cameraSession ? QAndroidMediaStorageLocation::Camera
+ : QAndroidMediaStorageLocation::Audio,
+ m_cameraSession ? QLatin1String("VID_")
+ : QLatin1String("REC_"),
+ m_containerFormat);
+
+ m_actualOutputLocation = QUrl::fromLocalFile(filePath);
+ if (m_actualOutputLocation != m_requestedOutputLocation)
+ emit actualLocationChanged(m_actualOutputLocation);
m_mediaRecorder->setOutputFile(filePath);
@@ -280,7 +285,7 @@ void QAndroidCaptureSession::stop(bool error)
// if the media is saved into the standard media location, register it
// with the Android media scanner so it appears immediately in apps
// such as the gallery.
- QString mediaPath = m_outputLocation.toLocalFile();
+ QString mediaPath = m_actualOutputLocation.toLocalFile();
QString standardLoc = m_cameraSession ? JMultimediaUtils::getDefaultMediaDirectory(JMultimediaUtils::DCIM)
: JMultimediaUtils::getDefaultMediaDirectory(JMultimediaUtils::Sounds);
if (mediaPath.startsWith(standardLoc))
diff --git a/src/plugins/android/src/mediacapture/qandroidcapturesession.h b/src/plugins/android/src/mediacapture/qandroidcapturesession.h
index 6d3645c13..fcd87cd02 100644
--- a/src/plugins/android/src/mediacapture/qandroidcapturesession.h
+++ b/src/plugins/android/src/mediacapture/qandroidcapturesession.h
@@ -160,7 +160,8 @@ private:
QMediaRecorder::State m_state;
QMediaRecorder::Status m_status;
- QUrl m_outputLocation;
+ QUrl m_requestedOutputLocation;
+ QUrl m_actualOutputLocation;
CaptureProfile m_defaultSettings;