iOS之录音

先在.h中声明这些熟悉,当然要引进 AVFoundation/AVFoundation.h 头文件


在.m中实现下面方法

- (void)viewDidLoad {

    [super viewDidLoad];

    // Do any additional setup after loading the view, typically from a nib.

    //设置刚打开的录音为不录音状态

    self.isRecording = NO;

    //播放按钮不能被点击

    [self.play setEnabled:NO];

    self.play.titleLabel.alpha = 0.5;

    //创建一个临时文件夹用于存放录音

    self.tmpFile = [NSURL fileURLWithPath:[NSTemporaryDirectory() stringByAppendingString:@"TmpFile"]];

    NSLog(@"%@",self.tmpFile);

    //设置后台播放

    AVAudioSession *session = [AVAudioSession sharedInstance];

    NSError *error = nil;

    [session setCategory:AVAudioSessionCategoryPlayAndRecord error:&error];

    //判断后台有没有播放

    if (session == nil) {

        NSLog(@"qqqqqqqq%@", [error description]);

    }

    else

    {

        [session setActive:YES error:nil];

        

    }

    

    self.play = [UIButton buttonWithType:UIButtonTypeSystem];

    [self.play setTitle:@"播放" forState:UIControlStateNormal];

    [self.view addSubview:self.play];

    [self.play addTarget:self action:@selector(playbu:) forControlEvents:UIControlEventTouchUpInside];

    self.play.frame = CGRectMake(100, 80, 175, 50);

    

    self.record = [UIButton buttonWithType:UIButtonTypeSystem];

    [self.record setTitle:@"录音" forState:UIControlStateNormal];

    [self.view addSubview:self.record];

    [self.record addTarget:self action:@selector(recordbu:) forControlEvents:UIControlEventTouchUpInside];

    self.record.frame = CGRectMake(100, 200, 175, 50);

    

}

- (void)recordbu:(UIButton *)sender {

    

    //判断当前录音状态

    if (!self.isRecording) {

        //变成录音状态

        self.isRecording = YES;

        //将录音按钮变成停止

        [self.record setTitle:@"停止" forState:UIControlStateNormal];

        

        //此时将播放按钮设置为不能点击

        [self.play setEnabled:NO];

        self.play.titleLabel.alpha = 0.5;

        

        //将录音文件保存到缓存文件

        self.recorder = [[AVAudioRecorder alloc] initWithURL:self.tmpFile settings:nil error:nil];

        

        //准备记录录音

        [self.recorder prepareToRecord];

        //启动或者恢复记录录音的录音文件

        [self.recorder record];

        self.player = nil;

        

    }

    //录音状态

    else

    {

        self.isRecording = NO;

        [self.record setTitle:@"录音" forState:UIControlStateNormal];

        //录音停止的时候, 播放按钮可以点击

        [self.play setEnabled:YES];

        self.play.titleLabel.alpha = 1;

        

        //停止录音

        [self.recorder stop];

        self.recorder = nil;

        NSError *error = nil;

        self.player = [[AVAudioPlayer alloc] initWithContentsOfURL:self.tmpFile error:&error];

        //当播放的录音为空, 打印错误信息

        if (self.player == nil) {

            NSLog(@"%@", [error description]);

        }

        self.player.delegate = self;

    }

    

    

}

- (void)playbu:(UIButton *)sender {

    //判断是否在播放, 如果正在播放

    if ([self.player isPlaying]) {

        //暂停

        [self.player pause];

        //按钮显示为播放

        [self.play setTitle:@"播放" forState:UIControlStateNormal];

        

    }

    else{

        //开始播放

        [self.player play];

        //按钮显示为暂停

        [self.play setTitle:@"暂停" forState:UIControlStateNormal];

    }

}


/* 代理方法  录音完成后 */

- (void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag

{

    //按钮标题变为播放

    [self.play setTitle:@"播放" forState:UIControlStateNormal];

    

}

好了就这样简单的录音功能完成。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值