iPhone/iPad高级应用与手游开发学习笔记:AVAudioPlayer学习(音频播放demo)
来源:互联网 发布:7u分享网络赚一元 编辑:程序博客网 时间:2024/05/16 12:19
AVAudioPlayer是一个属于AVFoundation.framework的类,它的作用类似于一个功能强大的播放器,AVAudioPlayer支持广泛的音频格式。
一,新建一个simple view工程
二,在新建的工程中导入AVFoundation.framework库
三,再storyboard中拖入两个button,一个progress和一个label,如下图所示:
四,ViewController头文件的代码:
#import <UIKit/UIKit.h>
#import <AVFoundation/AVFoundation.h>
@interface FKViewController :UIViewController<AVAudioPlayerDelegate>
@property(strong, nonatomic)IBOutlet UIButton *bn1;
@property(strong, nonatomic)IBOutlet UIButton *bn2;
@property(strong, nonatomic)IBOutlet UILabel *show;
@property(strong, nonatomic)IBOutlet UIProgressView *prog;
-(IBAction)play:(id)sender;
-(IBAction)stop:(id)sender;
@end
五,ViewController实现类:
#import "FKViewController.h"
#import <AVFoundation/AVFoundation.h>
@interface FKViewController ()
@end
@implementation FKViewController
AVAudioPlayer *audioPlayer;
UIImage *playImage;
UIImage *pauseImage;
UIImage *stopImage;
CGFloat durationTime;
NSTimer *timer;
- (void)viewDidLoad
{
[superviewDidLoad];
playImage = [UIImageimageNamed:@"play.png"];
pauseImage = [UIImageimageNamed:@"pause.png"];
stopImage = [UIImageimageNamed:@"stop.png"];
//为两个按钮设置图片
[self.bn1setImage:playImageforState:UIControlStateNormal];
[self.bn2setImage:stopImageforState:UIControlStateNormal];
//获取要播放的音频文件的URL
NSURL *fileURL = [[NSBundlemainBundle] URLForResource:@"star"withExtension:@"mp3"];
//创建AVAudioPlayer对象
audioPlayer = [[AVAudioPlayeralloc] initWithContentsOfURL:fileURLerror:nil];
NSString *msg = [NSStringstringWithFormat:@"音频文件的声道数:%d\n音频文件的持续时间:%g",audioPlayer.numberOfChannels,audioPlayer.duration];
self.show.text = msg;
durationTime = audioPlayer.duration;
//将循环次数设为-1,用于指定该音频文件循环播放
//audioPlayer.numberOfLoops = -1;
audioPlayer.delegate =self;
}
-(void) audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag
{
if(player == audioPlayer && flag) {
NSLog(@"播放完毕!!");
[self.bn1setImage:playImageforState:UIControlStateNormal];
}
}
-(void) audioPlayerBeginInterruption:(AVAudioPlayer *)player
{
if(player == audioPlayer) {
NSLog(@"被中断!");
}
}
-(IBAction)play:(id)sender
{
//如果当前正在播放
if(audioPlayer.playing) {
//暂停播放
[audioPlayer pause];
[sender setImage:playImageforState:UIControlStateNormal];
} else {
//播放音频
[audioPlayer play];
[sender setImage:pauseImageforState:UIControlStateNormal];
}
//如果timer为nil,执行如下方法
if(timer == nil) {
//周期性的执行某个方法
timer = [NSTimerscheduledTimerWithTimeInterval:0.1target:selfselector:@selector(updateProg)userInfo:nilrepeats:YES];
}
}
-(IBAction)stop:(id)sender
{
//定制播放音频
[audioPlayer stop];
[timerinvalidate];
timer = nil;
}
-(void) updateProg
{
self.prog.progress =audioPlayer.currentTime/durationTime;
}
- (void)didReceiveMemoryWarning
{
[superdidReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end
六,最后再把用到的图片加上,音乐文件大家可以自己随便找个mp3都可以:
七,最后效果:
- iPhone/iPad高级应用与手游开发学习笔记:AVAudioPlayer学习(音频播放demo)
- iPhone/iPad高级应用与手游开发学习笔记:sqlite3学习(简单英文生词本demo)
- iPhone/iPad高级应用与手游开发学习笔记:多点触摸与手势检测(一:UITapGestureRecognizer)
- iPhone/iPad高级应用与手游开发学习笔记:多点触摸与手势检测(二:UIPinchGestureRecognizer)
- iPhone/iPad高级应用与手游开发学习笔记:多点触摸与手势检测(三:UIPinchGestureRecognizer和UIRotationGestureRecognizer)
- iPhone应用开发之AVAudioPlayer音频播放
- iPhone开发之AVAudioPlayer 音频播放
- 《疯狂iOS讲义(下)——iPhone/iPad高级应用与手游开发(含CD光盘1张)》
- Android应用开发学习笔记之播放音频
- iPhone 应用开发:音频播放
- iPhone 应用开发:音频播放
- iPhone 应用开发:音频播放
- iPhone 应用开发:音频播放
- iPhone 应用开发:音频播放
- iPhone 应用开发:音频播放
- iPhone 应用开发:音频播放
- iPhone 应用开发:音频播放
- iPhone 应用开发:音频播放
- lua清除cdn程序
- matlab:寻找峰值(波峰,波谷)
- 并查集
- hdu 简单题
- Linux内核模块-实例2(二)
- iPhone/iPad高级应用与手游开发学习笔记:AVAudioPlayer学习(音频播放demo)
- 输入一个小数,按不同格式输出
- 关于serveletContext.getRealPath()方法
- 第14届浙江大学程序设计竞赛 I. ?(>_o)! (ZOJ 3775)
- JavaScript 时间间隔和暂停及scrollleft的简单应用
- C语言里怎么对一组CHAR类型的数组进行查找
- ubuntu12.04下安装nvidia驱动
- hdu 模糊题
- 第六周工作周报