現在的各種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,如需轉載請自行聯系原作者