0
AndroidのJNIを使用してCコードからJava関数を呼び出そうとしていますが、私はやや面倒です。JNI関数(Android)の外でCのJavaの関数を呼び出しますか?
私のCコードは、ライブラリに渡されるコールバック内のJNI関数の外部で実行されています。ここで
は、Javaコードここ
package com.my.java.package;
class MyClass {
public function handleData(byte[] data) {
doSomethingWithThisData(data);
}
}
の一例であるC Libはそれを行うために必要なものない時はいつでも今、それが引き金となるCコード
void handleData(uint8_t *data, size_t len) {
// I need to call handleData in my java
// class instance from here, but i have
// no access to a JNIEnv here.
// I don't think I can create one, since
// it has to be the same object that's
// sending JNI calls elsewhere.
}
. . .
myCLibInstance.callback = handleData;
の一例です折り返し電話。しかし、データを処理するためにjavaクラスに戻す方法はありません。
あなたJNIOnLoad関数は戻り値の型を利用できないようです..あなたは、VMを持っていたら、あなたは現在のスレッドにアタッチし、関数を呼び出す取得することができ、いずれかの方法を使用して、それはちょうど、ボイドすべきですか?それとも静的である必要がありますか編集:静的なjint'のように見えます –
私はこれを直ちに試しています。ありがとう –
'handleData'は静的ではありません。どのようにして電話をするつもりですか? – manuell