想知道是否有功能检查我是否达到峰值功率一定时间然后做某事。
伪代码
最大阈值-110db 如果用户保持@此阈值超过5秒显示警报 其他 什么都不做。
编辑:回答
-(void)thresholdCheck:(NSString *)peakValue
{
int sec = hit/60; //1/60sec
NSString *tempSec = [NSString stringWithFormat:@"%i",sec];
[timeTrash setText:tempSec];
if (110<[peakValue intValue])//110db
{
hit++;
NSLog(@"hit threshold %i",hit);
}
else
{
hit =0;
//NSLog(@"hit threshold %i",hit);
}
if (hit >=330)//more then 5 sec {
NSLog(@"hit thresholded %i",hit);
[recorder stop];
[levelTimer invalidate];
UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"Threshold Hit" message:@"Sorry You Hit the threshold" delegate:self cancelButtonTitle:@"ok" otherButtonTitles:nil, nil];
[alert show];
}
答案 0 :(得分:2)
我怀疑你会找到一个现成的功能,你会在这里做你所要求的。一个简单的finite state machine(FSM)似乎非常适合解决方案。如果您还不熟悉FSM,请查看此tutorial。
您可以使用enum和switch语句实现简单的FSM,如here所示,或者在我上面发布的教程链接中的清单1中。
以下是您的FSM可能与您的特定情况相似的示例: