小编Lan*_*yen的帖子

如何写入和读取从java传递到jni的bytebuffer

我的android项目需要帮助.我想将缓冲区从java传递给jni,我的C++代码将填充数据.然后java将在屏幕上显示它们.我对C++并不熟悉,也不知道如何写入写入缓冲区.

这就是我得到的.在java中

ByteBuffer bb = ByteBuffer.allocateDirect(216);
        IssmJni.processBuffer(bb);
Run Code Online (Sandbox Code Playgroud)

本地方法

public static native void processBuffer(ByteBuffer bb);
Run Code Online (Sandbox Code Playgroud)

我不使用jni_onload,所以在C++中没有javah

static void fillBuffer(JNIEnv *env, jclass clazz, jobject buf)
    {
        double *dBuf = env->GetDirectBufferAddress(env, buf);

    }
Run Code Online (Sandbox Code Playgroud)

我被困在这里,我可以做双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}};
Run Code Online (Sandbox Code Playgroud)

除了最后一个之外,其他两个工作正常.

c++ java java-native-interface android android-ndk

7
推荐指数
1
解决办法
1万
查看次数

标签 统计

android ×1

android-ndk ×1

c++ ×1

java ×1

java-native-interface ×1