Danke für die Antwort, das hat mich dazu gebracht mich nochmal ein paar Stunden dahinter zu klemmen...
Viel zu lang für die paar Zeilen, aber dann ist das halt mal so
Habe nun "die Lösung" gefunden und es hinbekommen, nach vielen vielen Seiten hat mich diese auf den richtigen Weg gebracht -> link
nach etwas gefummel klappts nun so :
Java Seite :
public class MainActivity ... {
...
public native void register2();
public void callback(int val) {
Log.d(TAG, "callback ############ OK ");
}
}
Alles anzeigen
( zur Initialisierung wird register2() aufgerufen ) ---- diesen part werde Ich wohl noch ins JNI_OnLoad verpacken, falls mir der GC dann keine Probleme macht (?)
CPP Seite :
extern "C" {
JNIEXPORT void JNICALL Java_com_XXX_MainActivity_register2(JNIEnv* env, jobject obj);
};
JavaVM *g_vm;
jobject g_obj;
jmethodID g_mid;
JNIEXPORT void JNICALL Java_com_XXX_MainActivity_register2(JNIEnv *env, jobject obj) {
env->GetJavaVM(&g_vm);
g_obj = env->NewGlobalRef(obj);
jclass g_clazz = env->GetObjectClass(g_obj);
if (g_clazz == NULL) { //
}
g_mid = env->GetMethodID(g_clazz, "callback", "(I)V");
if (g_mid == NULL) { //
}
__android_log_print(ANDROID_LOG_DEBUG, "XXX", "Adding - ############ register OK");
}
void callback(int val) {
JNIEnv * g_env;
g_vm->AttachCurrentThread((JNIEnv **)&g_env, NULL);
int getEnvStat = g_vm->GetEnv((void **)&g_env, JNI_VERSION_1_6);
if (g_env == NULL) {
__android_log_print(ANDROID_LOG_DEBUG, "XXX", "Adding - ############ callback JNIEnv fail");
}
if (getEnvStat == JNI_EDETACHED) {
__android_log_print(ANDROID_LOG_DEBUG, "XXX", "Adding - ############ callback edetached");
} else if (getEnvStat == JNI_OK) {
__android_log_print(ANDROID_LOG_DEBUG, "XXX", "Adding - ############ callback ok");
} else if (getEnvStat == JNI_EVERSION) {
__android_log_print(ANDROID_LOG_DEBUG, "XXX", "Adding - ############ callback eversion");
}
g_env->CallVoidMethod(g_obj, g_mid, val);
if (g_env->ExceptionCheck()) {
g_env->ExceptionDescribe();
}
g_vm->DetachCurrentThread();
}
Alles anzeigen
nein die log_prints sind nicht schön, aber ein wenig faules copy&paste muss sein beim testen
und die getEnvStat abfragen werde ich noch brauchen, evtl braucht Sie auch der nächste Leser
bin erstmal froh das es nun läuft und ich mich wieder um anderes kümmern kann, bin natürlich offen für jeden Wink mit´m Scheunentor
Danke nochmal für den Anstoß