·您现在的位置: 云翼网络 >> 文章中心 >> 网站建设 >> app软件开发 >> IOS开发 >> iOS-关于AVAudioSession的使用——后台播放音乐

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

作者:佚名      IOS开发编辑:admin      更新时间:2022-07-23

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.设置后台任务  

+ (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.设置后台播放  

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

 2.3.记录后台播放代号  

// 后台播放任务Id
UIBackgroundTaskIdentifier  _bgTaskId;

// 设置音频会话,允许后台播放
_bgTaskId = [SoundTool backgroundPlayerID:_bgTaskId];

 

 

 

作者: 清澈Saup
出处: http://www.cnblogs.com/qingche/
本文版权归作者和博客园共有,欢迎转载,但必须保留此段声明,且在文章页面明显位置给出原文连接。