0

私はスレッド re: voice detection ( 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 に答える