iOS 限制录音时间为30秒

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

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。