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

时间: 2024-10-23 17:09:12

iOS 限制录音时间为30秒的相关文章

云计算之路-阿里云上:神奇的“黑色30秒”再次出现,究竟是谁的错?

自从4月28日我们从ASP.NET线程的角度对"黑色30秒"问题进行分析之后,我们采用了新的线程设置,然后观察"黑色30秒"是否再次出现. <processModel enable="true" requestQueueLimit="5000" maxWorkerThreads="100" maxIoThreads="100" minWorkerThreads="50&q

C#winform判断鼠标30秒不动就关闭窗口

public partial class BaseForm : Form { private Timer timer; int x, y; DateTime start; bool ff = true; public BaseForm() { timer = new Timer(); x = Control.MousePosition.X; y = Control.MousePosition.Y; timer.Interval = 1000; timer.Tick += new EventHan

iOS开发项目篇—30下拉刷新

iOS开发项目篇—30下拉刷新 一.网络监控 当应用所处的网络环境不好的时候,获取不到相应的网络数据,考虑到用户对应用的使用体验,有必要对网络的状况进行监听. 在程序启动完的时候,监控网络 YYAppDelegate.m文件代码: 1 // 2 // YYAppDelegate.m 3 // 4 5 #import "YYAppDelegate.h" 6 #import "YYOAuthViewController.h" 7 #import "YYCont

30秒选出个中国好视频?秒拍“金栗子”奖还藏着两大风向

据媒体报道,4月12日,秒拍"金栗子"奖现场看片会暨颁奖仪式在北京举行,来自国内短视频行业的优秀内容方.资本方和平台方齐聚一堂,经过评委集体看片并现场评选产生了"最佳短视频奖"."最佳创意奖"."最佳幕后制作奖"."最佳表现力奖"."最佳正能量奖"."最佳新人奖"和"优秀短视频奖"等七项大奖. 很官方.很奥斯卡的话说完,新闻里倒是有一段话,颇让笔者

30秒创建Github Page

原文转自我的前端博客,链接:http://www.hacke2.cn/create-github-page/ 如果中国每个程序员都写博客,那么中国IT届的春天就来了 有同学问我的网站是怎么创建的,其实30秒就可以办到.话不多说,大家屏住呼吸,看看能不能坚持30秒:D 第一步 fork 我的博客使用的hpstr-jekyll-theme,基于jekyll的,我们都知道,Github是支持jekyll的是进入hpstr-jekyll-theme 的. Github 地址: https://githu

windows Service 之调试过程(附加到进程里调试,而且启动时间不能超过30秒)

最近第一次用C#写了一个windows service ,其实实现的内容比较简单.就是启动remoting 连接,但是调试相对初次写windws service 的我来说,比较烦.没有经验,而且没办法像调试其他windows 程序一样设置断点,无法看到运行过程.经过查看一些相关资料后,有了一点点调试的心得.特此留笔,以待今后使用. 相关源码: static void Main()        {            ServiceBase[] ServicesToRun; // 同一进程中可

每30秒运行一下shell脚本

cd /usr/local/sbin/     //存放shell脚本 目录. vim guoguosql.sh      //每30秒运行一个php文件.   文件路径为 vim /home/wwwroot/www/domain/huitiao/web/sql.php #! /bin/bash while :; do curl http://127.0.0.1:82/sql.php sleep 30 done sh /usr/local/sbin/guoguosql.sh &    //运行

【转】安装Intel HAXM为Android 模拟器加速,30秒内启动完成

http://www.cnblogs.com/Li-Cheng/p/4351966.html http://www.cnblogs.com/csulennon/p/4178404.html https://software.intel.com/en-us/android 要求 必备知识 windows 7 基本操作. 运行环境 windows 7(64位); Android Studio 1.1.0;JDK 1.7.0_75(64位);android-sdk_r24 下载地址 环境下载 最近开始

解读30秒充满手机电量的电池技术--以色列公司最新研发2016年将发布

一家以色列公司日前宣布,该公司已经研发出一项能够在数十秒内为手机充满电.数分钟内为电动汽车充满电的电池技术,这个技术进步将改变全球最具活力的两大消费产业. 这家公司名为StoreDot,总部位于以色列特拉维夫.该公司使用纳米技术合成高分子材料,使用这种材料生产的电池就好比高密度海绵,能够快速吸收并储存住大量电量. 当前这款电池的原型产品由于太过笨重,暂时还无法被使用在手机上.不过StoreDot称将于2016年发布能够适应手机需要的新型"纤薄"电池,到那时配备这种电池的手机只需充电30