0

我一直在看线程:语音检测(http://mobileorchard.com/tutorial-detecting-when-a-user-blows-into-the-mic/)。

但是,我希望通过以下变体来实现类似的东西。

在该levelTimer示例中,每 0.03 秒连续触发一次。我基本上需要围绕这个包装另一个计时器,以便语音检查过程只运行(比如说)10秒。

我发现有类似的东西:

outerTimer = [NSTimer scheduledTimerWithTimeInterval:10.0
                                              target:self
                                            selector:@selector(outerTimerFinished:)
                                            userInfo:nil
                                             repeats:NO];

levelTimer = [NSTimer scheduledTimerWithTimeInterval:0.03
                                              target:self
                                            selector:@selector(listenForSounds:)
                                            userInfo:nil
                                             repeats:YES];

outerTimerFinished方法调用[levelTimer invalidate]不起作用的地方 - 可能是由于线程阻塞?

那么有人可以帮我确定 levelTimer 的工作方式,但仅限于特定的时间吗?

谢谢。

4

1 回答 1

0

在 listenForSounds: 方法中放置一个计数器,并在每次调用该方法时递增它。如果您想运行 levelTimer 10 秒,请检查计数器何时 > 333,然后使计时器无效。

于 2013-07-17T23:16:21.397 回答