在 iOS 中选择内置麦克风和耳机

the*_*oon 5 audio routes microphone ios remoteio

我们正在开发一个需要在 iOS 中更改音频路由的应用程序。我们需要从麦克风输入中获取一些信息,然后切换到设备的内部麦克风来录制环境声音。

我们已经从这些页面看到了 2 个主题:强制 iPhone 麦克风作为音频输入如果耳机已插入则使用内置麦克风,但我想根据这种情况没有任何最终决定。

现在,代码可以工作了,但我们可以选择音频输入的路径。

我们在 Apple (Remote IO) 提供的文档中没有找到任何内容。

这有什么新的吗?

谢谢!

Dan*_* S. 2

警告:此答案仅适用于 iOS6。对于 iOS7 或更高版本不正确。详情请参阅评论。

\n\n

这是可能的,但只会带来副作用。更改输入设备也会更改输出设备。您将无法通过内置麦克风进行录音,同时通过耳机的耳机实时收听您的录音。这意味着,如果您不想通过耳机同时收听录音,有一个解决方案适合您:

\n\n

连接耳机(= 组合耳机和麦克风)后,您可以在两种选择之间进行选择:

\n\n
    \n
  • 内部麦克风用于输入,扬声器用于输出
  • \n
  • 耳机的麦克风用于输入,耳机的耳机用于输出
  • \n
\n\n

(不能混合使用这些。)

\n\n

您可以通过音频会话服务 API 的函数AudioSessionSetProperty设置属性kAudioSessionProperty_OverrideAudioRoute来选择其中一种替代方案。该财产的文件说:

\n\n
\n

如果在将此属性\xe2\x80\x99s 值\n 设置为 时插入耳机kAudioSessionOverrideAudioRoute_Speaker,则系统会更改\n 输入和输出的音频路由:输入来自\n 内置麦克风; 输出到内置扬声器。

\n
\n

  • 它在 iOS 7 上已弃用,请使用 AVAudioSession - setPreferredInput: (5认同)
  • Iwaz的评论非常重要:现在,在iOS7中,App可以独立选择输入路由和输出路由。例如,您可以使用内置麦克风录制声音,并通过连接的耳机的耳机同时播放该声音,而耳机的麦克风保持不使用。这在 iOS6 中是不可能的。扩展的API位于AVAudioSession类中。 (2认同)