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)
|
QAndroidMetaDataReaderControl::QAndroidMetaDataReaderControl(QObject *parent)
|
||||||
: QMetaDataReaderControl(parent)
|
: QMetaDataReaderControl(parent)
|
||||||
, m_available(false)
|
, 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()
|
QAndroidMetaDataReaderControl::~QAndroidMetaDataReaderControl()
|
||||||
|
|||||||
@@ -47,8 +47,8 @@
|
|||||||
QT_BEGIN_NAMESPACE
|
QT_BEGIN_NAMESPACE
|
||||||
|
|
||||||
JMediaMetadataRetriever::JMediaMetadataRetriever()
|
JMediaMetadataRetriever::JMediaMetadataRetriever()
|
||||||
: QJNIObjectPrivate("android/media/MediaMetadataRetriever")
|
|
||||||
{
|
{
|
||||||
|
m_metadataRetriever = QJNIObjectPrivate("android/media/MediaMetadataRetriever");
|
||||||
}
|
}
|
||||||
|
|
||||||
JMediaMetadataRetriever::~JMediaMetadataRetriever()
|
JMediaMetadataRetriever::~JMediaMetadataRetriever()
|
||||||
@@ -59,7 +59,7 @@ QString JMediaMetadataRetriever::extractMetadata(MetadataKey key)
|
|||||||
{
|
{
|
||||||
QString value;
|
QString value;
|
||||||
|
|
||||||
QJNIObjectPrivate metadata = callObjectMethod("extractMetadata",
|
QJNIObjectPrivate metadata = m_metadataRetriever.callObjectMethod("extractMetadata",
|
||||||
"(I)Ljava/lang/String;",
|
"(I)Ljava/lang/String;",
|
||||||
jint(key));
|
jint(key));
|
||||||
if (metadata.isValid())
|
if (metadata.isValid())
|
||||||
@@ -70,25 +70,31 @@ QString JMediaMetadataRetriever::extractMetadata(MetadataKey key)
|
|||||||
|
|
||||||
void JMediaMetadataRetriever::release()
|
void JMediaMetadataRetriever::release()
|
||||||
{
|
{
|
||||||
callMethod<void>("release");
|
if (!m_metadataRetriever.isValid())
|
||||||
|
return;
|
||||||
|
|
||||||
|
m_metadataRetriever.callMethod<void>("release");
|
||||||
}
|
}
|
||||||
|
|
||||||
bool JMediaMetadataRetriever::setDataSource(const QUrl &url)
|
bool JMediaMetadataRetriever::setDataSource(const QUrl &url)
|
||||||
{
|
{
|
||||||
|
if (!m_metadataRetriever.isValid())
|
||||||
|
return false;
|
||||||
|
|
||||||
QJNIEnvironmentPrivate env;
|
QJNIEnvironmentPrivate env;
|
||||||
|
|
||||||
bool loaded = false;
|
bool loaded = false;
|
||||||
|
|
||||||
QJNIObjectPrivate string = QJNIObjectPrivate::fromString(url.toString());
|
QJNIObjectPrivate string = QJNIObjectPrivate::fromString(url.toString());
|
||||||
|
|
||||||
QJNIObjectPrivate uri = callStaticObjectMethod("android/net/Uri",
|
QJNIObjectPrivate uri = m_metadataRetriever.callStaticObjectMethod("android/net/Uri",
|
||||||
"parse",
|
"parse",
|
||||||
"(Ljava/lang/String;)Landroid/net/Uri;",
|
"(Ljava/lang/String;)Landroid/net/Uri;",
|
||||||
string.object());
|
string.object());
|
||||||
if (env->ExceptionCheck()) {
|
if (env->ExceptionCheck()) {
|
||||||
env->ExceptionClear();
|
env->ExceptionClear();
|
||||||
} else {
|
} else {
|
||||||
callMethod<void>("setDataSource",
|
m_metadataRetriever.callMethod<void>("setDataSource",
|
||||||
"(Landroid/content/Context;Landroid/net/Uri;)V",
|
"(Landroid/content/Context;Landroid/net/Uri;)V",
|
||||||
QtAndroidPrivate::activity(),
|
QtAndroidPrivate::activity(),
|
||||||
uri.object());
|
uri.object());
|
||||||
@@ -103,11 +109,14 @@ bool JMediaMetadataRetriever::setDataSource(const QUrl &url)
|
|||||||
|
|
||||||
bool JMediaMetadataRetriever::setDataSource(const QString &path)
|
bool JMediaMetadataRetriever::setDataSource(const QString &path)
|
||||||
{
|
{
|
||||||
|
if (!m_metadataRetriever.isValid())
|
||||||
|
return false;
|
||||||
|
|
||||||
QJNIEnvironmentPrivate env;
|
QJNIEnvironmentPrivate env;
|
||||||
|
|
||||||
bool loaded = false;
|
bool loaded = false;
|
||||||
|
|
||||||
callMethod<void>("setDataSource",
|
m_metadataRetriever.callMethod<void>("setDataSource",
|
||||||
"(Ljava/lang/String;)V",
|
"(Ljava/lang/String;)V",
|
||||||
QJNIObjectPrivate::fromString(path).object());
|
QJNIObjectPrivate::fromString(path).object());
|
||||||
if (env->ExceptionCheck())
|
if (env->ExceptionCheck())
|
||||||
|
|||||||
@@ -47,7 +47,7 @@
|
|||||||
|
|
||||||
QT_BEGIN_NAMESPACE
|
QT_BEGIN_NAMESPACE
|
||||||
|
|
||||||
class JMediaMetadataRetriever : public QJNIObjectPrivate
|
class JMediaMetadataRetriever
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
enum MetadataKey {
|
enum MetadataKey {
|
||||||
@@ -84,6 +84,8 @@ public:
|
|||||||
bool setDataSource(const QUrl &url);
|
bool setDataSource(const QUrl &url);
|
||||||
bool setDataSource(const QString &path);
|
bool setDataSource(const QString &path);
|
||||||
|
|
||||||
|
private:
|
||||||
|
QJNIObjectPrivate m_metadataRetriever;
|
||||||
};
|
};
|
||||||
|
|
||||||
QT_END_NAMESPACE
|
QT_END_NAMESPACE
|
||||||
|
|||||||
Reference in New Issue
Block a user