【发布时间】:2017-02-11 21:44:41
【问题描述】:
我正在开发一个有助于处理一些信号处理应用程序的音频库 (AAR)。在我的库中,我将有一个通用信号处理块(用 C++ 编写并由 JNI 分层)。经过我的处理,我的库需要调用一些“回调”函数(由库用户定义),以便用户可以对处理后的信号进行“自定义”响应。
我希望这是在 C++ 中的接口,因此这个用户定义的“回调”函数也可以在我的 iOS 库中使用。但我不知道该怎么做。
以下是我的问题的一个示例
---------这是我的 AAR 库 --------------
在 jni.c 中
void (*userCallback)(int []);
void onAudioRecorded(int[] audio) { // this function is called by Java
// So some library processing
int[] processedAudio = libraryProcessing(audio);
// Pass this processed audio to the user-defined function
userCallback(audio);
}
---------这里是在一些用户的项目中包含我的 AAR 库 --------------
在用户应用的 user_jni.c 中
void setLibraryCallback() {
// HERE IS MY PROBLEM
// HOW CAN I SET MY LIBRARY’s userCallback to onAudioProcessed
}
void onAudioProcessed(int[] processedAudio) {
// Do some further processing
int[] finalAudio = userDefinedProcessing(processedAudio);
// Make some reactions based on finalAudio
}
【问题讨论】:
-
这不是 C,不要垃圾标签!也不是 C++。
标签: java android android-ndk java-native-interface