iOS- 關於AVAudioSession的使用——後臺播放音樂

weixin_34337265發表於2016-07-12

1.前言

•AVAudioSession是一個單例,無需例項化即可直接使用。AVAudioSession在各種音訊環境中起著非常重要的作用

•針對不同的音訊應用場景,需要設定不同的音訊會話分類

1.1AVAudioSession的類別

•AVAudioSessionCategoryAmbient

–混音播放,例如雨聲、汽車引擎等,可與其他音樂一起播放

•AVAudioSessionCategorySoloAmbient

–後臺播放,其他音樂將被停止

•AVAudioSessionCategoryPlayback

–獨佔音樂播放

•AVAudioSessionCategoryRecord

–錄製音訊

•AVAudioSessionCategoryPlayAndRecord

–播放和錄製音訊

•AVAudioSessionCategoryAudioProcessing

–使用硬體解碼器處理音訊,該音訊會話使用期間,不能播放或錄音

圖解:


2466108-e953b30ee7ed66d3.png

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/

本文版權歸作者和部落格園共有,歡迎轉載,但必須保留此段宣告,且在文章頁面明顯位置給出原文連線。

相關文章