GenericModel<Album> * AndroidDeviceMediaCollection::albumsModel() {
if (m_albums.count() == 0) {
QPlatformNativeInterface
* const interface
= QApplication::platformNativeInterface();
const jobject activity = (jobject) interface->nativeResourceForIntegration("QtActivity");
const QAndroidJniObject music = QAndroidJniObject::callStaticObjectMethod("org.qtproject.mythings.AndroidDeviceMediaCollection",
"getMusic",
"(Landroid/content/Context;)[Lorg/qtproject/mythings/AudioTrack;",
activity);
Q_ASSERT_X(music.isValid(), "albumsModel", "Null QAndroidJniObject!");
const jobjectArray musicArray = music.object<jobjectArray>();
QAndroidJniEnvironment qjniEnv;
const int n = qjniEnv->GetArrayLength(musicArray);
jclass clazz = 0;
for (int i = 0; i < n; ++i) {
const jobject jAudioTrack = qjniEnv->GetObjectArrayElement(musicArray, i);
Q_ASSERT_X(jAudioTrack, "albumsModel", "Null jobject!");
if (clazz == 0) {
const jclass tmp = qjniEnv->GetObjectClass(jAudioTrack);
Q_ASSERT_X(tmp, "albumsModel", "Null jclass!");
clazz = (jclass) qjniEnv->NewGlobalRef(tmp);
Q_ASSERT_X(clazz, "albumsModel", "Null jclass!");
}
else
Q_ASSERT_X(qjniEnv->IsInstanceOf(jAudioTrack, clazz), "albumsModel", "jobject is not of the expected type!");
/* Parse fields... */
const jfieldID albumIDFieldID = qjniEnv->GetFieldID(clazz, "albumID", "I");
const jint albumID = qjniEnv->GetIntField(jAudioTrack, albumIDFieldID);
// ...
qjniEnv->DeleteLocalRef(jAudioTrack);
}
qjniEnv->DeleteGlobalRef(clazz);
if (qjniEnv->ExceptionCheck()) {
qjniEnv->ExceptionDescribe();
Q_ASSERT(false);
}
}
return &m_albums;
}
GenericModel<Album> * AndroidDeviceMediaCollection::albumsModel() {
if (m_albums.count() == 0) {
QPlatformNativeInterface * const interface = QApplication::platformNativeInterface();
const jobject activity = (jobject) interface->nativeResourceForIntegration("QtActivity");
const QAndroidJniObject music = QAndroidJniObject::callStaticObjectMethod("org.qtproject.mythings.AndroidDeviceMediaCollection",
"getMusic",
"(Landroid/content/Context;)[Lorg/qtproject/mythings/AudioTrack;",
activity);
Q_ASSERT_X(music.isValid(), "albumsModel", "Null QAndroidJniObject!");
const jobjectArray musicArray = music.object<jobjectArray>();
QAndroidJniEnvironment qjniEnv;
const int n = qjniEnv->GetArrayLength(musicArray);
jclass clazz = 0;
for (int i = 0; i < n; ++i) {
const jobject jAudioTrack = qjniEnv->GetObjectArrayElement(musicArray, i);
Q_ASSERT_X(jAudioTrack, "albumsModel", "Null jobject!");
if (clazz == 0) {
const jclass tmp = qjniEnv->GetObjectClass(jAudioTrack);
Q_ASSERT_X(tmp, "albumsModel", "Null jclass!");
clazz = (jclass) qjniEnv->NewGlobalRef(tmp);
Q_ASSERT_X(clazz, "albumsModel", "Null jclass!");
}
else
Q_ASSERT_X(qjniEnv->IsInstanceOf(jAudioTrack, clazz), "albumsModel", "jobject is not of the expected type!");
/* Parse fields... */
const jfieldID albumIDFieldID = qjniEnv->GetFieldID(clazz, "albumID", "I");
const jint albumID = qjniEnv->GetIntField(jAudioTrack, albumIDFieldID);
// ...
qjniEnv->DeleteLocalRef(jAudioTrack);
}
qjniEnv->DeleteGlobalRef(clazz);
if (qjniEnv->ExceptionCheck()) {
qjniEnv->ExceptionDescribe();
Q_ASSERT(false);
}
}
return &m_albums;
}
To copy to clipboard, switch view to plain text mode
Bookmarks