在我的应用程序中,我同时录制和播放音频。这个应用程序就快完成了。但有一件事让我很恼火。当音频会话设置为PlayAndRecord时,与SoloAmbient类别的相同声音相比,声音会变得安静。有没有办法用PlayAndRecord让声音变得更响亮?
发布于 2010-01-27 20:27:14
使用会话进行播放和录音时,播放将从电话使用的扬声器中播放,否则将从电话底部的扬声器中播放。这是为了防止反馈。你可以像这样覆盖它(但要注意反馈,如果你不同时做这两件事,那就不是问题)
//when the category is play and record the playback comes out of the speaker used for phone conversation to avoid feedback
//change this to the normal or default speaker
UInt32 doChangeDefaultRoute = 1;
AudioSessionSetProperty (kAudioSessionProperty_OverrideCategoryDefaultToSpeaker, sizeof (doChangeDefaultRoute), &doChangeDefaultRoute);这段代码在3.1.2版本的sdk上运行,你必须做一些不同的事情。
UInt32 audioRouteOverride = kAudioSessionOverrideAudioRoute_Speaker;
status = AudioSessionSetProperty (kAudioSessionProperty_OverrideAudioRoute, sizeof (audioRouteOverride), &audioRouteOverride);你必须小心使用这种方法,即使你插入了耳机,它也会被覆盖,你必须监控中断并相应地更改路由。现在使用3.1.2要好得多
发布于 2010-01-23 21:49:07
让用户插上耳机?
耳机+麦克风组合不会受到这个问题的影响。
我不知道这是一个bug,还是音频硬件的结果,或者静音回放只是为了获得更清晰的录音的一种故意和笨拙的方式。
更新
我发现设置PlayAndRecord会话会改变到接收器的音频路由。
显然,这种用例适用于用户将设备举到耳朵上的电话应用程序。
如果这不违反最小惊讶原则,我不知道什么会违反。
https://stackoverflow.com/questions/1613556
复制相似问题