使用AVAudioPlayer轻松搞定音频播放

转自:http://www.iphone-geek.cn/

iPhone SDK中的AVFoundation框架包括的AVAudioPlayer是一个容易使用而且功能强大,基于object-c的播放音频文件播放器。

本教程展示了怎样使用AVAudioPlayer。本教程将建立一个简单的程序,它能够循环播放一段mp3音频文件。

源代码/Guithub

教程的源代码在GitHub上。你可以从仓库中克隆或直接下载zip文件。

创建项目

Launch Xcode and create a new View-Based iPhone application called AudioPlayer:
启动Xcode并创建一个“View-Based iPhone application”项目,取名为AudioPlayer:

    1.从Xcode菜单选择“File > New Project …”
    2.从“iPhone OS > Application”部分选择“View-based Application”,然后按“Choose…”
    3.将项目命名为“AudioPlayer”并按“Save”

添加AVFoundation框架

为使用SDK的AVAudioPlayer类,我们需要将AVFoundation框架加入项目:

    1.在项目的“Groups & Files”面板上,展开“Targets”
    2.Control+点击或右击AudioPlayer
    3.选择“Add > Existing Frameworks…”
    4.点击Linked Libraries下左下方的+按钮
    5.选择“AVFoundation Framework“并按Add
    6.“AVFoundation framewoks”将出现在“Linked Libraries”下,关闭窗口

下面,我们将引入AVFoundation的头文件


 1.展开项目“Group & Files”面板下AudioPlayer项目
    2.打开Classes文件夹
    3.选取AudioPlayerViewController.h进行编辑
    4.更改文件。更改以下粗体字部分:
1
2
3
4
5
6
7
8
#import <UIKit/UIKit.h>
#import <AVFoundation/AVFoundation.h>

@interface AudioPlayerViewController :  UIViewController
{
    AVAudioPlayer   *audioPlayer;
}
@end

添加音频文件

我们需要一段音频文件来进行播放。文件为audiofie.mp3。我们将其加入项目中:

    1.按Control再左击或右击项目的“Group & Files”面板中的“Resources”文件夹
    2.从上下文菜单中选取“Add > Existing Files…
    3.找到并选择要导入的音频文件,按“Add”
    4.(有必要的话)选定“Copy items into destination group’s folder”方框并按“Add”

开始播放音频

我们在ViewDidLoad中启动音频播放:

    1.解除ViewDidLoad方法的注解
    2.更改如下,见粗体部分:
1
2
3
4
5
6
7
8
9
10
11
12
13
- ( void )viewDidLoad
{
    [super  viewDidLoad ];

    NSURL   *url = [ NSURL fileURLWithPath : [ NSString  
        stringWithFormat : @ "%@/audiofile.mp3",   [ [ NSBundle mainBundle ]  resourcePath ] ] ];
    NSError   *error;
    audioPlayer   = [ [AVAudioPlayer alloc ] initWithContentsOfURL :url error :&error ];
    audioPlayer.numberOfLoops   = - 1;
    if   (audioPlayer == nil )
        NSLog ( [error  description ] );
    else
          [audioPlayer  play ];

AVAudioPlayer是通过URL初始化的,所以我们首先要创立一个指向资源文件夹中音频文件的URL。将音频播放器的numberOfLoops属性设为负数使得播放无限循环。配置好音频播放器后,我们向播放器对象发送播放消息来启动播放。

记住在dealloc方法中释放audioPlayer。改变见粗体部分:

1
2
3
4
5
  - ( void )dealloc
{
    [audioPlayer  release ];
    [super  dealloc ];
  }

更多功能

你可以调节播放器音量,查看/设定播放的时间,暂停或停止播放:

1
2
3
4
5
  audioPlayer.volume = 0.5; // 0.0 - no  volume; 1.0 full volume
  NSLog ( @ "%f seconds played so  far", audioPlayer.currentTime );
  audioPlayer.currentTime = 10; // jump to  the 10 second mark
  [audioPlayer pause ];
  [audioPlayer stop ]; // Does not reset  currentTime; sending play resumes

最后,你还可以实现AVAudioPlayerDelegate协议,比如说,在音频播放结束时得到通知,这样你有可能移动到播放列表的下一首歌。

你可能感兴趣的:(play)