如何在iOS中的特定时间启动和停止计时器
我的应用程序在特定的时间段检测音频,如10:00AM(startTime)-10:30AM(endTime),等等。现在当当前时间达到开始时间(表示当前时间也是10:00AM)时,如何调用音频检测过程并在(endTime)10:30AM停止检测过程。假设另一个时间间隔开始于上午10:15(开始时间)-上午10:45(结束时间)如何将结束时间从上午10:30更新到上午10:45。如何检查当前时间何时到达开始时间和结束时间。请帮助我它的紧急情况。谢谢这里我的代码如何在iOS中的特定时间启动和停止计时器,ios,xcode6,nsdate,nstimer,uilocalnotification,Ios,Xcode6,Nsdate,Nstimer,Uilocalnotification,我的应用程序在特定的时间段检测音频,如10:00AM(startTime)-10:30AM(endTime),等等。现在当当前时间达到开始时间(表示当前时间也是10:00AM)时,如何调用音频检测过程并在(endTime)10:30AM停止检测过程。假设另一个时间间隔开始于上午10:15(开始时间)-上午10:45(结束时间)如何将结束时间从上午10:30更新到上午10:45。如何检查当前时间何时到达开始时间和结束时间。请帮助我它的紧急情况。谢谢这里我的代码 ViewController.h
ViewController.h
@interface ViewController : UIViewController
{
BOOL IsListening;
}
//会话数组是包含程序开始和结束时间的字典数组
ViewController.m
-(void)viewDidLoad
{
[super viewDidLoad];
NSTimer* listener_timer = [NSTimer scheduledTimerWithTimeInterval: 10.0 target: self
selector: @selector(listeningHandler:) userInfo: nil repeats: YES];
}
-(void)listeningHandler:(NSTimer*)time
{
if (!IsListening)
{
double currentTime=[[NSDate date] timeIntervalSince1970];
for (NSDictionary * session in SessionsArray)
{
double startTime=[[session objectForKey:@“startTime”] doubleValue];
double endTime=[[session objectForKey:@“endTime”] doubleValue];
if (currentTime > startTime && currentTime < endTime)
{
//start listening.
IsListening =YES;
/*
//detection process code
*/
NSDate *fireDate = [NSDate dateWithTimeIntervalSinceNow:endTime];
NSTimer *timer = [[NSTimer alloc] initWithFireDate:fireDate
interval:5
target:nil
selector:@selector(fireEndtimeAlarm)
userInfo:nil
repeats:YES];
NSRunLoop *runLoop = [NSRunLoop currentRunLoop];
[runLoop addTimer:timer forMode:NSDefaultRunLoopMode];
}
}
}
else
{
double currentTime=[[NSDate date] timeIntervalSince1970];
for (NSDictionary * session in SessionsArray)
{
double startTime=[[session objectForKey:@"startTime"] doubleValue];
double endTime=[[session objectForKey:@"endTime”] doubleValue];
if (currentTime > startTime && currentTime < endTime)
{
// in between session
IsListening =YES;
/*
//detection process code
*/
}
}
}
}
-(void)fireEndtimeAlarm
{
IsListening = NO;
//stop detecting process at endTime
}
ViewController.m
-(无效)viewDidLoad
{
[超级视图下载];
NSTimer*listener_timer=[NSTimer scheduledTimerWithTimeInterval:10.0目标:self
选择器:@selector(listengHandler:)userInfo:nil repeats:YES];
}
-(void)ListingHandler:(NSTimer*)时间
{
如果(!IsListening)
{
double currentTime=[[NSDate date]时间间隔1970];
for(会话数组中的NSDictionary*会话)
{
double startTime=[[session objectForKey:@“startTime”]doubleValue];
double-endTime=[[session objectForKey:@“endTime”]doubleValue];
如果(currentTime>startTime&¤tTimestartTime&¤tTime
您可以使用2个本地通知来实现这一点
首先,在到达特定时间时安排特定通知,然后将运行触发器,并在该时间启动音频和视频
计划在30分钟后发出第二次通知,然后停止音频
对于本地通知,您可以遵循以下步骤
ios中的启动计时器和停止计时器
start Timer
timer= [NSTimer scheduledTimerWithTimeInterval:60.0f
target: self
selector: @selector(methodFromTimer)
userInfo: nil
repeats: YES];
stop timer
[timer invalidate];
timer=nil;