我想从java调用这个本地方法:
void SoundTouch::putSamples(const SAMPLETYPE *samples, uint nSamples)
在我的 Java 代码中,我有这个:
public native void putSamples(byte[] samples, int nSamples);
现在我想编写 JNI 部分来桥接这个方法和函数,但是本机函数需要一个 type 的参数SAMPLETYPE
,但我不知道如何从 to '转换jbyteArray
' SAMPLETYPE
。
extern "C" JNIEXPORT void Java_com_example_test_SoundTouch_putSamples(JNIEnv *env, jobject thiz, jbyteArray samples ,jint numSamples){
[Some magic to convert samples to FRAMETYPE I guess...]
st.putSamples(???, numSamples);
}
如果使用 eclipse 搜索,我发现的唯一看似相关的代码是在 STTypes.cpp 中,即:typedef float SAMPLETYPE;
这是否意味着我必须将我的 byte[] 转换为 float[],如果是这样,如何?