Android add support for qrc in mediaplayer.

[ChangeLog][QtMultimedia][Android] Enable mediaplayer to read files
from the Qt Resource system.

Task-number: QTBUG-31422

Change-Id: Iaaefb35566b623b78b9f8aa22daf6ac92fb35e67
Reviewed-by: Yoann Lopes <yoann.lopes@digia.com>
This commit is contained in:
Christian Strømme
2013-11-28 15:07:21 +01:00
committed by The Qt Project
parent 9ceb1c083e
commit 966d4bc86f
2 changed files with 14 additions and 3 deletions

View File

@@ -218,10 +218,19 @@ void QAndroidMediaPlayerControl::setMedia(const QMediaContent &mediaContent,
return; 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()) if (!mediaPath.isEmpty())
mMediaPlayer->setDataSource(uri); mMediaPlayer->setDataSource(mediaPath);
else else
setMediaStatus(QMediaPlayer::NoMedia); setMediaStatus(QMediaPlayer::NoMedia);

View File

@@ -45,6 +45,7 @@
#include <qglobal.h> #include <qglobal.h>
#include <QMediaPlayerControl> #include <QMediaPlayerControl>
#include <qsize.h> #include <qsize.h>
#include <QtCore/QTemporaryFile>
QT_BEGIN_NAMESPACE QT_BEGIN_NAMESPACE
@@ -114,6 +115,7 @@ private:
QMediaPlayer::State mPendingState; QMediaPlayer::State mPendingState;
qint64 mPendingPosition; qint64 mPendingPosition;
bool mPendingSetMedia; bool mPendingSetMedia;
QScopedPointer<QTemporaryFile> mTempFile;
void setState(QMediaPlayer::State state); void setState(QMediaPlayer::State state);
void setMediaStatus(QMediaPlayer::MediaStatus status); void setMediaStatus(QMediaPlayer::MediaStatus status);