iOS 使用AVAudio播放音乐中断处理

在使用AVFoundation框架中的AVAudioPlayer播放音乐时,会出现中断的情况,比如接听电话,或者接听FaceTime,这就要通过注册通知来处理,

[NSNotificationCenter defaultCenter] addobserver:self selector:@selector(handleInterruption:) name :AVAudioSessionInterruptionNotifacation object:[AVAudioSession shareInstance]];

- (void)dealloc{
  [[NSNotificationCenter defaultCenter] removeObserver:self];
}
- (void)handleInterruption:(NSNotification *)notification{
  NSDictionary *info = notification.userInfo;
  AVAudioSessionInterruptionType type = [info[AVAudioSessionInterruptionTypeKey] unsignedIntegerValue];
  if(type == AVAudioSessionInterruptionTypeBegan)  //中断开始(比如有电话打入时,播放音乐就这这个时间停止了)
  {
  
    //停止播放
     [self.player stop];

      if(self.delegate)
      {
        [self.delegate playbackStopped];//通过代理更改音乐暂停时的样式
      }
  }else{
    // 当中断音乐结束时,会有一个 AVAudioSessionInterruptionOptions 这样的值来表明音频会话是否已经重新激活,是否可以再次播放
    AVAudioSessionInterruptionOptions options = [info[AVAudioSessionInterruptionKey] unsignedIntergerValue];
    
    if(options == AVAudioSessionInterruptionOptionShouldResume)
    {
      //音乐恢复播放
      [self.player play];
  
      if(self.delegate)
      {
        [self.delegate playbackBegan]; //通过代理更改音乐播放时的样式
      }
    }
  }
}
当接收到中断通知时,音频会话就已经被终止,且 AVAudioPlayer已经处于暂停的状态,调用[self.player stop]方法,也只能更新内部状态,并不能停止音乐。


 

  

转载于:https://www.cnblogs.com/poky/p/5842175.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值