Android: Fix MetadataRetriver wrapper
The QJNIObject was never intended to be used as a base class. Change-Id: Ic4effd5e1c89a08515c756bd5092fb1e1eead688 Reviewed-by: Yoann Lopes <yoann.lopes@digia.com>
This commit is contained in:
committed by
The Qt Project
parent
cc41c7df3c
commit
4ba7b22390
@@ -74,13 +74,8 @@ static const char* qt_ID3GenreNames[] =
|
||||
QAndroidMetaDataReaderControl::QAndroidMetaDataReaderControl(QObject *parent)
|
||||
: QMetaDataReaderControl(parent)
|
||||
, m_available(false)
|
||||
, m_retriever(0)
|
||||
, m_retriever(new JMediaMetadataRetriever)
|
||||
{
|
||||
m_retriever = new JMediaMetadataRetriever;
|
||||
if (!m_retriever->isValid()) {
|
||||
delete m_retriever;
|
||||
m_retriever = 0;
|
||||
}
|
||||
}
|
||||
|
||||
QAndroidMetaDataReaderControl::~QAndroidMetaDataReaderControl()
|
||||
|
||||
@@ -47,8 +47,8 @@
|
||||
QT_BEGIN_NAMESPACE
|
||||
|
||||
JMediaMetadataRetriever::JMediaMetadataRetriever()
|
||||
: QJNIObjectPrivate("android/media/MediaMetadataRetriever")
|
||||
{
|
||||
m_metadataRetriever = QJNIObjectPrivate("android/media/MediaMetadataRetriever");
|
||||
}
|
||||
|
||||
JMediaMetadataRetriever::~JMediaMetadataRetriever()
|
||||
@@ -59,9 +59,9 @@ QString JMediaMetadataRetriever::extractMetadata(MetadataKey key)
|
||||
{
|
||||
QString value;
|
||||
|
||||
QJNIObjectPrivate metadata = callObjectMethod("extractMetadata",
|
||||
"(I)Ljava/lang/String;",
|
||||
jint(key));
|
||||
QJNIObjectPrivate metadata = m_metadataRetriever.callObjectMethod("extractMetadata",
|
||||
"(I)Ljava/lang/String;",
|
||||
jint(key));
|
||||
if (metadata.isValid())
|
||||
value = metadata.toString();
|
||||
|
||||
@@ -70,28 +70,34 @@ QString JMediaMetadataRetriever::extractMetadata(MetadataKey key)
|
||||
|
||||
void JMediaMetadataRetriever::release()
|
||||
{
|
||||
callMethod<void>("release");
|
||||
if (!m_metadataRetriever.isValid())
|
||||
return;
|
||||
|
||||
m_metadataRetriever.callMethod<void>("release");
|
||||
}
|
||||
|
||||
bool JMediaMetadataRetriever::setDataSource(const QUrl &url)
|
||||
{
|
||||
if (!m_metadataRetriever.isValid())
|
||||
return false;
|
||||
|
||||
QJNIEnvironmentPrivate env;
|
||||
|
||||
bool loaded = false;
|
||||
|
||||
QJNIObjectPrivate string = QJNIObjectPrivate::fromString(url.toString());
|
||||
|
||||
QJNIObjectPrivate uri = callStaticObjectMethod("android/net/Uri",
|
||||
"parse",
|
||||
"(Ljava/lang/String;)Landroid/net/Uri;",
|
||||
string.object());
|
||||
QJNIObjectPrivate uri = m_metadataRetriever.callStaticObjectMethod("android/net/Uri",
|
||||
"parse",
|
||||
"(Ljava/lang/String;)Landroid/net/Uri;",
|
||||
string.object());
|
||||
if (env->ExceptionCheck()) {
|
||||
env->ExceptionClear();
|
||||
} else {
|
||||
callMethod<void>("setDataSource",
|
||||
"(Landroid/content/Context;Landroid/net/Uri;)V",
|
||||
QtAndroidPrivate::activity(),
|
||||
uri.object());
|
||||
m_metadataRetriever.callMethod<void>("setDataSource",
|
||||
"(Landroid/content/Context;Landroid/net/Uri;)V",
|
||||
QtAndroidPrivate::activity(),
|
||||
uri.object());
|
||||
if (env->ExceptionCheck())
|
||||
env->ExceptionClear();
|
||||
else
|
||||
@@ -103,13 +109,16 @@ bool JMediaMetadataRetriever::setDataSource(const QUrl &url)
|
||||
|
||||
bool JMediaMetadataRetriever::setDataSource(const QString &path)
|
||||
{
|
||||
if (!m_metadataRetriever.isValid())
|
||||
return false;
|
||||
|
||||
QJNIEnvironmentPrivate env;
|
||||
|
||||
bool loaded = false;
|
||||
|
||||
callMethod<void>("setDataSource",
|
||||
"(Ljava/lang/String;)V",
|
||||
QJNIObjectPrivate::fromString(path).object());
|
||||
m_metadataRetriever.callMethod<void>("setDataSource",
|
||||
"(Ljava/lang/String;)V",
|
||||
QJNIObjectPrivate::fromString(path).object());
|
||||
if (env->ExceptionCheck())
|
||||
env->ExceptionClear();
|
||||
else
|
||||
|
||||
@@ -47,7 +47,7 @@
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
|
||||
class JMediaMetadataRetriever : public QJNIObjectPrivate
|
||||
class JMediaMetadataRetriever
|
||||
{
|
||||
public:
|
||||
enum MetadataKey {
|
||||
@@ -84,6 +84,8 @@ public:
|
||||
bool setDataSource(const QUrl &url);
|
||||
bool setDataSource(const QString &path);
|
||||
|
||||
private:
|
||||
QJNIObjectPrivate m_metadataRetriever;
|
||||
};
|
||||
|
||||
QT_END_NAMESPACE
|
||||
|
||||
Reference in New Issue
Block a user