Android: Fix loading from qrc
On Android < 4.1 our temporary file is discarded without checking the content. With this change we just open the file and pass the fd to the mediaplayer instead. Change-Id: I9233822725d8987c572b2d0b598721cee886de80 Reviewed-by: Yoann Lopes <yoann.lopes@digia.com>
This commit is contained in:
committed by
The Qt Project
parent
93e73fd8ee
commit
7e668fe58f
@@ -43,6 +43,7 @@ package org.qtproject.qt5.android.multimedia;
|
|||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.lang.String;
|
import java.lang.String;
|
||||||
|
import java.io.FileInputStream;
|
||||||
|
|
||||||
// API is level is < 9 unless marked otherwise.
|
// API is level is < 9 unless marked otherwise.
|
||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
@@ -387,6 +388,10 @@ public class QtAndroidMediaPlayer
|
|||||||
final long length = afd.getLength();
|
final long length = afd.getLength();
|
||||||
FileDescriptor fd = afd.getFileDescriptor();
|
FileDescriptor fd = afd.getFileDescriptor();
|
||||||
mMediaPlayer.setDataSource(fd, offset, length);
|
mMediaPlayer.setDataSource(fd, offset, length);
|
||||||
|
} else if (mUri.getScheme().compareTo("tempfile") == 0) {
|
||||||
|
FileInputStream fis = new FileInputStream(mUri.getPath());
|
||||||
|
FileDescriptor fd = fis.getFD();
|
||||||
|
mMediaPlayer.setDataSource(fd);
|
||||||
} else {
|
} else {
|
||||||
mMediaPlayer.setDataSource(mActivity, mUri);
|
mMediaPlayer.setDataSource(mActivity, mUri);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -312,7 +312,7 @@ void QAndroidMediaPlayerControl::setMedia(const QMediaContent &mediaContent,
|
|||||||
const QString path = url.toString().mid(3);
|
const QString path = url.toString().mid(3);
|
||||||
mTempFile.reset(QTemporaryFile::createNativeFile(path));
|
mTempFile.reset(QTemporaryFile::createNativeFile(path));
|
||||||
if (!mTempFile.isNull())
|
if (!mTempFile.isNull())
|
||||||
mediaPath = QLatin1String("file://") + mTempFile->fileName();
|
mediaPath = QLatin1String("tempfile://") + mTempFile->fileName();
|
||||||
} else {
|
} else {
|
||||||
mediaPath = url.toString();
|
mediaPath = url.toString();
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user