如何检查峰值功率持续时间

时间:2012-02-12 14:09:27

标签: iphone ios xcode core-audio

想知道是否有功能检查我是否达到峰值功率一定时间然后做某事。

伪代码

最大阈值-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];
    }

1 个答案:

答案 0 :(得分:2)

我怀疑你会找到一个现成的功能,你会在这里做你所要求的。一个简单的finite state machine(FSM)似乎非常适合解决方案。如果您还不熟悉FSM,请查看此tutorial

您可以使用enum和switch语句实现简单的FSM,如here所示,或者在我上面发布的教程链接中的清单1中。

以下是您的FSM可能与您的特定情况相似的示例:

State Chart