使用 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];

,一个有信念者所开发出的力量,大于99个只有兴趣者。

使用 AVAudioSession 实现后台播放音乐

相关文章:

你感兴趣的文章:

标签云: