iOS開發拓展篇—封裝音頻檔案播放工具類
一、簡單說明
1.關于音樂播放的簡單說明
(1)音樂播放用到一個叫做AVAudioPlayer的類
(2)AVAudioPlayer常用方法
加載音樂檔案
- (id)initWithContentsOfURL:(NSURL *)url error:(NSError **)outError;
- (id)initWithData:(NSData *)data error:(NSError **)outError;
準備播放(緩沖,提高播放的流暢性) - (BOOL)prepareToPlay;
播放(異步播放)- (BOOL)play;
暫停 - (void)pause;
停止- (void)stop;
是否正在播放 @property(readonly, getter=isPlaying) BOOL playing;
時長 @property(readonly) NSTimeInterval duration;
目前的播放位 @property NSTimeInterval currentTime;
播放次數(-1代表無限循環播放,其他代表播放numberOfLoops+1次 @property NSInteger numberOfLoops;
音量 @property float volume;
是否允許更改速率@property BOOL enableRate;
播放速率(1是正常速率,0.5是一般速率,2是雙倍速率) @property float rate;
有多少個聲道 @property(readonly) NSUInteger numberOfChannels;
2.播放多個音樂檔案
說明:如果要播放多個音樂檔案,那麼最傻瓜的做法是,建立多個全局的播放器去播放對應的音樂檔案,但是這種方法無法适用于需要播放的檔案數量巨大的情況。
另外一種做法是:自己封裝一個播放音樂檔案的工具類。
封裝工具類的實作步驟:
建立一個類,繼承自NSObject類。提供三個對外的接口:
分别是:
播放音樂(參數:檔案名,傳回值:BOOL)
暫停音樂(參數:檔案名)
停止音樂(參數:檔案名)
該工具類中的代碼設計如下:
YYAudioTool.h檔案
YYAudioTool.m檔案
測試程式:
在storyboard中拖拽控件,并進行連線,以做控制。
導入可供播放的音樂素材。
測試程式的代碼設計如下:
二、對工具類進行改造,讓其兼能播放音效檔案
說明:
音效隻有建立、播放和銷毀(停止)三個操作,因為音效一般都很短,是以沒有暫停的方法。
把對音效檔案的播放加入到工具類中,實作的代碼如下:
代碼測試:
代碼說明:
列印的值為0,播放成功(因為函數是C++中的)