2009-10-23 72 views
6

在我的应用程序中,我同时录制和播放音频。该应用程序即将完成。但有一件事,那让我讨厌。当音频会话设置为PlayAndRecord时,与SoloAmbient类别的声音相比,声音变得安静。有什么方法可以使用PlayAndRecord发出更响亮的声音?iPhone SDK audioSession问题

回答

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

要求用户插入耳机吗?

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

我不知道这是一个错误,音频硬件的结果, 或者如果安静的播放只是一个有意和受到阻碍的获取更清晰录音的方式。

UPDATE

我发现设置PlayAndRecord会改变你的音频路由到接收器。
显然,用例是用于将用户手持设备放在耳边的电话应用程序。

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