天天看点

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,如需转载请自行联系原作者