2011-04-01 76 views
2

Android应该通过可通过NDK访问的OpenSL es API支持3D音频。或多或少的作品,我管理它通过创建的播放器和输出组合播放声音。但是,当我试图通过3D位置界面(SL_IID_3DLOCATION常量)来实现一个监听器,这对于播放3D声音是必需的。但是,当我尝试将常量设置为SL_BOOLEAN_TRUE时,CreateListener方法的结果为12,因此传递给LogCat。 12是OpenSL常量SL_RESULT_FEATURE_UNSUPPORTED的值。下面你可以找到代码的一小部分,任何人都可以确认我做了什么错误,或者如果这个功能真的不合适,这意味着OpenSL es实现不支持3D音频?Android中支持的OpenSL ES功能

#define SL_RESULT_FEATURE_UNSUPPORTED  ((SLuint32) 0x0000000C) 

const SLInterfaceID listener_ids[] = {SL_IID_3DLOCATION}; 
const SLboolean listener_req[] = {SL_BOOLEAN_TRUE}; 

result = (*engine)->CreateListener(engine, &listenerObject, 1, listener_ids, listener_req); 
__android_log_print(ANDROID_LOG_VERBOSE, DEBUG_TAG, "CREATE: [%i]", result); 

assert(SL_RESULT_SUCCESS == result); 




result = (*listenerObject)->Realize(listenerObject, SL_BOOLEAN_FALSE); 
__android_log_print(ANDROID_LOG_VERBOSE, DEBUG_TAG, "REALIZE: [%i]", result); 

assert(SL_RESULT_SUCCESS == result); 

回答

0

我可能已经找到了解决这个当我上周已经重新审视这个问题。我张贴与第三方的lib这里可能的解决方案:

OpenSLES with 3D audio

也许有人谁需要它可以验证它是否工作。