iOS- 關於AVAudioSession的使用——后台播放音樂


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/
本文版權歸作者和博客園共有,歡迎轉載,但必須保留此段聲明,且在文章頁面明顯位置給出原文連接。

 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM