Android NDK,c ++矢量数据类型

时间:2011-05-25 01:32:09

标签: android-ndk

float CalcDistance(vector<SoundInfo> &FeatA, vector<SoundInfo> &FeatB){
     do something here
}

如果我有这个c ++源代码,那么如何在Android中使用JNI呢? 我阅读了几个使用NDK的教程,并得到了一些基本的想法,但我不确定在c ++中哪种类型的数据结构必须从Java传递给JNI的类型向量 提前谢谢。

2 个答案:

答案 0 :(得分:0)

您可以从编写SoundInfo类型的Java等效项开始,如果它是结构或类(除非它是某种整数类型的typedef)。它应该携带足够的数据来构建SoundInfo。例如,Java对象可以包含SoundInfo构造函数的所有参数的等价物,并且可以直接作为字段访问它们以最小化JNI代码。

然后你可以编写两个辅助函数 - 一个用于将Java对象转换为SoundInfo,另一个用于将Java List<JSoundInfo>转换为vector<SoundInfo>

答案 1 :(得分:0)

您可能希望通过jobjectArray将对象传递给(JNI)/(Java)。您可以将SoundInfo填充到SoundInfo []并直接作为jobjectArray发送,或者如果您只想使用它提供的Get / Set方法,则传递对象本身。

请参阅Get / SetObjectField(),GetObjectArrayElement()等的JNI文档。