我在android中使用Native库进行流式传输。
以下是该方案:
我将一个url传递给c文件,经过大量处理后,它将数据写入wav文件。
我不太熟悉C,但我能理解的是有一个int16_t
的指针,从中写出了wav文件。
这是一个问题。
有没有办法将int16_t
转换为jbytearray
,以便我可以将一个字节数组返回到我的java代码中?
由于
答案 0 :(得分:1)
我不知道关于Android的第一件事,但你可能想看看java.nio.ByteBuffer
- 可以让他们在本机内存(allocateDirect()
)中分配他们的缓冲区,所以本机函数可以直接写进去。
答案 1 :(得分:0)
您需要分配一个byte [],然后将WAV数据复制到其中。或者,创建一个跨越WAV数据的“直接”ByteBuffer,并将其传递给Java代码。
阅读JNI documentation和JNI Tips文档了解详情。特别是:
SetByteArrayRegion NewDirectByteBuffer