2010-04-11 24 views
5

我發現這個tutorial,它很好,但對我不起作用!檢測麥克風一擊並做點什麼

這裏是代碼:

- (void)listenForBlow:(NSTimer *)timer { 
    [recorder updateMeters]; 

    const double ALPHA = 0.05; 
    double peakPowerForChannel = pow(10, (0.05 * [recorder peakPowerForChannel:0])); 
    lowPassResults = ALPHA * peakPowerForChannel + (1.0 - ALPHA) * lowPassResults; 

    if (lowPassResults > 0.95) 
     NSLog(@"Mic blow detected"); 
//change the background color e.g ! 
} 
控制檯

告訴我的NSLog reseult像這樣(沒有任何保齡球!):

2010-04-11 23:32:27.935 MicBlow[2358:207] Mic blow detected 
2010-04-11 23:32:27.965 MicBlow[2358:207] Mic blow detected 
2010-04-11 23:32:27.995 MicBlow[2358:207] Mic blow detected 
2010-04-11 23:32:28.026 MicBlow[2358:207] Mic blow detected 
2010-04-11 23:32:28.055 MicBlow[2358:207] Mic blow detected 
2010-04-11 23:32:28.086 MicBlow[2358:207] Mic blow detected 
2010-04-11 23:32:28.115 MicBlow[2358:207] Mic blow detected 
2010-04-11 23:32:28.145 MicBlow[2358:207] Mic blow detected 
2010-04-11 23:32:28.175 MicBlow[2358:207] Mic blow detected 
2010-04-11 23:32:28.205 MicBlow[2358:207] Mic blow detected 
2010-04-11 23:32:28.236 MicBlow[2358:207] Mic blow detected 

我改變這個值:

if (lowPassResults < 0.95) 

if (lowPassResults > 0.95) 

所以它似乎工作!但不改變任何東西,再次如果我把背景更改代碼,我的代碼更改背景,但沒有任何保齡球! 有什麼問題?

+2

「再次如果我把背景更改代碼,我的代碼更改背景,但沒有任何保齡球」這沒有任何意義。 – Timmmm 2010-04-11 20:04:09

+0

它在模擬器中工作,但不在電話工作?有沒有任何設置要做? – slaveCoder 2014-01-28 08:52:02

+0

@zoul Momi任何想法 – slaveCoder 2014-01-28 09:00:07

回答

3

我也在使用它,它適用於我。您只需使用該值與lowPassResults進行比較即可。這是我的代碼:

 
- (void)levelTimerCallback:(NSTimer *)timer { 
    [recorder updateMeters]; 

    const double ALPHA = 0.05; 
    double peakPowerForChannel = pow(10, (0.05 * [recorder peakPowerForChannel:0])); 
    lowPassResults = ALPHA * peakPowerForChannel + (1.0 - ALPHA) * lowPassResults; 
    //NSLog(@"%f", lowPassResults); 
    if (lowPassResults > 0.55) 
     NSLog(@"Mic blow detected"); 
} 
+0

沒有它的不工作@版。請你指導我。同樣的問題即將到來。不吹它改變bg顏色 – 2014-05-15 07:58:28