iPhone SDK audioSession问题

时间:2009-10-23 13:45:17

标签: iphone objective-c session audio

在我的应用程序中,我同时录制和播放音频。该应用程序几乎完成。但是有一件事让我烦恼。当音频会话设置为PlayAndRecord时,与SoloAmbient类别的相同声音相比,声音变得安静。有没有什么办法可以使用PlayAndRecord让声音更响亮?

2 个答案:

答案 0 :(得分:7)

当您使用会话进行播放和录制时,播放来自用于电话的扬声器,否则它会从位于电话底部的扬声器发出。这是为了防止反馈。你可以像这样覆盖它(但要注意反馈,如果你不同时做两件事就不要出问题)

    //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

更好

答案 1 :(得分:-1)

要求用户插入耳机?

耳机+麦克风组合不会遇到这个问题。

我不知道这是一个错误,是音频硬件的结果, 或者如果安静的播放只是故意的,并且是有趣的 获得更清晰录音的方式。

<强>更新

我发现设置PlayAndRecord会话会将您的音频路径更改为接收方 显然,该用例适用于电话应用程序,用户可以将设备放在他的耳边。

如果这不违反最低惊喜原则,我不知道是什么。