簡單做一個播放音樂的小demo:
- 搭建界面,放三個按鈕放坏,播放咙咽、暫停、停止
- 播放音效淤年,因為文件小钧敞,所以不需要進行什么控制。音樂文件的時間比較長麸粮,那就會有暫停播放犁享、繼續(xù)播放這些控制的需求。那就不能簡單的搞一個soundID去播放豹休,而是需要用到AVAudioPlayer這個類。
- 創(chuàng)建的時候桨吊,需要指定url威根,一個url對應(yīng)一個對象,并且是只讀的视乐,不能修改洛搀。所以說,如果你想播放一首新的音樂佑淀,就需要重新創(chuàng)建一個AVAudioPlayer對象
- prepareToPlay留美,準備播放,把音頻文件加載到內(nèi)存中伸刃。也可以直接調(diào)用play 方法谎砾,它就會隱式調(diào)用prepareToPlay方法
- pause,暫定捧颅;stop景图,停止。
蘋果這里有一個非常不爽的地方碉哑,停止的時候挚币,默認也會繼續(xù)播放,如果需要真正挺值得話亮蒋,就要將時間進行歸零操作。- isPlaying 是否正在播放
- duration 當前播放音樂的總時長
- currentTime 當前播放的時間點
下面是實現(xiàn)代碼:
ViewController.m
#import "ViewController.h"
#import <AVFoundation/AVFoundation.h>
/**
1. 需要使用AVFoundatiaon框架
2. 創(chuàng)建音樂播放器
3. 根據(jù)需求, 進行播放/暫停/停止
*/
@interface ViewController ()
@property (nonatomic, strong) AVAudioPlayer *player;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
// 創(chuàng)建音樂播放器
//1. 獲取URL路徑
NSURL *url = [[NSBundle mainBundle] URLForResource:@"xxx.mp3" withExtension:nil];
//2. 創(chuàng)建一個error對象
NSError *error;
//3. 創(chuàng)建音樂播放器
self.player = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:&error];
if (error) {
NSLog(@"有錯誤產(chǎn)生是的邏輯判斷");
}
}
- (IBAction)playClick:(id)sender {
//1. 準備播放 --> 將音頻文件加載到內(nèi)存中 --> 這句話可以不寫 --> play會隱式調(diào)用prepareToPlay方法. 但是規(guī)范來說, 還是會寫上
[self.player prepareToPlay];
//2. 開始播放
[self.player play];
}
- (IBAction)pauseClick:(id)sender {
// 暫停播放
[self.player pause];
}
- (IBAction)stopClick:(id)sender {
// 停止播放
[self.player stop];
// 歸零操作 / 時間重置 currentTime--> 秒為單位
self.player.currentTime = 0;
}
@end