2

ネイティブ コードの Android プラットフォームで、int 配列を割り当てました

mBuffer = new int[BUFSIZE];

これをJava側に送りたい、Javaメソッドはこれ

public void WriteBuffer(int[] buffer, int size) 
{

}

このようなJavaコードにコールバックします

const char* callback = "WriteBuffer";

mWriteMethod =  env->GetMethodID(cls, callback, "([II)V");     

これはJavaメソッドを呼び出しますが、私のJavaコードではバッファがnullです。実際の配列ではなく動的に割り当てられたメモリへのポインタを実際に渡しているので、おそらくそれが機能しない理由ですが、ポインタをJavaに渡す方法がわかりません。とにかく、Java側で整数配列としてバッファパラメータが必要です。

上記を変更して機能させる方法を知っている人はいますか?

ありがとう

4

1 に答える 1

2

あなたの質問に対する私の理解は、Javaメソッドを呼び出してそれにWriteBufferaを渡したいというint[]ことです。
jni で必要になる疑似コード

jintArray buffer; 
buffer= (*env)->NewIntArray(env, BUFSIZE); 
(*env)->SetIntArrayRegion(env, buffer, 0,BUFSIZE, mBuffer);    

SetIntArrayRegion()mBuffer から Java 配列にコピーされます。

于 2012-06-11T12:50:04.243 に答える