java android qt jni jnienv

java - Qt JNI: referencia indirecta no válida 0x61382e48 en decodeIndirectRef



android jnienv (0)

Estoy probando el proyecto Qt que captura datos de audio de un micrófono en Android. Remití este artículo: ejemplo de Android AudioRecord , y lo escribí en el código Qt.

int recorderSampleRate = 44100; int recorderChannels = QAndroidJniObject::getStaticField<jint>("android/media/AudioFormat", "CHANNEL_IN_MONO"); int recorderAudioEncoding = QAndroidJniObject::getStaticField<jint>("android/media/AudioFormat", "ENCODING_PCM_16BIT"); int sourceType = QAndroidJniObject::getStaticField<jint>("android/media/MediaRecorder$AudioSource", "MIC"); int bsize = QAndroidJniObject::callStaticMethod<int>("android/media/AudioRecord", "getMinBufferSize", "(III)I", recorderSampleRate, recorderChannels, recorderAudioEncoding); mAudioRecorder = new QAndroidJniObject("android/media/AudioRecord", "(IIIII)V", sourceType, recorderSampleRate, recorderChannels, recorderAudioEncoding, BufferElements2Rec * BytesPerElement); // starting capture. mAudioRecorder->callMethod<void>("startRecording", "()V"); // ready buffer. jint size = BufferElements2Rec * BytesPerElement; jbyte buffers[size * 2]; qDebug() << "start capture"; while(true) { { jint offset = 0; // read cached audio data from AudioRecord int result = mAudioRecorder->callMethod<jint>("read", "([BII)I", buffers, offset, size); qDebug() << "readed byte size " << result; } // wait a bit for new audio data. msleep(10); }

Pero, en esta línea int result = mAudioRecorder-> callMethod ("leer", "([BII) I", búferes, desplazamiento, tamaño); la aplicación se colgó y se imprimió después del registro.

W/dalvikvm(24772): Invalid indirect reference 0x61382e48 in decodeIndirectRef E/dalvikvm(24772): VM aborting F/libc (24772): Fatal signal 11 (SIGSEGV) at 0xdeadd00d (code=1), thread 24975 (ldAndroidCaptur)

Supuse que este error era la causa de una mala invocación de JNI, pero no pude encontrar el motivo.

Además: Encontré 0x61382e48 es una dirección de buffers array

EDITAR: la guía de Android para AudioRecord está aquí .

Bienvenido cualquier consejo.