如何配置OpenSL以与主扬声器或耳机以外的耳机配合使用

Rea*_*hed 3 android android-ndk opensl

我在android NDK中尝试了原生音频代码示例.当我尝试录制一些演讲然后播放它时它工作正常.它使用主扬声器(扬声器)进行语音播放.我想修改代码,以便在耳机而不是主扬声器中播放语音.有帮助吗?

Rea*_*hed 6

我解决了这个问题,我找到了一个相关主题的谷歌小组.这真的很有帮助.这是链接:https: //groups.google.com/forum/#!topic/android -ndk/O-hufEm20cU

我在android NDK提供的本机音频示例中测试了它.您必须先获取android配置界面,然后在创建音频播放器后将流类型设置为STREAM_VOICE.

// Code for working with ear speaker by setting stream type to STREAM_VOICE
SLAndroidConfigurationItf playerConfig;
result = (*bqPlayerObject)->GetInterface(bqPlayerObject, SL_IID_ANDROIDCONFIGURATION, &playerConfig);
SLint32 streamType = SL_ANDROID_STREAM_VOICE;
result = (*playerConfig)->SetConfiguration(playerConfig, SL_ANDROID_KEY_STREAM_TYPE, &streamType, sizeof(SLint32));
Run Code Online (Sandbox Code Playgroud)

  • 当你创建音频播放器时,我假设你已经采用了音量控制接口ID.然后设置布尔请求TRUE.现在获得音量控制界面,就像之前有流类型设置界面一样.试试这段代码,`const SLInterfaceID ids [4] = {SL_IID_ANDROIDCONFIGURATION,SL_IID_BUFFERQUEUE,SL_IID_EFFECTSEND,SL_IID_SEEK,SL_IID_VOLUME}; const SLboolean req [4] = {SL_BOOLEAN_TRUE,SL_BOOLEAN_TRUE,SL_BOOLEAN_TRUE,SL_BOOLEAN_TRUE,SL_BOOLEAN_TRUE}; result =(*engineEngine) - > CreateAudioPlayer(engineEngine,&bqPlayerObject,&audioSrc,&audioSnk,5,ids,req);` (2认同)