【发布时间】:2014-03-01 20:29:37
【问题描述】:
我在 android NDK 中尝试过原生音频代码示例。当我尝试录制一些语音然后播放时,它工作正常。它使用主扬声器(扬声器)进行语音播放。我想修改代码,以便在耳机而不是主扬声器中播放语音。有什么帮助吗?
【问题讨论】:
标签: android android-ndk opensl
我在 android NDK 中尝试过原生音频代码示例。当我尝试录制一些语音然后播放时,它工作正常。它使用主扬声器(扬声器)进行语音播放。我想修改代码,以便在耳机而不是主扬声器中播放语音。有什么帮助吗?
【问题讨论】:
标签: android android-ndk opensl
我解决了这个问题,我找到了一个相关主题的 google 组。这真的很有帮助。这是链接: 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));
【讨论】:
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);