您的位置:首页 > 移动开发 > IOS开发

iOS下录音功能的实现

2015-02-27 21:13 417 查看
关于iOS系统下,录音功能的实现:

要导入AVFoundation.framework

在ViewController.h中

导入<AVFoundation/AVFoundation.h>

#import <UIKit/UIKit.h>

#import <AVFoundation/AVFoundation.h>

@interface ViewController :UIViewController

//存储路径

@property(nonatomic,strong)NSURL *tmpFile;

//录音

@property(nonatomic,strong)AVAudioRecorder *recorder;

//播放

@property(nonatomic,strong)AVAudioPlayer *player;

//是否录音

@property(nonatomic,assign)BOOL isRecoding;

在ViewController.m中

#import "ViewController.h"

@interfaceViewController ()<AVAudioPlayerDelegate>

@property (weak,nonatomic)
IBOutletUIButton *recondButton;

@property (weak,nonatomic)
IBOutletUIButton *playButton;

@end

@implementation ViewController

- (void)viewDidLoad {

    [superviewDidLoad];

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

    

   //刚打开时录音状态为NO

    self.isRecoding =NO;

   //播放按钮不能点击
    [self.playButton
4000
setEnabled:NO];

    self.playButton.titleLabel.alpha
= 0.5;

    

    

   //创建一个临时文件来存储录音文件

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

    

    

    //设置后台播放

    AVAudioSession *session = [AVAudioSessionsharedInstance];
   NSError *sessionError;

    [session setCategory:AVAudioSessionCategoryPlayAndRecorderror:&sessionError];
   if (session ==
nil) {

        NSLog(@"Error creating sessing: %@",[sessionErrordescription]);
    }else {
        [sessionsetActive:YESerror:nil];
    }

    
}

//播放按钮
- (IBAction)playPause:(id)sender
{

   //判断是否正在播放
   if ([self.playerisPlaying])
{
       //暂停播放
        [_playerpause];

        

        //按钮显示为播放

        [self.playButtonsetTitle:@"播放"forState:UIControlStateNormal];
    }else {
       //开始播放
        [_playerplay];

        //按钮显示为暂停

        [self.playButtonsetTitle:@"暂停"forState:UIControlStateNormal];
    }
}

//录音
- (IBAction)statrStopRecord:(id)sender
{
   if (!self.isRecoding) {

        //不录音时点击 让录音状态变为yes
       self.isRecoding =YES;
       //

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

        

        

        

        //设置播放按钮不能点击
        [self.playButtonsetEnabled:NO];
       self.playButton.titleLabel.alpha
=0.5;

        

        

        
               //开始录音

        self.recorder = [[AVAudioRecorderalloc]initWithURL:_tmpFilesettings:nilerror:nil];
       //准备记录录音

        [_recorderprepareToRecord];

       //启动或恢复记录的录音文件
        [_recorderrecord];
       _player =
nil;

        

        
    }else {

       //录音状态点击录音按钮 停止录音
<
b5a9
p style="margin-top:0px;margin-bottom:0px;font-family:Menlo;">       self.isRecoding =NO;

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

        //播放按钮可以点击
        [self.playButtonsetEnabled:YES];
        [self.playButton.titleLabelsetAlpha:1];

        

        
       //停止录音
        [_recorderstop];
       _recorder =
nil;

        

        

        
       NSError *playError;
       //播放录音
       self.player = [[AVAudioPlayeralloc]initWithContentsOfURL:_tmpFileerror:&playError];

       //当播放录音为空 打印错误信息
       if (self.player ==nil)
{
           NSLog(@"Error crenting player: %@",[playErrordescription]);
        }
       self.player.delegate =self;
    }
}

//当录音播放结束的时候 调用的方法

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

    //录音在播放停止后 标题变为play

    [self.playButtonsetTitle:@"播放"forState:UIControlStateNormal];
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息