iOS 多媒体(1)——音频的播放

来源:互联网 发布:王国保卫战2 mac 编辑:程序博客网 时间:2024/04/29 21:16

使用AVAudioPlayer播放 引用AVFoundation类库

MainContoller.h代码:

#import <UIKit/UIKit.h>#import <AVFoundation/AVFoundation.h>@interface MainController : UIViewController<AVAudioPlayerDelegate>{    AVAudioPlayer *audioPaly;}@property (retain, nonatomic) IBOutlet UISlider *volumeSlider;@property (retain, nonatomic) IBOutlet UILabel *timeLabel;@property (retain, nonatomic) IBOutlet UISlider *currentTimeSlider;- (IBAction)volumerAction:(id)sender;- (IBAction)currentChange:(id)sender;@property (retain, nonatomic) IBOutlet UIButton *btnPaly;- (IBAction)btnPlay:(id)sender;@end


MainContoller.h代码:

#import "MainController.h"@interface MainController ()@end@implementation MainController- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil{    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];    if (self) {        // Custom initialization    }    return self;}- (void)viewDidLoad{    [super viewDidLoad];    NSString *path=[[NSBundle mainBundle]pathForResource:@"感谢" ofType:@"MP3"];    NSURL *url=[NSURL fileURLWithPath:path];    audioPaly=[[AVAudioPlayer alloc]initWithContentsOfURL:url error:nil];        //设置delegate    audioPaly.delegate=self;    //准备播放    [audioPaly prepareToPlay];        //设置音量的最大最小值    self.volumeSlider.minimumValue=0;    self.volumeSlider.maximumValue=1;        double allTime=audioPaly.duration;//总时长    //设置进度的最值    self.currentTimeSlider.minimumValue=0;    self.currentTimeSlider.maximumValue=allTime;//总时长        if (self.currentTimeSlider.value <allTime) {         [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(timerAction:) userInfo:nil repeats:YES];     }          if ([audioPaly play]) {        NSLog(@"开始播放");    }        if (audioPaly.playing) {        [self.btnPaly  setTitle:@"暂停" forState:UIControlStateNormal];    }}-(void)timerAction:(NSTimer *)timer{    double currentTime=audioPaly.currentTime;    //可以设置为分钟的形式    self.timeLabel.text=[[NSString alloc]initWithFormat:@"%.2f/%.2f",currentTime,audioPaly.duration];    self.currentTimeSlider.value=audioPaly.currentTime;        }- (void)didReceiveMemoryWarning{    [super didReceiveMemoryWarning];    // Dispose of any resources that can be recreated.}- (void)dealloc {    [_volumeSlider release];       [_timeLabel release];    [_currentTimeSlider release];    [_btnPaly release];    [super dealloc];}- (IBAction)volumerAction:(id)sender {        audioPaly.volume=self.volumeSlider.value;    }- (IBAction)currentChange:(id)sender {    audioPaly.currentTime=self.currentTimeSlider.value;}- (IBAction)btnPlay:(id)sender {    if (audioPaly.playing) {        [audioPaly pause];        [self.btnPaly  setTitle:@"播放" forState:UIControlStateNormal];           }    else    {        [audioPaly play];        [self.btnPaly  setTitle:@"暂停" forState:UIControlStateNormal];    }}#pragma mark----AvAudioPlayDlegate/* audioPlayerDidFinishPlaying:successfully: is called when a sound has finished playing. This method is NOT called if the player is stopped due to an interruption. */- (void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag{    NSLog(@"播放结束");}@end

.xib文件布局



原创粉丝点击