现在的各种App大行其道,其实常用也就是围绕着吃喝玩乐基本的需求,视频,音乐在智能手机出现之前更是必不可少的功能,每个手机都会有一个自带的音乐播放器,当然公众也有自己的需求所以也就造就了各种音乐播放软件,自己下午闲来无事简单的写了一个随机播放音乐的Demo,iOS中有三种播放音频的方式AVAudioPlayer、音频服务、音频队列。另外两种暂时没有用到,就简单的练手了一下AVAudioPlayer,还是开始正题吧;
1.新建项目或者在原有项目重新弄一个页面,先看页面:

2.导入几首自己喜欢的歌曲:
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 <AVFoundation/AVFoundation.h></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,如需转载请自行联系原作者