标签:ios ios后台播放音乐 avaudiosession
1. 前言
AVAudioSession是一个单例,无需实例化即可直接使用。AVAudioSession在各种音频环境中起着非常重要的作用
针对不同的音频应用场景,需要设置不同的音频会话分类
1.1 ?AVAudioSession的类别
AVAudioSessionCategoryAmbient
–混音播放,例如雨声、汽车引擎等,可与其他音乐一起播放
AVAudioSessionCategorySoloAmbient
–后台播放,其他音乐将被停止
AVAudioSessionCategoryPlayback
–独占音乐播放
AVAudioSessionCategoryRecord
–录制音频
AVAudioSessionCategoryPlayAndRecord
–播放和录制音频
AVAudioSessionCategoryAudioProcessing
–使用硬件解码器处理音频,该音频会话使用期间,不能播放或录音
图解:
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]; |
标签:ios ios后台播放音乐 avaudiosession
原文地址:http://blog.csdn.net/qq871531334/article/details/44890539