Den Aufruf nicht-statische Methode auf Android von JNI
Möchte ich nennen, eine nicht-statische Methode auf Android mittels JNI. Ich kann Aufruf von statischen Methoden, mit CallStaticVoidMethod
. Aufrufen von nicht-statischen Methoden, die ich verwendet habe CallVoidMethod
. Es ist nicht in Ordnung.
Kann jemand bitte sagen Sie mir, richtigen code zu nennen nichtstatische Methode der Android-JNI?
jmethodID method = env->GetMethodID(gJniRefCached.ImsFwkLoaderClass, "DispVideo", "([BII)V");
env->CallVoidMethod(gJniRefCached.ImsFwkLoaderClass, Methode,arr,Breite,Höhe);
Habe ich auch versucht, mit Objekt der Klasse, der code ist
jclass cls = env->GetObjectClass(obj);
jmethodID method = env->GetMethodID(cls, "DispVideo", "([BII)V");
env->CallVoidMethod(cls, method,arr,width,height);
- Sollten Sie uns ein bisschen mehr über das, was Sie getan haben. Zeigen Sie uns den code, der nicht funktioniert.
- Ich habe den code eingefügt.. jetzt helfen Sie mir bitte...
- Was ist die Methode die Signatur der Methode, die Sie versuchen zu nennen? Hat es einen Wert zurückgeben?
- Nein, es ist nicht wieder alles, ist es eben vorbei byte-Array ie arr und int width und int Höhe des Bildes auf android-Funktion.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Um eine Instanzmethode aufzurufen, müssen Sie eine Instanz der Klasse die Methode belng zu, dargestellt als ein
jobject
. Doch in beiden Beispielen, die Sie versuchen, rufen Sie die Instanz-Methode mit einer Instanz der Klasse definition, dargestellt als einejclass
.Versuchen Sie Folgendes:
Beachten Sie den feinen Unterschied in der Dritten Zeile des Codes, wo ich
obj
als ersten parameter stattcls
.Können Sie sehen, dieser Unterschied auch auf der Dokumentations-Seite für die Instanz-Methode JNI-Funktionen: http://download.oracle.com/javase/1.5.0/docs/guide/jni/spec/functions.html#wp16656
Blick auf beide
GetMethodID
undCall<type>Method
- man nimmtjclass
, der andere nimmtjobject
.