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:
committed by
The Qt Project
parent
9ceb1c083e
commit
966d4bc86f
@@ -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);
|
||||||
|
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
Reference in New Issue
Block a user