iOS- 關於AVAudioSession的使用——後臺播放音樂
1.前言
•AVAudioSession是一個單例,無需例項化即可直接使用。AVAudioSession在各種音訊環境中起著非常重要的作用
•針對不同的音訊應用場景,需要設定不同的音訊會話分類
1.1AVAudioSession的類別
•AVAudioSessionCategoryAmbient
–混音播放,例如雨聲、汽車引擎等,可與其他音樂一起播放
•AVAudioSessionCategorySoloAmbient
–後臺播放,其他音樂將被停止
•AVAudioSessionCategoryPlayback
–獨佔音樂播放
•AVAudioSessionCategoryRecord
–錄製音訊
•AVAudioSessionCategoryPlayAndRecord
–播放和錄製音訊
•AVAudioSessionCategoryAudioProcessing
–使用硬體解碼器處理音訊,該音訊會話使用期間,不能播放或錄音
圖解:
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/
本文版權歸作者和部落格園共有,歡迎轉載,但必須保留此段宣告,且在文章頁面明顯位置給出原文連線。
相關文章
- iOS-音訊-AVAudioSessioniOS音訊Session
- matlab-播放音樂Matlab
- 關於Oracle RAC後臺程式Oracle
- 電臺類APP:百度樂播APP
- Android實現線上播放音樂Android
- iOS-無限迴圈輪播圖iOS
- 關於oracle後臺啟用的schedule jobOracle
- 在自己網站中插入網易雲音樂的外鏈,播放音樂網站
- 騰訊娛樂&艾漫資料:關於90後娛樂選擇的22個真相
- 【.NET 與樹莓派】讓喇叭播放音樂樹莓派
- html網頁無法自動播放音樂HTML網頁
- 關於音樂品味
- 關於 Laravel-admin 後臺管理系統 setTagsAttribute 的正確使用Laravel
- 使用soundPool播放音訊音訊
- 關於在swiper輪播元件中使用echarts的'click'事件無效元件Echarts事件
- 關於onethink移植後登陸不了後臺問題的解決
- 關於後臺資料庫設計的考慮(手機平臺)資料庫
- 關於pmon、smon、mman、mmon、mmnl後臺程式的解釋
- 關於後臺系統自動生成的一點思考
- 在Linux終端命令列下播放音樂的命令(Ubuntu)Linux命令列Ubuntu
- [BUG反饋]關於後臺無法釋出文章的BUG
- 【轉載】關於後臺許可權,我的幾點思考
- 基於django的視訊點播網站開發-step8-後臺登入功能Django網站
- 可用於Thinkphp的通用後臺PHP
- iOS音訊-AVAudioSessioniOS音訊Session
- Kusion智慧枕頭:是枕頭也是充電寶還能放音樂
- 關於BBSxp/LeadBBS的後臺上傳Webshell的雞肋防範Webshell
- 基於nginx-rtmp搭建點播平臺Nginx
- 基於django的視訊點播網站開發-step10-後臺評論管理功能Django網站
- 關於input 中 hidden屬性在後臺作用的例項
- 移動端 h5 ios不能自動播放音樂的問題:H5iOS
- Windows10系統連線藍芽裝置播放音樂的方法Windows藍芽
- iOS-關於Xcode中-ObjC、-all_load、-force_load的用法iOSXCodeOBJ
- 關於輪播圖的技術理解你知道多少
- 關於Promise後續的方法。Promise
- 2 Day DBA-管理Oracle例項-關於後臺程式Oracle
- 跨境電商後臺-關於上傳圖片的功能優化設計優化
- iOS-正規表示式使用iOS