iPhone SDK audioSession 问题

Posted

技术标签:

【中文标题】iPhone SDK audioSession 问题【英文标题】:iPhone SDK audioSession question 【发布时间】:2009-10-23 13:45:17 【问题描述】:

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

【问题讨论】:

【参考方案1】:

当您使用会话进行播放和录制时,播放来自手机使用的扬声器,否则来自手机底部的扬声器。这是为了防止反馈。您可以像这样覆盖它(但请注意反馈,如果您不同时执行这两项操作,则不是问题)

    //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 好多了

【讨论】:

【参考方案2】:

要求用户插入耳机?

耳机+麦克风组合不存在这个问题。

我不知道这是否是一个错误,是音频硬件的结果, 或者如果安静的播放只是故意的和笨拙的 获得更干净的录音的方法。

更新

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

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

【讨论】:

以上是关于iPhone SDK audioSession 问题的主要内容,如果未能解决你的问题,请参考以下文章

MAP 与 iPhone 3.0 SDK 一起使用都有哪些限制?

如何使用 AssetsLibrary.framework 在 iphone sdk 中打开自定义相机?

iPhone 音频会话属性

iPhone - 无法使用硬按钮调节音量

iOS音频播放 :AudioSession 转

从代码控制 AudioSession