我有一个以下问题.我想编写一个Android应用程序,它使用我的旧C++类.我必须在整个应用程序生命周期中保持C++对象的存活.
我在C#中编写了一个类似的应用程序,并通过将指向C++的指针传递给C#并使用IntPtr将其存储在那里来解决问题.然后,当我想在该对象上调用一个方法时,我只是将该指针再次传递给C++,转换为类指针并在其上调用一个方法.
如何在Java和Android NDK中实现类似的结果?Java是否支持存储指针?
我的 Java 本机音频库有问题,但首先,这是我当前的方法:
所以现在我试图弄清楚如何防止从 C++ 或 Java 中删除流。
一种解决方案是在流中创建一个线程,以防止删除。
但我不喜欢这个解决方案......
因此,我搜索了如何使此类对象保持活动状态,并发现可以使用 JNI 进行所谓的“全局引用”。但我不明白它们是只适用于java对象还是两者都适用。
我还尝试了另一种 C++ 指针类型是否可以提供帮助。
我感谢任何帮助或想法,它不一定只是 JNI。C++ 标准库方法/函数/类等也很好:)!
系统信息:
全局流意味着所有 JNI 方法都可以访问该流。
编辑:
好吧,“为了让猫从后面出来”,我正在使用 RtAudio。 实时 C++ 音频库
例子:
//THIS IS C++ CODE
RtAudio audio(RtAudio::WASAPI);
int callback(//Buffer stuff etc.){
//do something
if(data.isEmpty())return 1;//invokes audio.closeStream() but this does NOT closes the stream!
else return 0; //Go on with the stream rather wait for the next call
}
JNIEXPORT void JNICALL openStream(jintArray …Run Code Online (Sandbox Code Playgroud)