8#include <QtCore/qcoreapplication.h>
14 m_metadataRetriever =
QJniObject(
"android/media/MediaMetadataRetriever");
26 QJniObject metadata = m_metadataRetriever.callObjectMethod(
"extractMetadata",
27 "(I)Ljava/lang/String;",
29 if (metadata.isValid())
30 value = metadata.toString();
35void AndroidMediaMetadataRetriever::release()
37 if (!m_metadataRetriever.isValid())
40 m_metadataRetriever.callMethod<
void>(
"release");
45 if (!m_metadataRetriever.isValid())
51 QJniObject fileInputStream(
"java/io/FileInputStream",
52 "(Ljava/lang/String;)V",
55 if (!fileInputStream.isValid())
58 QJniObject fd = fileInputStream.callObjectMethod(
"getFD",
59 "()Ljava/io/FileDescriptor;");
61 fileInputStream.callMethod<
void>(
"close");
65 auto methodId = env->GetMethodID(m_metadataRetriever.objectClass(),
"setDataSource",
66 "(Ljava/io/FileDescriptor;)V");
67 env->CallVoidMethod(m_metadataRetriever.object(), methodId,
fd.object());
68 bool ok = !env.checkAndClearExceptions();
69 fileInputStream.callMethod<
void>(
"close");
74 QJniObject activity(QNativeInterface::QAndroidApplication::context());
75 QJniObject assetManager = activity.callObjectMethod(
"getAssets",
76 "()Landroid/content/res/AssetManager;");
77 QJniObject assetFd = assetManager.callObjectMethod(
"openFd",
78 "(Ljava/lang/String;)Landroid/content/res/AssetFileDescriptor;",
80 if (!assetFd.isValid())
83 QJniObject fd = assetFd.callObjectMethod(
"getFileDescriptor",
84 "()Ljava/io/FileDescriptor;");
86 assetFd.callMethod<
void>(
"close");
90 auto methodId = env->GetMethodID(m_metadataRetriever.objectClass(),
"setDataSource",
91 "(Ljava/io/FileDescriptor;JJ)V");
92 env->CallVoidMethod(m_metadataRetriever.object(), methodId,
94 assetFd.callMethod<jlong>(
"getStartOffset"),
95 assetFd.callMethod<jlong>(
"getLength"));
96 bool ok = !env.checkAndClearExceptions();
97 assetFd.callMethod<
void>(
"close");
106 auto methodId = env->GetMethodID(m_metadataRetriever.objectClass(),
"setDataSource",
107 "(Ljava/lang/String;Ljava/util/Map;)V");
108 env->CallVoidMethod(m_metadataRetriever.object(), methodId,
109 string.object(),
hash.object());
110 if (env.checkAndClearExceptions())
116 QJniObject uri = m_metadataRetriever.callStaticObjectMethod(
119 "(Ljava/lang/String;)Landroid/net/Uri;",
124 auto methodId = env->GetMethodID(m_metadataRetriever.objectClass(),
"setDataSource",
125 "(Landroid/content/Context;Landroid/net/Uri;)V");
126 env->CallVoidMethod(m_metadataRetriever.object(), methodId,
127 QNativeInterface::QAndroidApplication::context(), uri.object());
128 if (env.checkAndClearExceptions())
\macro QT_RESTRICTED_CAST_FROM_ASCII
QString mid(qsizetype position, qsizetype n=-1) const
Returns a string that contains n characters of this string, starting at the specified position index.
QString scheme() const
Returns the scheme of the URL.
QString toString(FormattingOptions options=FormattingOptions(PrettyDecoded)) const
Returns a string representation of the URL.
QString path(ComponentFormattingOptions options=FullyDecoded) const
Returns the path of the URL.
QHash< int, QWidget * > hash
[35multi]
Combined button and popup list for selecting options.
EGLOutputLayerEXT EGLint EGLAttrib value
[5]
QLatin1StringView QLatin1String
QUrl url("example.com")
[constructor-url-reference]