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().object(),
129 if (env.checkAndClearExceptions())