学习总是在进行。
一、AVAudioPlayer如何处理中断
AVAudioPlayer类提供了代理方法,用来处理当播放音频文件时,发生来电、闹钟等事件。设置代理并遵守AVAudioPlayerDelegate协议,<span style="font-family: Arial, Helvetica, sans-serif;">AVAudioPlayerDelegate中提供的代理方法</span>
二、AVAudioPlayer代理方法实现
看例子:
1.加入音频相应的框架到项目中。
#import2.声明音频播放类,并且实现AVAudioPlayerDelegate协议@interface SquareViewController : UIViewController<AVAudioPlayerDelegate>{AVAudioPlayer *_audioPlayer;
}
@property (nonatomic,retain)AVAudioPlayer *audioPlayer;3.实现AVAudioPlayerDelegate协议方法。#pragma mark - AVAudioPlayerDelegate// 音频播放完成时
- (void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag{// 音频播放完成时,调用该方法。// 参数flag:如果音频播放无法解码时,该参数为NO。//当音频被终端时,该方法不被调用。而会调用audioPlayerBeginInterruption方法// 和audioPlayerEndInterruption方法}// 解码错误
- (void)audioPlayerDecodeErrorDidOccur:(AVAudioPlayer *)player error:(NSError *)error{NSLog(@"解码错误!");}// 当音频播放过程中被中断时
- (void)audioPlayerBeginInterruption:(AVAudioPlayer *)player{// 当音频播放过程中被中断时,执行该方法。比如:播放音频时,电话来了!// 这时候,音频播放将会被暂停。
}// 当中断结束时
- (void)audioPlayerEndInterruption:(AVAudioPlayer *)player withOptions:(NSUInteger)flags{// AVAudioSessionInterruptionFlags_ShouldResume 表示被中断的音频可以恢复播放了。// 该标识在iOS 6.0 被废除。需要用flags参数,来表示视频的状态。NSLog(@"中断结束,恢复播放");if (flags == AVAudioSessionInterruptionFlags_ShouldResume && player != nil){[player play];}}//- (void)audioPlayerEndInterruption:(AVAudioPlayer *)player withFlags:(NSUInteger)flags {
//
//    //该方法在iOS 6.0 中被废除
//    if (flags == AVAudioSessionInterruptionFlags_ShouldResume && player != nil){
//        [player play];
//    }
//
//}
//
//- (void)audioPlayerEndInterruption:(AVAudioPlayer *)player{
//    //该方法被废除
//
//}注意:因为以上两个方法在iOS 6.0 已经被废除。故注释。4.使用音频播放器播放音频文件//异步加载音频播放器进行播放self.view.backgroundColor = [UIColor whiteColor];dispatch_queue_t dispatchQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);dispatch_async(dispatchQueue, ^(void) {NSBundle *mainBundle = [NSBundle mainBundle];NSString *filePath = [mainBundle pathForResource:@"mySong" ofType:@"mp3"];NSData *fileData = [NSData dataWithContentsOfFile:filePath];NSError *error = nil;// 初始化音频控制器 self.audioPlayer = [[AVAudioPlayer alloc] initWithData:fileData error:&error];if (self.audioPlayer != nil){self.audioPlayer.delegate = self;// 设置 delegateif ([self.audioPlayer prepareToPlay] && [self.audioPlayer play]){// 播放成功 }else {// 播放失败 }}else {// 初始化 AVAudioPlayer 失败 }});

iOS AVAudioPlayer和AVAudioPlayerDelegate-音频播放处理中断相关推荐

  1. AVAudioPlayer和AVAudioPlayerDelegate-iOS音频播放器

    学习总是在进行. iPhone可以播放音频文件.这个我想地球人都知道.但是如何播放?今天来学习一下. 现学现卖吧! 1.加入音频相应的框架到项目中. #import 2.声明音频播放类,并且实现AVA ...

  2. iOS开发实用技术之音频播放(QQ音乐)

    音频播放 --- 一. 录音 0. 应用场景 大多数应用在即时通讯APP中, 语音发送 1. 录音步骤 导入AVFoundation框架 #import <AVFoundation/AVFoun ...

  3. iOS锁屏界面音频播放控制

    公司的app里面有后台音频播放功能,最近发现,当在锁屏界面(后台)时,不能控制播放页面的音频播放,是因为没有实现远程控制事件处理. 下面说说大概实现过程:由于后台播放功能早已实现(不做详细叙述),这里 ...

  4. iOS恢复QQ音乐等播放器中断

    在App中如果用AVAudioSession setActive等来中断其它播放器,当自己App中播放完毕,一般要恢复其它播放器. NSError *err; [[AVAudioSession sha ...

  5. ios系统html播放音频播放器,iOS音频播放之AVAudioPlayer,AVPlayer,AVQueuePlayer

    本文以婚语APP为例,来讲解集体使用方法. 在婚语APP中,分别使用了AVAudioPlayer,AVPlayer,AVQueuePlayer来实现音频播放功能,下面以婚语的实际需求分别介绍它们的使用 ...

  6. 【iOS】音频播放之AVAudioPlayer,AVPlayer,AVQueuePlayer

    前言 在婚语APP中,分别使用了AVAudioPlayer,AVPlayer,AVQueuePlayer来实现音频播放功能,下面以婚语的实际需求分别介绍它们的使用方法和区别. 需求1 档期备忘:用户新 ...

  7. iphone开发之音频播放类AVAudioPlayer的使用——加纯代码案例

    1.本节目标 (1)使用AVAudioPlayer类播放音频 (2)掌握后台播放音乐 (3)自定义后台任务 (5)使用MPMoviePlayer 2.IOS音频播放概述 (1)IOS系统中的音频播放方 ...

  8. 流媒体开发(一)音频播放

    序言 随着人们学习.娱乐和工作的需要,人们对如何在网络上传输海量的视频.音频等多媒体信息有了进一步的要求.在这种背景下,iOS流媒体技术应运而生.通俗的讲,所谓的iOS流媒体技术,就是将视音频文件经过 ...

  9. uniapp实现音频播放抢占系统音频焦点

    项目为使用uniapp框架开发的Android/iOS APP应用 实现功能需求 假设手机正在播放音乐,当前APP处于前台收到消息,需播放提示音提示用户.目标为降低后台正在播放音乐的音量,播放提示音, ...

最新文章

  1. 行人检测与重识别!SOTA算法
  2. 前些天做的一个物联网架构三层扩展
  3. 如何停oracle的job,ORACLE如何停止一个JOB
  4. Java如何解析markdown_使用Java实现的一款Markdown解析器md2x
  5. Java中怎样监测局域网内ip是否互通,类似ping
  6. 使用工厂模式与泛型对三层架构的每一层进行解耦
  7. datastage 函数_DataStage常用函数大全
  8. java集合转js数值_前端js调用接口转换Map数组数据
  9. java中邮箱发送_java实现邮箱发送(java mail)
  10. 国编是什么,需要什么条件,是什么流程?
  11. hadoop集群虚拟机配置
  12. Opencv图像二值化操作
  13. log4j的日志级别以及配置
  14. bracktrack5r3安装+bt5r3下安装vmwaretools
  15. 医学信息学计算机技术,2017年医学信息学专业大学排名
  16. 基本分段存储管理方式
  17. 电脑玩CF、DNF、LOL等游戏掉帧.卡顿.黑屏怎么办?驱动人生十大游戏检测图文教程
  18. 【Unity】 Unity主题皮肤
  19. HTML---基础篇
  20. html中样式属性有哪些,css字体样式属性有哪些?

热门文章

  1. POJ 2230 Watchcow 欧拉回路的DFS解法(模板题)
  2. C语言函数不能返回局部变量的地址
  3. 机器学习线性回归学习心得_机器学习中的线性回归
  4. Marvell 88E1111 linux driver
  5. 【Android 修炼手册】Gradle 篇 -- Android Gradle Plugin 主要 Task 分析
  6. 基于I2C协议的EEPROM驱动控制
  7. python内循环只执行一次_如何1分钟内从3600只股种选出黑马股,仅分享这一次(太透彻了)...
  8. datatable筛选条件_C#利用DataView的RowFilter对DataTable进行查询筛选
  9. 2016 server sql 错误53_MS SQL Server 错误53 错误17是什么?如何解决
  10. java 检测硬盘原理_深入Java核心 Java内存分配原理精讲