【问题标题】:Choose between built in mic and headset in iOS在 iOS 中选择内置麦克风和耳机
【发布时间】:2012-11-01 21:13:26
【问题描述】:

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

我们从这些页面中看到了 2 个主题:Forcing iPhone Microphone as Audio InputUse built-in mic if Headset is plugged in,但我想根据这种情况没有任何定论。

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

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

这有什么新的吗?

谢谢!

【问题讨论】:

    标签: ios audio routes microphone remoteio


    【解决方案1】:

    警告:此答案仅适用于 iOS6。对于 iOS7 或更高版本不正确。详情见 cmets。

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

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

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

    (你不能混合使用这些。)

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

    如果在您设置此属性的值时插入了耳机 到kAudioSessionOverrideAudioRoute_Speaker,系统更改 输入和输出的音频路由:输入来自 内置麦克风;输出到内置扬声器。

    【讨论】:

    • 请注意,iPhone 能够区分耳机(组合式麦克风和耳机)和单独的耳机。这两种设备类型在路由更改方面的行为不同,因为当仅连接没有集成麦克风的耳机时,它显然无法更改输入路由。在这种情况下,我没有测试确切的行为。
    • iOS 7 已弃用,请使用 AVAudioSession - setPreferredInput:
    • Iwaz 的评论很重要:现在,在 iOS7 中,App 可以独立选择输入路由和输出路由。例如。您可以使用内置麦克风录制声音并通过已连接耳机的耳机同时播放此声音,而耳机的麦克风仍处于未使用状态。这在 iOS6 中是不可能的。扩展 API 在 AVAudioSession 类中。
    • @DanielS。您能否提供一个示例,如何从不同的路线播放和录制?使用哪个 api?
    • @zo_chu 自从我发布这个答案以来,API 发生了变化。我还没有使用新的 API,所以我不能给你一个例子,只是因为我不再是这方面的最新专家。但是,因为您提出的问题很重要,所以我认为值得花时间在 stackoverflow 上提出另一个问题,以获得对该主题的适当关注。此外,成功的专家对此有所了解,就有机会为他的工作赚取积分。
    猜你喜欢
    • 1970-01-01
    • 2017-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多