ios - 如果在通话过程中插入了麦克风,则无法恢复录制

标签 ios objective-c core-audio avaudiosession

目前,我正在iOS上开发应用程序,该应用程序通过AudioQueue记录音频文件。为了处理电话,闹钟等中断。我注册了notification的回调:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(audioSessionDidChangeInterruptionType:)
                                             name:AVAudioSessionInterruptionNotification object:self.session];

并妥善处理
- (void)audioSessionDidChangeInterruptionType:(NSNotification *)notification 
{
    AVAudioSessionInterruptionType interruptionType = (AVAudioSessionInterruptionType)[[[notification userInfo]
                                                                                    objectForKey:AVAudioSessionInterruptionTypeKey] unsignedIntegerValue];

    if (AVAudioSessionInterruptionTypeBegan == interruptionType)
    {
        //handle beginning or interruption
    }
    else if (AVAudioSessionInterruptionTypeEnded == interruptionType)
    {
        //handle end or interruption
    } 
}

一切正常,只要用户接到电话,录音就会暂停,然后在通话结束后恢复录音。但是有一个微小的细节打破了所有这些。如果我在microphone期间插入或拔出phone call,则不会恢复记录。之所以无法恢复,是因为当我结束通话时,没有调用带有audioSessionDidChangeInterruptionTypeAVAudioSessionInterruptionTypeEnded方法。对于应用程序,中断永远不会结束。

我有一个想法,当中断开始时启动NSTimer,然后每隔一秒检查一次电话是否已经结束,但是它有两个缺点:
  • 很脏
  • 不能解决所有情况,即闹钟。

  • 您是否遇到过此问题?如果是,您是否找到解决方法?

    我将iPhone 5S与iOS8配合使用。

    最佳答案

    从Apple iOS Human Interface Guidelines on Sound:

    用户使用头戴式耳机和头戴式耳机 private 聆听声音并免费
    他们的手。无论这些配件是有线的还是
    无线,用户对用户体验有特定的期望。

    当用户插入头戴式耳机或头戴式耳机或连接到无线设备时
    音频设备,他们打算继续收听当前音频,
    但私下里基于这个原因,他们希望目前有一个应用
    播放音频以继续播放而不会暂停。

    当用户拔下头戴式耳机或耳机或从
    无线设备(或设备超出范围或关闭),它们
    不想自动分享他们一直在听的内容
    其他。因此,他们希望有一个正在播放的应用
    音频暂停,以便他们在出现以下情况时可以明确地重新开始播放
    他们准备好了。

    鉴于您将很难找到一个干净的解决方案。

    关于ios - 如果在通话过程中插入了麦克风,则无法恢复录制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27721684/

    相关文章:

    ios - Firebase 'observe' 使用不同的数据多次触发

    ios - Google Plus 登录集成错误 iOS

    ios - Xcode,Bundle Display Name 可以作为 Product Name 的变量吗

    c++ - 如何获得正在监听的端口列表及其各自的应用程序名称

    cocoa - 我想构建一个 OSX 应用程序,将一些简单的 DSP 应用于所有音频。我从哪里开始?

    ios - iPad 上的 iCarousel 性能问题

    c# - 如何为 iPhone 制作聊天客户端

    iOS 杀死应用程序时如何缓存数据?

    ios - 如何使用 Swift 在 iOS 中同时录制和播放音频?

    ios - 核心音频,iOS : Failed to use mono Input and stereo output with RemoteIO