iOS中录音和播放实现
来源:互联网 发布:域名怎么交易 编辑:程序博客网 时间:2024/05/21 15:44
//首先导入框架后,导入头文件.以下内容为托控件,在storyboard中拖出两个按钮为录音和播放按钮
//创建一个UIViewController在.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;
@end
//在.m文件中写
#import "ViewController.h"
//添加代理
@interface ViewController ()<AVAudioPlayerDelegate>
//录音按钮
@property (weak, nonatomic) IBOutletUIButton *recordButton;
//播放按钮
@property (weak, nonatomic) IBOutletUIButton *playButton;
@end
@implementation ViewController
- (void)viewDidLoad {
[superviewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
//刚打开的时候录音状态为不录音
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)startStopRecord:(id)sender {
//判断当录音状态为不录音的时候
if (!self.isRecoding) {
//将录音状态变为录音
self.isRecoding =YES;
//将录音按钮变为停止
[self.recordButtonsetTitle:@"停止"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.recordButtonsetTitle:@"录音"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;
}
}
//播放按钮方法的实现
- (IBAction)playPause:(id)sender {
//判断是否正在播放,如果正在播放
if ([self.playerisPlaying]) {
//暂停播放
[_playerpause];
//按钮显示为播放
[self.playButtonsetTitle:@"播放"forState:UIControlStateNormal];
}else {
//开始播放
[_playerplay];
//
[self.playButtonsetTitle:@"暂停"forState:UIControlStateNormal];
}
}
//当播放结束后调用这个方法
- (void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag
{
//按钮标题变为播放
[self.playButtonsetTitle:@"播放"forState:UIControlStateNormal];
}
- iOS中录音和播放实现
- ios中同时录音和播放
- ios中同时录音和播放
- iOS录音和播放
- iOS录音和播放
- iOS 实时录音和播放
- iOS实现录音与播放功能
- ios AudioUnit bluetooth 录音 播放 实现
- ios 同时录音和播放问题
- iOS AVAudioPlayer AVAudioRecorder 录音和播放
- iOS 录音和视频录制播放
- 简介录音和播放音频实现
- 利用AVFoundation实现录音和播放
- android 录音和播放录音
- android录音和播放录音
- Android录音和播放录音
- Android 录音和播放录音
- ios 录音播放问题
- 关于 avd 无法打开 panic:not open:..的问题
- UVA 103--- Stacking Boxes
- 计算机网络基础
- Android学习笔记
- Ubuntu Linux系统环境变量配置文件简介
- iOS中录音和播放实现
- MyEclipse使用教程:Linux Internal Web浏览器的兼容性
- C#基础学习之【7】事件的使用
- 各种浏览器的Hack写法(chrome firefox ie等)
- 用Beamer制作幻灯片(卷一 基本架构篇)
- 为什么大部分人喜欢稳定?
- 此程序存在兼容性问题
- android_性能调优
- android:scrollbar的一些属性