Android NDK: llamando al método java de clase JNI C

Tengo el método de JNI donde estoy intentando llamar el método de Java. Aquí está mi código JNI

void DummySink::afterGettingFrame(unsigned frameSize, unsigned numTruncatedBytes, struct timeval presentationTime, unsigned /*durationInMicroseconds*/) { __android_log_print(ANDROID_LOG_VERBOSE, "RTSP", "Frame: %c", propRec->sPropBytes); jmethodID mid; jclass handlerClass = env9->FindClass("ob/android/Stream"); if (handlerClass == NULL) { __android_log_print(ANDROID_LOG_VERBOSE, "RTSP-Error", "Class"); } mid = env9->GetMethodID(handlerClass, "onResponse", "([B)V"); if (mid == NULL) { __android_log_print(ANDROID_LOG_VERBOSE, "RTSP-Error", "Method"); } jbyteArray jbArray = env9->NewByteArray((int)propRec->sPropLength); env9->SetByteArrayRegion(jbArray, 0, (int)propRec->sPropLength, (jbyte*)propRec->sPropBytes); //jobject theClass = env9->FindClass("ob/android/Stream"); env9->CallVoidMethod(handlerClass, mid, jbArray); } 

Aquí está el código Java que tengo

 public void onResponse(byte[] str) { Log.v("Response", "Java"); } 

Estoy recibiendo después de un accidente

 03-08 16:01:05.915: W/dalvikvm(17552): JNI WARNING: can't call Lob/android/Stream;.onResponse on instance of Ljava/lang/Class; 03-08 16:01:05.915: W/dalvikvm(17552): in Lob/android/Stream;.stream:()V (CallVoidMethodV) 

Después de aplicar la respuesta de Mah, aquí está la excepción que estoy recibiendo

 03-08 16:40:20.646: W/dalvikvm(4076): JNI WARNING: JNI method called with exception pending 03-08 16:40:20.646: W/dalvikvm(4076): in Lob/android/Stream;.stream:()V (NewByteArray) 03-08 16:40:20.646: W/dalvikvm(4076): Pending exception is: 03-08 16:40:20.646: I/dalvikvm(4076): java.lang.NoSuchMethodError: no method with name='onResponse' signature='([B)V' in class Lob/android/Stream; 03-08 16:40:20.646: I/dalvikvm(4076): at ob.android.Stream.stream(Native Method) 03-08 16:40:20.646: I/dalvikvm(4076): at ob.android.Stream.<init>(Stream.java:28) 03-08 16:40:20.654: I/dalvikvm(4076): at ob.android.MainActivity.startRecording(MainActivity.java:203) 

Ahora el método onResponse es estático.

Su método Java es un método de instancia (no estático), pero su código nativo no se refiere a ninguna instancia específica de ob.android.Stream para llamar a onResponse() para.

Cuando llama a CallVoidMethod() , el primer parámetro es ser la instancia (objeto) que está ejecutando el método en contra, no la clase en sí. La clase en sí se usaría si estuviera usando CallStaticVoidMethod() .

  • Creación / búsqueda de bibliotecas compartidas desde el código fuente de Android
  • Armeabi-v7a con -mfloat-abi = duro
  • Android NDK con Visual Studio
  • Pasar descriptor de archivo USB al programa Android NDK
  • WebP para Android
  • Bitmap setPixels perderá el canal alfa cuando el fondo sea negro
  • Cómo acceder a los recursos empaquetados desde el código nativo de Android (NDK r5)
  • Crash al cerrar el teclado virtual mientras utiliza la actividad nativa
  • ¿Se bloquea la aplicación Android de repente mientras se ejecuta?
  • JNIEXPORT y JNICALL en Android NDK
  • Error: Error en la ejecución de la tarea 'ndkBuild'. > Proceso 'comando' Android \ sdk \ ndk-bundle / ndk-build.cmd '' terminado con valor de salida distinto de cero 2
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.