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