码迷,mamicode.com
首页 > 移动开发 > 详细

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
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!