summaryrefslogtreecommitdiffstats
path: root/src/plugins/android/src/mediaplayer
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/android/src/mediaplayer')
-rw-r--r--src/plugins/android/src/mediaplayer/qandroidmediaplayercontrol.cpp15
-rw-r--r--src/plugins/android/src/mediaplayer/qandroidmediaplayercontrol.h2
2 files changed, 14 insertions, 3 deletions
diff --git a/src/plugins/android/src/mediaplayer/qandroidmediaplayercontrol.cpp b/src/plugins/android/src/mediaplayer/qandroidmediaplayercontrol.cpp
index 54c04e5c9..ce73263d3 100644
--- a/src/plugins/android/src/mediaplayer/qandroidmediaplayercontrol.cpp
+++ b/src/plugins/android/src/mediaplayer/qandroidmediaplayercontrol.cpp
@@ -218,10 +218,19 @@ void QAndroidMediaPlayerControl::setMedia(const QMediaContent &mediaContent,
return;
}
- const QString uri = mediaContent.canonicalUrl().toString();
+ const QUrl url = mediaContent.canonicalUrl();
+ QString mediaPath;
+ if (url.scheme() == QLatin1String("qrc")) {
+ const QString path = url.toString().mid(3);
+ mTempFile.reset(QTemporaryFile::createNativeFile(path));
+ if (!mTempFile.isNull())
+ mediaPath = QLatin1String("file://") + mTempFile->fileName();
+ } else {
+ mediaPath = url.toString();
+ }
- if (!uri.isEmpty())
- mMediaPlayer->setDataSource(uri);
+ if (!mediaPath.isEmpty())
+ mMediaPlayer->setDataSource(mediaPath);
else
setMediaStatus(QMediaPlayer::NoMedia);
diff --git a/src/plugins/android/src/mediaplayer/qandroidmediaplayercontrol.h b/src/plugins/android/src/mediaplayer/qandroidmediaplayercontrol.h
index ef1d325e5..fadac3c19 100644
--- a/src/plugins/android/src/mediaplayer/qandroidmediaplayercontrol.h
+++ b/src/plugins/android/src/mediaplayer/qandroidmediaplayercontrol.h
@@ -45,6 +45,7 @@
#include <qglobal.h>
#include <QMediaPlayerControl>
#include <qsize.h>
+#include <QtCore/QTemporaryFile>
QT_BEGIN_NAMESPACE
@@ -114,6 +115,7 @@ private:
QMediaPlayer::State mPendingState;
qint64 mPendingPosition;
bool mPendingSetMedia;
+ QScopedPointer<QTemporaryFile> mTempFile;
void setState(QMediaPlayer::State state);
void setMediaStatus(QMediaPlayer::MediaStatus status);