你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發綜合 >> iOS 限制錄音時間為30秒

iOS 限制錄音時間為30秒

編輯: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
  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved