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>
This commit is contained in:
committed by
The Qt Project
parent
a1cd3c9274
commit
b49746b588
@@ -110,25 +110,27 @@ void QAndroidCaptureSession::setAudioInput(const QString &input)
|
|||||||
|
|
||||||
QUrl QAndroidCaptureSession::outputLocation() const
|
QUrl QAndroidCaptureSession::outputLocation() const
|
||||||
{
|
{
|
||||||
return m_outputLocation;
|
return m_actualOutputLocation;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool QAndroidCaptureSession::setOutputLocation(const QUrl &location)
|
bool QAndroidCaptureSession::setOutputLocation(const QUrl &location)
|
||||||
{
|
{
|
||||||
if (m_outputLocation == location)
|
if (m_requestedOutputLocation == location)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
m_outputLocation = location;
|
m_actualOutputLocation = QUrl();
|
||||||
|
m_requestedOutputLocation = location;
|
||||||
|
|
||||||
if (m_outputLocation.isEmpty())
|
if (m_requestedOutputLocation.isEmpty())
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
if (m_outputLocation.isValid() && (m_outputLocation.isLocalFile() || m_outputLocation.isRelative())) {
|
if (m_requestedOutputLocation.isValid()
|
||||||
emit actualLocationChanged(m_outputLocation);
|
&& (m_requestedOutputLocation.isLocalFile() || m_requestedOutputLocation.isRelative())) {
|
||||||
|
emit actualLocationChanged(m_requestedOutputLocation);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
m_outputLocation = QUrl();
|
m_requestedOutputLocation = QUrl();
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -213,15 +215,18 @@ bool QAndroidCaptureSession::start()
|
|||||||
|
|
||||||
|
|
||||||
// Set output file
|
// Set output file
|
||||||
QString filePath = m_mediaStorageLocation.generateFileName(m_outputLocation.isLocalFile() ? m_outputLocation.toLocalFile()
|
QString filePath = m_mediaStorageLocation.generateFileName(
|
||||||
: m_outputLocation.toString(),
|
m_requestedOutputLocation.isLocalFile() ? m_requestedOutputLocation.toLocalFile()
|
||||||
m_cameraSession ? QAndroidMediaStorageLocation::Camera
|
: m_requestedOutputLocation.toString(),
|
||||||
: QAndroidMediaStorageLocation::Audio,
|
m_cameraSession ? QAndroidMediaStorageLocation::Camera
|
||||||
m_cameraSession ? QLatin1String("VID_")
|
: QAndroidMediaStorageLocation::Audio,
|
||||||
: QLatin1String("REC_"),
|
m_cameraSession ? QLatin1String("VID_")
|
||||||
m_containerFormat);
|
: QLatin1String("REC_"),
|
||||||
m_outputLocation = QUrl::fromLocalFile(filePath);
|
m_containerFormat);
|
||||||
emit actualLocationChanged(m_outputLocation);
|
|
||||||
|
m_actualOutputLocation = QUrl::fromLocalFile(filePath);
|
||||||
|
if (m_actualOutputLocation != m_requestedOutputLocation)
|
||||||
|
emit actualLocationChanged(m_actualOutputLocation);
|
||||||
|
|
||||||
m_mediaRecorder->setOutputFile(filePath);
|
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
|
// if the media is saved into the standard media location, register it
|
||||||
// with the Android media scanner so it appears immediately in apps
|
// with the Android media scanner so it appears immediately in apps
|
||||||
// such as the gallery.
|
// such as the gallery.
|
||||||
QString mediaPath = m_outputLocation.toLocalFile();
|
QString mediaPath = m_actualOutputLocation.toLocalFile();
|
||||||
QString standardLoc = m_cameraSession ? JMultimediaUtils::getDefaultMediaDirectory(JMultimediaUtils::DCIM)
|
QString standardLoc = m_cameraSession ? JMultimediaUtils::getDefaultMediaDirectory(JMultimediaUtils::DCIM)
|
||||||
: JMultimediaUtils::getDefaultMediaDirectory(JMultimediaUtils::Sounds);
|
: JMultimediaUtils::getDefaultMediaDirectory(JMultimediaUtils::Sounds);
|
||||||
if (mediaPath.startsWith(standardLoc))
|
if (mediaPath.startsWith(standardLoc))
|
||||||
|
|||||||
@@ -160,7 +160,8 @@ private:
|
|||||||
|
|
||||||
QMediaRecorder::State m_state;
|
QMediaRecorder::State m_state;
|
||||||
QMediaRecorder::Status m_status;
|
QMediaRecorder::Status m_status;
|
||||||
QUrl m_outputLocation;
|
QUrl m_requestedOutputLocation;
|
||||||
|
QUrl m_actualOutputLocation;
|
||||||
|
|
||||||
CaptureProfile m_defaultSettings;
|
CaptureProfile m_defaultSettings;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user