将int16_t转换为jbytearray

时间:2010-11-12 14:43:49

标签: android c java-native-interface android-ndk

我在android中使用Native库进行流式传输。


以下是该方案:

我将一个url传递给c文件,经过大量处理后,它将数据写入wav文件。

我不太熟悉C,但我能理解的是有一个int16_t的指针,从中写出了wav文件。


这是一个问题。

有没有办法将int16_t转换为jbytearray,以便我可以将一个字节数组返回到我的java代码中?

由于

2 个答案:

答案 0 :(得分:1)

我不知道关于Android的第一件事,但你可能想看看java.nio.ByteBuffer - 可以让他们在本机内存(allocateDirect())中分配他们的缓冲区,所以本机函数可以直接写进去。

答案 1 :(得分:0)

您需要分配一个byte [],然后将WAV数据复制到其中。或者,创建一个跨越WAV数据的“直接”ByteBuffer,并将其传递给Java代码。

阅读JNI documentationJNI Tips文档了解详情。特别是:

SetByteArrayRegion   NewDirectByteBuffer