首页
Web开发
Windows程序
编程语言
数据库
移动开发
系统相关
微信
其他好文
会员
首页
>
移动开发
> 详细
iOS 限制录音时间为30秒
时间:
2015-04-24 09:22:10
阅读:
230
评论:
0
收藏:
0
[点我收藏+]
标签:
ios
录音
倒计时
长按手势
static int myTime = 30;
@interface ViewController ()
@property (weak, nonatomic) IBOutlet UIImageView *imageView;
@property (weak, nonatomic) IBOutlet UIButton *btn;
@property (weak, nonatomic) IBOutlet UIButton *playBtn;
@property (nonatomic) BOOL isRecording;
- (IBAction)playPause:(id)sender;
@property (retain, nonatomic) AVAudioPlayer *avPlay;
@property (nonatomic,assign) NSInteger firstTouch;
@property (nonatomic,strong) NSTimer *myTimer;
@property BOOL isOver;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
self.isOver=NO;
self.isRecording=NO;
[self.playBtn setEnabled:NO];
UILongPressGestureRecognizer *longPress =[[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(LongPressed:)];
[self.btn addGestureRecognizer:longPress];
self.playBtn.titleLabel.alpha = 0.5;
recordedFile = [NSURL fileURLWithPath:[NSTemporaryDirectory() stringByAppendingString:@"RecordedFile"]];
AVAudioSession *session = [AVAudioSession sharedInstance];
NSError *sessionError;
[session setCategory:AVAudioSessionCategoryPlayAndRecord error:&sessionError];
if(session == nil){
NSLog(@"Error creating session: %@", [sessionError description]);
}else{
[session setActive:YES error:nil];
}
}
- (void)LongPressed:(UILongPressGestureRecognizer *)longGesture{//长按开始 计时也开始
if (longGesture.state==UIGestureRecognizerStateBegan) {
self.myTimer = [NSTimer scheduledTimerWithTimeInterval:1.0f target:self selector:@selector(timerMove) userInfo:nil repeats:YES];
}else if(longGesture.state == UIGestureRecognizerStateEnded){//长按结束 录音也结束
[self.myTimer invalidate];
self.myTimer=nil;
//停止录音
UIAlertView *alert=[[UIAlertView alloc]initWithTitle:@"录音结束" message:@"最多允许录音30秒" delegate:self cancelButtonTitle:@"知道了" otherButtonTitles:nil, nil];
alert.delegate=self;
[alert show];
self.isRecording = NO;
[self.btn setTitle:@"结束录音" forState:UIControlStateNormal];
[self.playBtn setEnabled:YES];
[self.playBtn.titleLabel setAlpha:1];
[recorder stop];
recorder = nil;
NSError *playerError;
player = [[AVAudioPlayer alloc] initWithContentsOfURL:recordedFile error:&playerError];
if (player == nil) {
NSLog(@"ERror creating player: %@", [playerError description]);
}
player.delegate = self;
}
}
-(void)timerMove{
myTime --;NSLog(@"time : %d",myTime);
if (myTime == 0) {//停止录音
[_myTimer invalidate];
_myTimer=nil;
UIAlertView *alert=[[UIAlertView alloc]initWithTitle:@"录音结束" message:@"最多允许录音30秒" delegate:self cancelButtonTitle:@"知道了" otherButtonTitles:nil, nil];
alert.delegate=self;
[alert show];
self.isRecording = NO;
[self.btn setTitle:@"GCD结束录音" forState:UIControlStateNormal];
[self.playBtn setEnabled:YES];
[self.playBtn.titleLabel setAlpha:1];
[recorder stop];
recorder = nil;
NSError *playerError;
player = [[AVAudioPlayer alloc] initWithContentsOfURL:recordedFile error:&playerError];
if (player == nil) {
NSLog(@"ERror creating player: %@", [playerError description]);
}
player.delegate = self;
}else{
self.isRecording=YES;
[self.btn setTitle:@"GCD录音" forState:UIControlStateNormal];
[self.playBtn setEnabled:NO];
[self.playBtn.titleLabel setAlpha:0.5];
recorder = [[AVAudioRecorder alloc] initWithURL:recordedFile settings:nil error:nil];
[recorder prepareToRecord];
[recorder record];
player = nil;
}
}
- (void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag{
[self.playBtn setTitle:@"播放" forState:UIControlStateNormal];
}
- (IBAction)playPause:(id)sender {
if([player isPlaying]){
[player pause];
[self.playBtn setTitle:@"播放" forState:UIControlStateNormal];
}else{
[player play];
[self.playBtn setTitle:@"停止播放" forState:UIControlStateNormal];
}
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
recorder=nil;
player=nil;
NSFileManager *fileManager=[NSFileManager defaultManager];
[fileManager removeItemAtURL:recordedFile error:nil];
recordedFile=nil;
}
@end
iOS 限制录音时间为30秒
标签:
ios
录音
倒计时
长按手势
原文地址:http://blog.csdn.net/darongzi1314/article/details/45224905
踩
(
0
)
赞
(
0
)
举报
评论
一句话评论(
0
)
登录后才能评论!
分享档案
更多>
2021年07月29日 (22)
2021年07月28日 (40)
2021年07月27日 (32)
2021年07月26日 (79)
2021年07月23日 (29)
2021年07月22日 (30)
2021年07月21日 (42)
2021年07月20日 (16)
2021年07月19日 (90)
2021年07月16日 (35)
周排行
更多
关闭苹果IOS app自动更新
2021-07-29
开发一个即时通讯App
2021-07-28
iOS 跳转App Store进行评分
2021-07-26
诺基亚短信生成!太好玩了
2021-07-26
【Azure 应用服务】App Service 配置 Application Settings 访问Storage Account得到 could not be resolved: '*.file.core.windows.net'的报错。没有解析成对应中国区 Storage Account地址 *.file.core.chinacloudapi.cn
2021-07-26
Android系统编程入门系列之界面Activity响应丝滑的传统动画
2021-07-26
uniapp h5,app两端复制文本
2021-07-22
uni-app滚动视图容器(scroll-view)之监听上拉事件
2021-07-21
新型横向移动工具原理分析、代码分析、优缺点以及检测方案
2021-07-19
Android系统编程入门系列之界面Activity交互响应
2021-07-19
友情链接
兰亭集智
国之画
百度统计
站长统计
阿里云
chrome插件
新版天听网
关于我们
-
联系我们
-
留言反馈
© 2014
mamicode.com
版权所有 联系我们:gaon5@hotmail.com
迷上了代码!