JNI: вызов java метода из C callback функции?
От: wssg Россия  
Дата: 08.05.07 06:32
Оценка:
Сразу для ясности приведу пример:

....
#include "SDK.h"
....
sdkUInt32 sdkSTDCALL mySDKcallback( sdkVoid* pBuf, sdkUInt32 Size, sdkUInt32 Format, sdkContext Context) {

 // Вот здесь необходимо вызвать java метод и передать ему pBuf
  jclass cls = env->GetObjectClass(jobj);
  jmethodID mid = env->GetMethodID(cls, "javaCallback", "([B)V");
  if (mid == 0) {
   return sdkOK;
  }
  jbyteArray ba=env->NewByteArray(Size);
  env->SetByteArrayRegion(ba,0,Size,(jbyte *)pBuf);
  env->CallVoidMethod(obj, mid,ba);
 // Но откуда тут взять JNIEnv * env, jobject jobj
  retrun sdkOK;
}
....
JNIEXPORT jint JNICALL Java_test_registryCallback(JNIEnv * env, jobject jobj) {

  char context = new char[10];
....
  SDKregistryCallback(handle,0,mySDKcallback,(sdkContext)context);//context - это, то что можно дополнительно передать в callback фыункцию
  

}
....
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.