Java 在android上使用JNI的成本
我正在编写一个应用程序(在android上),它使用java代码和本机代码。每隔一段时间,就需要播放一个声音。不幸的是,本机代码没有用于音频的API(或至少稳定/官方的API),但只有它知道何时需要播放声音。我想出了两种方法:Java 在android上使用JNI的成本,java,c++,android,java-native-interface,android-ndk,Java,C++,Android,Java Native Interface,Android Ndk,我正在编写一个应用程序(在android上),它使用java代码和本机代码。每隔一段时间,就需要播放一个声音。不幸的是,本机代码没有用于音频的API(或至少稳定/官方的API),但只有它知道何时需要播放声音。我想出了两种方法: 有一个功能可以跟踪(在队列中)需要播放的声音。调用时,它将返回一个字符串,给出需要播放的声音的名称。这样,java代码就可以调用这个函数,直到它得到一个空字符串,并在其中播放声音 返回需要播放的声音字符串数组,如果没有,则返回空数组 但后来我意识到JNI电话很贵。这些仍然
我不知道我将如何分析这一点,除了将两者结合起来,并看看什么更好,所以我非常感谢您的意见。非常感谢。请查看来自的NDK样品 Android SDK和NDK示例应用程序和文档(NV_事件、加速计、音频、JNI性能、OpenGL ES 2.0和多点触摸) 它包括您想要实现的JNI音频示例。还包括OpenGLES2.0示例和JNI性能测试代码
(此外,从Android 2.3开始,NDK的OpenSL ES音频API就可以使用了。)请从中查看NDK示例 Android SDK和NDK示例应用程序和文档(NV_事件、加速计、音频、JNI性能、OpenGL ES 2.0和多点触摸) 它包括您想要实现的JNI音频示例。还包括OpenGLES2.0示例和JNI性能测试代码
(此外,从Android 2.3开始,NDK的OpenSL ES音频API就可以使用。)没有足够的手机运行2.3,因此使用OpenSL ES NDK端是值得的。虽然如果是内存服务器,您也可以将opensl es与2.2上的ndk一起使用,即使他们直到2.3才将其添加到ndk中。至于tegra资源链接,有多少手机具备所需的硬件?感谢您NDK样品不仅适用于Tegra设备。除了Tegra的OpenGL ES 1.1/2.0扩展之外,它可以在所有Android手机上运行。没有足够的手机运行2.3,所以使用opensl ES ndk端是值得的。虽然如果是内存服务器,您也可以将opensl es与2.2上的ndk一起使用,即使他们直到2.3才将其添加到ndk中。至于tegra资源链接,有多少手机具备所需的硬件?感谢您NDK样品不仅适用于Tegra设备。除了Tegra的OpenGL ES 1.1/2.0扩展,它可以在所有Android手机上运行。