Android JNI部分得到jbytearray,Java用byte[]数组进行接收。该如何实现?
先吐槽一下,我特么在百度上问过好多问题了。可是总也没有人回答。请教这是为何?难道百度知道上就没有人了么?我在Java中写了一个native方法。publicnatives...
先吐槽一下,我特么在百度上问过好多问题了。可是总也没有人回答。请教这是为何?难道百度知道上就没有人了么?
我在Java 中写了一个native方法。public native static byte[] getData().然后在JNI层写了一个相对应的函数
JNIEXPORT jbyteArray JNICALL Java_com_test_getData().
现在我已经在JNI得到了数据,也已经封装成了jbyteArray。可是我不知道该怎么把这个值进行封装返回,让Java端能进行接收。求教大神教育? 展开
我在Java 中写了一个native方法。public native static byte[] getData().然后在JNI层写了一个相对应的函数
JNIEXPORT jbyteArray JNICALL Java_com_test_getData().
现在我已经在JNI得到了数据,也已经封装成了jbyteArray。可是我不知道该怎么把这个值进行封装返回,让Java端能进行接收。求教大神教育? 展开
1个回答
展开全部
你都已经写方法的返回值了,就直接return 这个jbyteArray。java端就能接受到
追问
抱歉,直接返回是不可以的。实际测试过了。
追答
不用抱歉,既然这样我也试试。
public class NativeInterface {
public NativeInterface()
{
}
static{
System.loadLibrary("JniPicture");
}
public static native byte[] getData(byte[] data);
}
jni:
JNIEXPORT jbyteArray JNICALL Java_com_s2icode_main_NativeInterface_getData(
JNIEnv *env, jclass, jbyteArray jbjava) {
jbyteArray jb = jbjava;
__android_log_write(ANDROID_LOG_INFO, "hello", "BmpToGray777");
return jb;
}
调用处:
byte[] b = NativeInterface.getData(arrData);
Log.i("BAIDU", "b::::=="+b+"java arrData="+arrData);
打印结果:
02-05 10:48:21.015: I/BAIDU(892): b::::==[B@4368b5b8java arrData=[B@4368b5b8
顺便问下网友采纳是谁?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询