我正在尝试将数据从笔记本电脑流式传输到Android中的本机代码 电话。 能够与笔记本电脑配对并获取数据一段时间,但本机 代码在以后的消息中崩溃:
“添加到JNI固定数组引用表失败”。
代码段:
//蓝牙读取处理程序的Java代码
案例MESSAGE_READ:
byte [] readBuf =(byte [])msg.obj;
//将缓冲区中的数据发送到本机代码
sendData(readBuf,msg.arg1);
.................................................. ......................
// C代码:
... sendData(JNIEnv * env,jclass cl,jbyteArray arr,jint size)
{
.....
jbyte buffer =(jbyte )env-> GetByteArrayElements(arr,& isCopy);
.... //将缓冲区复制到局部变量
if(isCopy == JNI_TRUE){
env-> ReleaseByteArrayElements(arr,buffer,JNI_ABORT);
}
可能有什么不对? 我已经在Java和C之间使用类似的代码进行数组传输 代码中的其他地方,并且工作正常。
答案 0 :(得分:0)
此问题已得到解决。 实际上,我指的“其他”部分有问题。
使用GetByteArrayRegion()代替GetByteArrayElements(),以便 没有钉扎问题。