美文网首页
AVAudioRecorder 有来电时中断录音和恢复录音功能

AVAudioRecorder 有来电时中断录音和恢复录音功能

作者: Gumball_a45f | 来源:发表于2022-05-19 21:57 被阅读0次

    1、原因

    接到需求:

    • 要求录音时有电话、微信电话、QQ电话进来时暂停录音,电话挂断后恢复录音
    • 录音时长分为10分钟一段

    2、录音中断方法

    • 监听AVAudioSession的通知AVAudioSessionInterruptionNotification(发生音频中断时系统发布的通知)官方描述
      • 通知返回的是AVAudioSessionInterruptionType枚举
      /// Values for AVAudioSessionInterruptionTypeKey in         AVAudioSessionInterruptionNotification's
      /// userInfo dictionary.
      typedef NS_ENUM(NSUInteger, AVAudioSessionInterruptionType) {
      AVAudioSessionInterruptionTypeBegan = 1, ///< the system has interrupted your     audio session
      AVAudioSessionInterruptionTypeEnded = 0, ///< the interruption has ended
      };
      
      • 当监听到通知下是userInfo:{@"AVAudioSessionInterruptionType":@"1"},则暂停录音userInfo:{@"AVAudioSessionInterruptionType":@"0"},则恢复录音
      [[[AVAudioRecorder alloc] init] pause];//暂停
      [[[AVAudioRecorder alloc] init] stop];//停止录音,关闭文件
      
      [[[AVAudioRecorder alloc] init] prepareToRecord];//创建文件并准备记录。会自动记录下来。
      [[[AVAudioRecorder alloc] init] record];//开始或恢复记录到文件
      
    发现问题:恢复录音时,若应用没在前台则恢复不成功
    解决方法:增加一个应用到前台的监听UIApplicationDidBecomeActiveNotification

    3、录音分段方法

    • 用定时器,在到十分钟时结束录音,自动开启下一段录音
    • 在录音中断时挂起计时器,录音恢复时恢复计时器。
    • 恢复录音只需要调用record,会恢复到之前的文件中

    注意:

    • 计时器为空时不能挂起
    • 如果dispatch_source_t处于dispatch_suspend的状态,这个时候调用dispatch_cancel的话,就会导致崩溃。
    • dispatch_resume不能多次调用

    相关文章

      网友评论

          本文标题:AVAudioRecorder 有来电时中断录音和恢复录音功能

          本文链接:https://www.haomeiwen.com/subject/eqqxprtx.html