我的Android项目需要帮助。我想将缓冲区从java传递到jni,而我的C 代码将填充数据。然后,java将它们显示在屏幕上。我对C不太熟悉,也不知道如何编写写入缓冲区。
这就是我得到的。在java中
ByteBuffer bb = ByteBuffer.allocateDirect(216);
IssmJni.processBuffer(bb);
本机方法
public static native void processBuffer(ByteBuffer bb);
我不使用jni_onload,所以在C ++中没有javah
static void fillBuffer(JNIEnv *env, jclass clazz, jobject buf)
{
double *dBuf = env->GetDirectBufferAddress(env, buf);
}
我被 困在这里 ,我可以加倍 dbuf吗? 还是必须是char ?
让我说我要向该dbuf写1,2,3,4,5,我该怎么做?我在想dbuf.put(1); …
dbuf.put(5),但是它不起作用。并填充它后,我是否只需在Java中调用bb.get(position)?
有人请为我澄清一下,例子将不胜感激谢谢
这是我的本机方法表
静态JNINativeMethod method_table [] = {
{"fac" , "(J)J" , (void *) factorial},
{"getBuffer", "()[D" , (void *) getBufferNative},
//{"processBuffer", "(Ljava/nio/ByteBuffer)V", (void *) fillBuffer}};
除最后一个以外,其他两个都工作正常。