關於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];
}