AVAudioSession、AVAudioRecorder、AVAudioPlayer
2015-10-07 13:51
411 查看
按钮显示为“录音”,点击显示为“停止”,再点击显示为“录音”
实现代码:
- (IBAction)onRecordButtonPressed:(id)sender
{
UIButton button = (UIButton )sender;
[sender setTitle:([button.titleLabel.text isEqualToString:@”录音”] ? @”停止” : @”录音”)forState:UIControlStateNormal];
}
项目:
“录音按钮”按钮:点击即可录音,录音时按钮显示为“停止”,点击则停止录音,此段录音被保存
“播放录音”按钮:点击即播放刚才的录音,播放时按钮显示为“停止”,点击即停止
总结:
//利用AVFoundation框架实现录音和播放(AVAudioSession、AVAudioRecorder、AVAudioPlayer)
程序的构建主要分为以下几步:
设置音频会话类型为AVAudioSessionCategoryPlayAndRecord,因为程序中牵扯到录音和播放操作。
创建录音机AVAudioRecorder,指定录音保存的路径并且设置录音属性。
实现录音机按钮
创建音频播放器AVAudioPlayer,用于在录音完成之后播放录音。
添加录音、暂停、恢复、停止操作,需要注意录音的恢复操作其实是有音频会话管理的,恢复时只要再次调用record方法即可,无需手动管理恢复时间等。
{
[_audioSession setActive:NO error:nil];
}
【创建音频播放器AVAudioPlayer】
- (IBAction)onPlayerButton:(id)sender
{
//“播放播音”及“停止”按钮的切换
UIButton button = (UIButton )sender;
[sender setTitle:([button.titleLabel.text isEqualToString:@”播放录音”] ? @”停止” : @”播放录音”)forState:UIControlStateNormal];
if( ![_audioPlayer isPlaying] )
{
if( [[NSFileManager defaultManager] fileExistsAtPath:[self getSoundPath]] )
{
_audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:[self getSoundPath]] error:nil];
[_audioPlayer setDelegate:self];
//加载音频文件至缓存
[_audioPlayer prepareToPlay];
//播放音频
[_audioPlayer play];
}
}
else
[_audioPlayer stop];
}
{
[self.playerButton setTitle:@”播放录音” forState:UIControlStateNormal];
}
实现代码:
- (IBAction)onRecordButtonPressed:(id)sender
{
UIButton button = (UIButton )sender;
[sender setTitle:([button.titleLabel.text isEqualToString:@”录音”] ? @”停止” : @”录音”)forState:UIControlStateNormal];
}
项目:
“录音按钮”按钮:点击即可录音,录音时按钮显示为“停止”,点击则停止录音,此段录音被保存
“播放录音”按钮:点击即播放刚才的录音,播放时按钮显示为“停止”,点击即停止
总结:
//利用AVFoundation框架实现录音和播放(AVAudioSession、AVAudioRecorder、AVAudioPlayer)
程序的构建主要分为以下几步:
设置音频会话类型为AVAudioSessionCategoryPlayAndRecord,因为程序中牵扯到录音和播放操作。
创建录音机AVAudioRecorder,指定录音保存的路径并且设置录音属性。
实现录音机按钮
创建音频播放器AVAudioPlayer,用于在录音完成之后播放录音。
添加录音、暂停、恢复、停止操作,需要注意录音的恢复操作其实是有音频会话管理的,恢复时只要再次调用record方法即可,无需手动管理恢复时间等。
import
pragma mark - 录音机代理方法
(void)audioRecorderDidFinishRecording:(AVAudioRecorder *)recorder successfully:(BOOL)flag{
[_audioSession setActive:NO error:nil];
}
【创建音频播放器AVAudioPlayer】
- (IBAction)onPlayerButton:(id)sender
{
//“播放播音”及“停止”按钮的切换
UIButton button = (UIButton )sender;
[sender setTitle:([button.titleLabel.text isEqualToString:@”播放录音”] ? @”停止” : @”播放录音”)forState:UIControlStateNormal];
if( ![_audioPlayer isPlaying] )
{
if( [[NSFileManager defaultManager] fileExistsAtPath:[self getSoundPath]] )
{
_audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:[self getSoundPath]] error:nil];
[_audioPlayer setDelegate:self];
//加载音频文件至缓存
[_audioPlayer prepareToPlay];
//播放音频
[_audioPlayer play];
}
}
else
[_audioPlayer stop];
}
pragma mark - 音频播放器代理方法
(void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag{
[self.playerButton setTitle:@”播放录音” forState:UIControlStateNormal];
}
相关文章推荐
- iOS--关于AFN和ASI的post登录请求
- IOS开发笔记-01按钮操作-12.frame&bounds&center属性
- iOS异常处理机制
- iOS封装的三个步骤
- IOS开发中的几种设计模式介绍(思想)
- ios NSString的一些知识
- IOS之Quartz
- iOS 获取屏幕分辨率大小错误的解决方法
- iOS: performXXX的几种方法总结:
- iOS中常见的项目文件
- iOS --- 关于block的常见使用方法
- 【IOS 开发学习总结-OC-35】★文件 I/O——NSPathUtilities.h管理路径+NSProcessInfo获取进程信息
- iOS-TextField
- iOS讲解迷惑之typedef枚举
- iOS9图片保存到相册
- iOS开发中一些小知识
- ios:NSKeyedArchiver/NSKeyedUnarchiver(归档/解档)
- iOS版本控制git小结--yoowei
- 解析iOS内存不足时的警告以及处理过程
- iOS中日期和字符串的相互转化