WEB开发网
开发学院手机开发iPhone 开发 iPhone 应用开发:音频播放 阅读

iPhone 应用开发:音频播放

 2010-08-29 01:51:00 来源:WEB开发网   
核心提示:02 2. NSString *soundFilePath =03 3. [[NSBundle mainBundle] pathForResource: @"background"04 4. ofType: @"wav"];05 5. NSURL *fileURL = [[NSU

02 2. NSString *soundFilePath =

03 3. [[NSBundle mainBundle] pathForResource: @"background"

04 4. ofType: @"wav"];

05 5. NSURL *fileURL = [[NSURL alloc] initFileURLWithPath: soundFilePath];

06 6. AVAudioPlayer *newPlayer =

07 7. [[AVAudioPlayer alloc] initWithContentsOfURL: fileURL

08 8. error: nil];

09 9. [fileURL release];

1010. self.player = newPlayer;

1111. [newPlayer release];

1212. [self.player prepareToPlay];

1313. [self.player setDelegate: self];

1414. self.player.numberOfLoops = -1; // 循环播放音频,直到调用Stop方法

1515. [self.player play];

1616. }

可 以看到,只要将 AVAudioPlayer 的 numberOfLoops 属性设为负数,音频文件就会一直循环播放直到调用 stop 方法。AVAudioPlayer 同样支持 Callback,这是 AVAudioPlayerDelegate 的一个可选 delegate 方法:

view sourceprint? 11. - (void) audioPlayerDidFinishPlaying: (AVAudioPlayer *) player successfully: (BOOL) flag {

22. if (player == self.player && flag == YES) {

33. NSLog(@"Playback finish.");

44. }

55. }

另外,你可以随时控制 AVAudioPlayer 对象的播放、暂停以及停止,通过判断对象的状态,分别调用 play、pause 和 stop 方法即可:

view sourceprint? 1-(IBAction) playOrPause: (id) sender {

2 // 音频控制逻辑

3 if (self.player.playing) {

4 [self.player pause];

5 } else {

6 [self.player play];

7 }

虽 然 AVAudioPlayer 可以播放很多格式,但是我们在实际开发过程中还是最好使用一些没有压缩的格式,比如 WAVE 文件,这样可以减少系统处理单元的资源占用,以便更好的完成程序的其他功能。另外,在使用 AVAudioPlayer 连续播放 mp3 这类经过压缩的音频文件时,在连接处可能出现一定的间隔时间。

3. Audio Queue Services

如果以上两种音频播放的解决方案都无法满足你的需求,那么我想你肯定需要使用 Audio Queue Services。使用 Audio Queue

上一页  1 2 3 4  下一页

Tags:iPhone 应用开发 音频

编辑录入:coldstar [复制链接] [打 印]
赞助商链接