iOS下錄音功能的實現

關於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.playButtonsetEnabled: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 {

       //錄音狀態點擊錄音按鈕 停止錄音

       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];

}









發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章