1.前言  

•AVAudioSession是一个单例,无需实例化即可直接使用。AVAudioSession在各种音频环境中起着非常重要的作用
•针对不同的音频应用场景,需要设置不同的音频会话分类

1.1AVAudioSession的类别  

•AVAudioSessionCategoryAmbient
–混音播放,例如雨声、汽车引擎等,可与其他音乐一起播放
•AVAudioSessionCategorySoloAmbient
–后台播放,其他音乐将被停止
•AVAudioSessionCategoryPlayback
–独占音乐播放
•AVAudioSessionCategoryRecord
–录制音频
•AVAudioSessionCategoryPlayAndRecord
–播放和录制音频
•AVAudioSessionCategoryAudioProcessing
–使用硬件解码器处理音频,该音频会话使用期间,不能播放或录音
图解:

类别

输入

输出

与iPOD混合

遵从静音

AVAudioSessionCategoryAmbient

No

Yes

Yes

Yes

AVAudioSessionCategorySoloAmbient

No

Yes

No

Yes

AVAudioSessionCategoryPlayback

No

Yes

No

No

AVAudioSessionCategoryRecord

Yes

No

No

No

AVAudioSessionCategoryPlayAndRecord

Yes

Yes

No

No

2.后台播放音乐  

2.1.设置后台任务  

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
+ (UIBackgroundTaskIdentifier)backgroundPlayerID:(UIBackgroundTaskIdentifier)backTaskId
{
    // 1. 设置并激活音频会话类别
       AVAudioSession *session = [AVAudioSession sharedInstance];
    [session AVAudioSessionCategoryPlayback error:nil];
    [session setActive:YES error:nil];
    // 2. 允许应用程序接收远程控制
    [[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
    // 3. 设置后台任务ID
      UIBackgroundTaskIdentifier newTaskId = UIBackgroundTaskInvalid;
    newTaskId = [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:nil];
    if (newTaskId != UIBackgroundTaskInvalid && backTaskId != UIBackgroundTaskInvalid) {
        [[UIApplication sharedApplication] endBackgroundTask:backTaskId];
    }
    return newTaskId;
}

2.2.设置后台播放  

?
1
2
3
4
5
6
7
//后台播放音频设置 
AVAudioSession *session = [AVAudioSession sharedInstance];   
[session setActive:YES error:nil];   
[session setCategory:AVAudioSessionCategoryPlayback error:nil];  
 
//让app支持接受远程控制事件 
[[UIApplication sharedApplication] beginReceivingRemoteControlEvents]; 

2.3.记录后台播放代号  

?
1
2
3
4
5
// 后台播放任务Id
UIBackgroundTaskIdentifier  _bgTaskId;
// 设置音频会话,允许后台播放
_bgTaskId = [SoundTool backgroundPlayerID:_bgTaskId];

转载于:https://www.cnblogs.com/zfrankice/articles/4394294.html

iOS- 关于AVAudioSession的使用——后台播放音乐相关推荐

  1. IOS后台运行 之 后台播放音乐

    IOS后台运行 之 后台播放音乐 iOS 4开始引入的multitask,我们可以实现像ipod程序那样在后台播放音频了.如果音频操作是用苹果官方的AVFoundation.framework实现,像 ...

  2. 解决 后台播放音乐时,设置手机铃声,后台音乐不会暂停

    2019独角兽企业重金招聘Python工程师标准>>> 手机后台播放音乐时,设置手机铃声,后台音乐不会暂停,此现象的为设置手机铃声界面,并没要加入播放的foucs机制, 此修改在pa ...

  3. android后台自播放音乐,Android实现后台播放音乐(Service方式)

    Android实现后台播放音乐(Service方式) 实现: 在res文件夹下添加raw文件夹,添加mp3/4格式的音乐文件 注意命名规则只能是a-z,0-9,和下划线_ 不能大写字母和- Andro ...

  4. Android后台播放音乐保活,安卓后台保活黑科技 播放无声音乐

    1.准备一段无声的音频,新建一个播放音乐的Service类,将播放模式改为无限循环播放.在其onDestroy方法中对自己重新启动. public class PlayerMusicService e ...

  5. android mediaplayer 后台播放,Android服务—基于MediaPlayer后台播放音乐

    Android服务-基于MediaPlayer后台播放音乐 操作环境:Android Studio 4.0.0.SDK Level 21(版本5.0 Lollipop).Windows 10.集成显卡 ...

  6. Android 音乐APP(五)音乐通知栏、后台播放音乐

    Android 音乐通知栏 前言 正文 ① 通知栏按钮点击监听 ② 通知栏点击监听 ③ 通知栏业务处理 ④ 运行效果图 结语 前言   这篇文章的标题有些言简意赅了,也突出了这篇文章的核心,那就是通知 ...

  7. 后台播放音乐时进来电话或微信视频通话暂停音乐播放 网易云音乐 喜马拉雅...

    最近项目中遇到一个问题,app内音乐后台播放时,如果有电话或者微信视频通话进来,app后台音乐还在播放.这样就造成用户体验不好,研究了市面上的音乐播放器,比如网易云音乐就很好的做到了如果有微信视频或者 ...

  8. Android使用本地Service实现后台播放音乐

    配置文件 <service android:name=".MyService"></service> 布局 <Buttonandroid:id=&qu ...

  9. 总结三种方法使用Service实现在后台播放音乐、暂停音乐、停止音乐的功能

    文章目录 通过startService方式开启 通过bindService开启 使用bindService+AIDL开启 通过startService方式开启 public class MyServi ...

最新文章

  1. java ios支付接口开发_微信支付接入(Android/IOS(swift)/Java后台)
  2. C 之父:精通C 很难,但你一天之内就能学习使用C
  3. css练习题4,复习webpack4之CSS文件代码分割
  4. 坑哭了!老牌教育机构也崩盘,疑失联跑路,学员却还得继续还贷
  5. java在初始化过程_Java初始化和实例化顺序
  6. Linux下安装gcc和g++
  7. mysql卸载不干净 linux,CentOS下如何完全卸载MySQL?解决卸载不干净的问题
  8. 百度地图实战Android开发视频教程
  9. 程序员微信名昵称_微信名字大全
  10. Spark核心开发者:性能超Hadoop百倍,算法实现仅有其1/10或1/100
  11. CAD注记层转到SDE Annotation Features(ArcEngine,C++实现)(转载)
  12. 计算机设备配备情况,计算机设备配置标准.doc
  13. php后台界面修改教程,帝国cms后台界面修改方法
  14. byfen网java_用java编写程序根据考试成绩的等级打印出百分制分数段
  15. 仿佛来自虚空,Grothendieck的故事2
  16. 月薪40k+测试·开发同步认可的FastAPI:Python 世界里最受欢迎的异步框架
  17. Win10重装系统提示:在efi系统上windows只能安装到gpt磁盘
  18. 强烈推荐这11个Python开源项目,非常值得入门学习(从入门到Python高级开发)
  19. 【数据结构与算法】尚硅谷韩顺平老师+含java代码(更新中)
  20. String-到底创建了几个对象???

热门文章

  1. python基础之常用的高阶函数
  2. (转)MySQL自带的性能压力测试工具mysqlslap详解
  3. C++ Primer 5 CH4 表达式
  4. 58.贪心算法练习:  最小新整数
  5. 如何创建sequence
  6. kubernetes--配置文件
  7. 创建一个属于自己的博客
  8. Python环境 及安装
  9. webservice-WebService试题
  10. life list 2010