天天看點

iOS開發-音樂播放

現在的各種App大行其道,其實常用也就是圍繞着吃喝玩樂基本的需求,視訊,音樂在智能手機出現之前更是必不可少的功能,每個手機都會有一個自帶的音樂播放器,當然公衆也有自己的需求是以也就造就了各種音樂播放軟體,自己下午閑來無事簡單的寫了一個随機播放音樂的Demo,iOS中有三種播放音頻的方式AVAudioPlayer、音頻服務、音頻隊列。另外兩種暫時沒有用到,就簡單的練手了一下AVAudioPlayer,還是開始正題吧;

1.建立項目或者在原有項目重新弄一個頁面,先看頁面:

iOS開發-音樂播放

2.導入幾首自己喜歡的歌曲:

iOS開發-音樂播放

3.導入AVFoundation/AVFoundation.h,對四個按鈕進行事件操作,一個AVAudioPlayer隻能對應一個URL,是以播放其他歌曲的時候需要情況一下;

定義兩個成員變量,并且初始化成員變量:

1

2

3

4

<code>@interface</code> <code>MusicViewController ()</code>

<code>@property</code> <code>(</code><code>nonatomic</code><code>,strong)AVAudioPlayer *player;</code>

<code>@property</code> <code>(</code><code>nonatomic</code><code>,strong)</code><code>NSArray</code> <code>*musicArr;</code>

<code>@end</code>

 viewDidLoad執行個體化數組:

5

6

7

8

9

10

11

12

13

14

15

16

<code>- (</code><code>void</code><code>)viewDidLoad {</code>

<code>    </code><code>[</code><code>super</code> <code>viewDidLoad];</code>

<code>    </code><code>// Do any additional setup after loading the view.</code>

<code>    </code><code>self</code><code>.musicArr=@[@</code><code>"潮濕的心.mp3"</code><code>,@</code><code>"愛拼才會赢.mp3"</code><code>,@</code><code>"給我一個理由忘記.mp3"</code><code>];</code>

<code>    </code><code>[</code><code>self</code> <code>prepareMusic:</code><code>self</code><code>.musicArr[1]];</code>

<code>}</code>

<code>- (</code><code>void</code><code>)prepareMusic:(</code><code>NSString</code> <code>*)path{</code>

<code>    </code><code>//1.音頻檔案的url路徑</code>

<code>    </code><code>NSURL</code> <code>*url=[[</code><code>NSBundle</code> <code>mainBundle]URLForResource:path withExtension:Nil];</code>

<code>    </code> 

<code>    </code><code>//2.執行個體化播放器</code>

<code>    </code><code>_player=[[AVAudioPlayer alloc]initWithContentsOfURL:url error:Nil];</code>

<code>    </code><code>//3.緩沖</code>

<code>    </code><code>[_player prepareToPlay];</code>

4.四個對應事件的代碼:

随機:

<code>- (</code><code>IBAction</code><code>)random:(</code><code>id</code><code>)sender {</code>

<code>    </code><code>[</code><code>self</code> <code>prepareMusic:</code><code>self</code><code>.musicArr[arc4random()%3]];</code>

<code>    </code><code>[_player play];</code>

播放:

<code>- (</code><code>IBAction</code><code>)play:(</code><code>id</code><code>)sender {</code>

<code>    </code><code>//播放</code>

暫停:

<code>- (</code><code>IBAction</code><code>)pause:(</code><code>id</code><code>)sender {</code>

<code>    </code><code>//暫停</code>

<code>    </code><code>[_player pause];</code>

停止:

<code>- (</code><code>IBAction</code><code>)stop:(</code><code>id</code><code>)sender {</code>

<code>    </code><code>//停止</code>

<code>    </code><code>[_player stop];</code>

5.設定循環次數,開始播放時間,設定音量

<code>//設定音量</code>

<code>  </code><code>[_player setVolume:0.6];</code>

<code>  </code><code>//設定目前播放事件</code>

<code>  </code><code>[_player setCurrentTime:60];</code>

<code>  </code><code>//設定循環次數</code>

<code>  </code><code>[_player setNumberOfLoops:2];</code>

MusicViewController.m中的代碼:

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

<code>//</code>

<code>//  MusicViewController.m</code>

<code>//  MyPicture</code>

<code>//  Created by keso on 15/1/17.</code>

<code>//  Copyright (c) 2015年 keso. All rights reserved.</code>

<code>#import "MusicViewController.h"</code>

<code>#import &lt;AVFoundation/AVFoundation.h&gt;</code>

<code>@implementation</code> <code>MusicViewController</code>

<code>    </code><code>//設定音量</code>

<code>    </code><code>[_player setVolume:0.6];</code>

<code>    </code><code>//設定目前播放事件</code>

<code>    </code><code>[_player setCurrentTime:60];</code>

<code>    </code><code>//設定循環次數</code>

<code>    </code><code>[_player setNumberOfLoops:2];</code>

<code>- (</code><code>void</code><code>)didReceiveMemoryWarning {</code>

<code>    </code><code>[</code><code>super</code> <code>didReceiveMemoryWarning];</code>

<code>    </code><code>// Dispose of any resources that can be recreated.</code>

<code>/*</code>

<code>#pragma mark - Navigation</code>

<code>// In a storyboard-based application, you will often want to do a little preparation before navigation</code>

<code>- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {</code>

<code>    </code><code>// Get the new view controller using [segue destinationViewController].</code>

<code>    </code><code>// Pass the selected object to the new view controller.</code>

<code>*/</code>

其實需要設定還有很多,播放出現異常,或者被更進階别的系統任務打斷,可以通過設定相應的委托處理對應的的情形,Demo很小,iOS很多東西都是這樣,概念很多,調用的時候根本都不需要寫幾行代碼,iOS的模拟器播放的效果還是非常出色的~

 由于是播放音樂,無法模拟效果,大概試驗一下,應該沒有什麼問題~

本文轉自Fly_Elephant部落格園部落格,原文連結:http://www.cnblogs.com/xiaofeixiang/p/4231307.html,如需轉載請自行聯系原作者

繼續閱讀