通过RFCOMM从PC到Android的蓝牙传输

时间:2010-10-25 01:49:56

标签: android-ndk

我正在尝试将数据从笔记本电脑流式传输到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之间使用类似的代码进行数组传输 代码中的其他地方,并且工作正常。

1 个答案:

答案 0 :(得分:0)

此问题已得到解决。 实际上,我指的“其他”部分有问题。

使用GetByteArrayRegion()代替GetByteArrayElements(),以便 没有钉扎问题。